প্রতিবার যখনই একটি নতুন ডাটাবেস ডিজাইন করার দরকার আছে তখন পরিবর্তনের একটি অডিট লগ রাখতে আমার কীভাবে ডাটাবেস স্কিমা সেটআপ করা উচিত তা ভেবে বেশ কিছুটা সময় ব্যয় করি।
এই সম্পর্কে এখানে ইতিমধ্যে কিছু প্রশ্ন জিজ্ঞাসা করা হয়েছে, তবে আমি সম্মত হই না যে সমস্ত পরিস্থিতিতে একক জন্য সর্বোত্তম পদ্ধতির রয়েছে:
- রিভিশনগুলির জন্য ডেটাবেস ডিজাইন
- পরিবর্তন লগ অডিটিং ডাটাবেস সারণীর জন্য সেরা নকশা
- অডিট ট্রেইল ক্যাপচারের জন্য ডাটাবেস ডিজাইনের আইডিয়া
লগের ডেটাবেস পরিবর্তন রক্ষণ সম্পর্কে এই আকর্ষণীয় নিবন্ধটিও আমি হোঁচট খেয়েছি যা প্রতিটি পদ্ধতির প্রো ও কনসকে তালিকাভুক্ত করার চেষ্টা করে। এটি খুব ভাল লেখা এবং আকর্ষণীয় তথ্য রয়েছে তবে এটি আমার সিদ্ধান্তগুলি আরও শক্ত করে তুলেছে।
আমার প্রশ্নটি হ'ল: এমন কোনও রেফারেন্স যা আমি ব্যবহার করতে পারি, সম্ভবত কোনও বই বা সিদ্ধান্ত গাছের মতো কিছু যা আমি কিছু ইনপুট ভেরিয়েবলের ভিত্তিতে কোন পথে যেতে হবে তা ঠিক করার জন্য উল্লেখ করতে পারি:
- ডাটাবেস স্কিমাটির পরিপক্কতা
- লগগুলি কীভাবে অনুসন্ধান করা হবে
- সম্ভাব্যতা এটি রেকর্ড পুনরায় তৈরি করা প্রয়োজন হবে
- আরও গুরুত্বপূর্ণ কী: লিখুন বা পড়ুন পারফরম্যান্স
- লগ করা হচ্ছে এমন মানগুলির প্রকৃতি (স্ট্রিং, সংখ্যা, ব্লব)
- সঞ্চয় স্থান উপলব্ধ
যে পদ্ধতিগুলি আমি জানি সেগুলি হ'ল:
1. তৈরি এবং পরিবর্তিত তারিখ এবং ব্যবহারকারীর জন্য কলাম যুক্ত করুন
সারণীর উদাহরণ:
- আইডি
- মান_1
- মান_2
- value_3
- তৈরীর তারিখ
- পরিবর্তিত তারিখ
- দ্বারা সৃষ্টি
- modified_by
মেজর কনস: আমরা পরিবর্তনগুলির ইতিহাস হারিয়েছি। কমিট করার পরে রোলব্যাক করতে পারবেন না।
2. কেবল সারণী সন্নিবেশ করান
- আইডি
- মান_1
- মান_2
- value_3
- থেকে
- প্রতি
- মুছে ফেলা (বুলিয়ান)
- ব্যবহারকারী
মেজর কনস: বিদেশী কীগুলি আপ টু ডেট রাখবেন? বিশাল জায়গা দরকার
৩. প্রতিটি টেবিলের জন্য পৃথক ইতিহাসের টেবিল তৈরি করুন
ইতিহাসের সারণির উদাহরণ:
- আইডি
- মান_1
- মান_2
- value_3
- value_4
- ব্যবহারকারী
- মুছে ফেলা (বুলিয়ান)
- টাইমস্ট্যাম্প
প্রধান কনস: সমস্ত নিরীক্ষিত টেবিলগুলি নকল করা দরকার। যদি স্কিমা পরিবর্তন হয় তবে এটি সমস্ত লগগুলিকেও স্থানান্তরিত করতে হবে।
৪. সমস্ত টেবিলের জন্য একীভূত ইতিহাসের সারণী তৈরি করুন
ইতিহাসের সারণির উদাহরণ:
- TABLE_NAME
- ক্ষেত্র
- ব্যবহারকারী
- NEW_VALUE
- মুছে ফেলা (বুলিয়ান)
- টাইমস্ট্যাম্প
প্রধান কনস: সহজে প্রয়োজন হলে আমি কি রেকর্ডগুলি (রোলব্যাক) পুনরায় তৈরি করতে সক্ষম হব? নতুন_মূল্য কলামটি একটি বিশাল স্ট্রিং হওয়া দরকার যাতে এটি সমস্ত বিভিন্ন কলামের প্রকারকে সমর্থন করতে পারে।