লগ টেবিলটি একটি আইডি ক্ষেত্র বা প্রাথমিক কী পাওয়া উচিত?


12

আমার কাছে একটি লগ টেবিল রয়েছে যা নির্দিষ্ট ফাইলগুলি অন্য সিস্টেমে রফতানি করা হয়েছিল তার ডেটটাইম স্ট্যাম্প ক্যাপচার করে।

এক্সপোর্ট করা লগ টেবিলটিতে বর্তমানে তিনটি ক্ষেত্র রয়েছে:

id                (primary key)
messageId         (int)
exportedDateTime  (datetime)

এটি পর্যালোচনা করে আমি দেখতে পেলাম যে idক্ষেত্রটি কোনও উদ্দেশ্য করে না, কারণ এই টেবিলের সাথে যোগ দেয় না। এই টেবিলটিতে কেবলমাত্র কাজ করা ব্যাচ কাজের সন্নিবেশ যা বার্তাগুলি প্রসেস করে এবং এই লগ টেবিলটিতে সন্নিবেশ করায়।

আমার কি idমাঠ সরিয়ে ফেলা উচিত ?

আমি হয় একটি প্রাথমিক কী থাকা উচিত messageIdবা exportedDateTimeঅথবা উভয়?


2
এটি কোন ডিবিএমএসের জন্য?
ypercubeᵀᴹ

উত্তর:


10

আমি কি আইডি ফিল্ডটি সরাতে পারি?

আমি এটি রাখার সুপারিশ করব।

আপনার এখন ক্ষেত্রের প্রয়োজন হতে পারে না , তবে ভবিষ্যতে এটি আপনাকে সত্যই সহায়তা করতে পারে - প্রতিটি লগ এন্ট্রির জন্য যদি আপনার ফাইলগুলির বিশদ সংরক্ষণ করার দরকার হয় তবে কী হবে?

আমি জানি না এই টেবিলটি কত বড় পাবে এবং কত দ্রুত, তবে একটি বড় টেবিলের সাথে একটি কলাম যুক্ত করা একটি ব্যয়বহুল ক্রিয়াকলাপ। যদি টেবিলটি তুলনামূলকভাবে ছোট হয় তবে স্টোরেজ স্পেসের ক্ষেত্রে এটি রাখা কোনও বড় বিষয় নয়। আইএমও, কলামটি রাখুন এবং পরে একটি সম্ভাব্য মাথাব্যথা সংরক্ষণ করুন।

ম্যাসেজআইডি বা এক্সপোর্টডেটটাইম বা উভয়ই উভয়ের জন্য আমার একটি প্রাথমিক কী থাকা উচিত?

এটি messageIdএকা শোনা যাচ্ছে না যে এই টেবিলটিতে একা অনন্য হবে (যদিও আমি ভুল হতে পারি), এবং কেবলমাত্র একটি তারিখ / সময় কলামে স্বতন্ত্রতা তৈরি করা ডুপ্লিকেটগুলি তৈরি করতে পারে (এবং তাই ত্রুটিগুলি)। কেবলমাত্র বিকল্পটি একটি 2-কলাম কী, যা আমি উপরে উপস্থাপন করা দৃশ্যের প্রেক্ষিতে বিশেষভাবে আবেদনকারী নয়।


মূলত, এই উত্তরের আমার বক্তব্যটি হ'ল কলামটি রাখা কোনও বড় কথা নয় (আমি ধরে নিচ্ছি), তবে এটির পরে প্রয়োজন খুব বড় ব্যাপার হতে পারে এবং / অথবা এটি পিছনে রাখার জন্য অতিরিক্ত কাজ প্রয়োজন।


6
  • আপনি যদি এই টেবিলটিতে যোগদান না করেন, কোনও আপডেট নেই এবং কোনও মুছে ফেলা হয় না, তবে আপনার কীগুলির দরকার নেই।

  • যদি এটি না হয় এবং messageIdঅনন্য হয় তবে আপনি এটিকে একটি প্রাথমিক কী তৈরি করতে পারেন।

  • যদি এটি অনন্য নয়, তবে (messageId, exportedDateTime)হয় তবে এটি একটি সম্মিলিত প্রাথমিক কী তৈরি করুন।

  • এমনকি যদি (messageId, exportedDateTime)সংমিশ্রণটি সদৃশ এবং আপডেট দিতে পারে এবং মুছে ফেলার প্রয়োজন হতে পারে (দুর্ঘটনাক্রমে সন্নিবেশকৃত সারিগুলি সরিয়ে দিতে বলুন), আপনি idক্ষেত্রটি যেমনটি রেখেছিলেন তেমনই ভাল ।


0

একটি প্রাথমিক কী ক্ষতিগ্রস্থ হবে না ... আপনি লগ / নিরীক্ষণের ট্রেইলের উদ্দেশ্য বিবেচনা করলে ভবিষ্যতে কোনও সমস্যা সমাধানের জন্য বা ডেটা পুনরুদ্ধার করতে সম্ভবত এটি ব্যবহার করা হবে (অনুসন্ধান করা) এবং সম্ভবত অন্যটিতে যোগ দেওয়া হবে এই ধরণের কাজ সম্পাদনের জন্য বিদ্যমান অ-লগ / অডিট সারণী।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.