স্কেল সার্ভার ব্যবহার করে ডেটা ক্যাপচারটি প্রায়শই পরিবর্তিত স্কিমার সাহায্যে


10

আমরা যে নতুন সাবসিস্টেমটি তৈরি করছি তার জন্য আমরা এসকিএল সার্ভার চেঞ্জ ডেটা ক্যাপচার সক্ষম করার সন্ধান করছি।

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

আমরা একটি চটপট বিকাশ প্রক্রিয়া অনুসরণ করছি, যার অর্থ এই ক্ষেত্রে আমরা প্রায়শই ডাটাবেস স্কিমাতে পরিবর্তন করি, যেমন নতুন কলাম যুক্ত করা, অন্যান্য কলামে ডেটা সরিয়ে নেওয়া ইত্যাদি that

আমরা একটি ছোট পরীক্ষা করেছি যেখানে আমরা একটি টেবিল তৈরি করেছি, সেই টেবিলটির জন্য সিডিসি সক্ষম করেছি এবং তারপরে টেবিলে একটি নতুন কলাম যুক্ত করেছি। নতুন কলামে পরিবর্তনগুলি সিডিসি সারণিতে নিবন্ধভুক্ত নয়।

নতুন স্কিমাতে সিডিসি টেবিল আপডেট করার কোনও ব্যবস্থা আছে এবং ডাটাবেস স্কিমা স্থানান্তরিত করার সময় আপনি কীভাবে নেওয়া ডেটা ব্যবহার করবেন সে সম্পর্কে কোনও সেরা অনুশীলন রয়েছে?


আপনি এই প্রশ্নটি dba.stackex
بدل.

2
@ টিমজি মাল্টিপোস্টিং একটি প্রশ্নকে নিরুৎসাহিত করা হয়েছে, মাইগ্রেশন একটি বিকল্প হবে - তবে এতে অনুগ্রহ রয়েছে এবং অনুদান সক্রিয় থাকাকালীন স্থানান্তরিত হতে পারে না। এটি বলেছিল, প্রশ্ন এবং এর অনুগ্রহের বিষয়টি ডিবিএএসই চ্যাট রুমে উল্লেখ করা হয়েছে এবং কিছুটা দৃষ্টি আকর্ষণ করেছে।

উত্তর:


5

আমরা সম্প্রতি সিডিসির দিকে তাকাতেও শুরু করেছি। আমি এই বিষয়ে বিশেষজ্ঞ নই, তবে আমি মনে করি আপনার প্রশ্নগুলির জন্য আমার কিছু উত্তর আছে।

বেশিরভাগ ক্ষেত্রে, সিডিসি আপনাকে পুরোপুরি অন্বেষণযোগ্য ইতিহাসের লক্ষ্য অর্জনে সহায়তা করবে , তবে আমি মনে করি না যে এটি আপনাকে সেখানে সমস্তরূপে পেয়ে যাবে।

প্রথম বন্ধ:

আমরা প্রায়শই ডাটাবেস স্কিমাতে পরিবর্তন করি ... নতুন স্কিমাতে সিডিসি টেবিলটি আপডেট করার কোনও ব্যবস্থা আছে কি?

এবং এখানেই আমার ধারণা সিডিসি আপনাকে ব্যর্থ করবে। MSDN ডকুমেন্টেশন অধ্যায় "ট্র্যাকিং ওভারহেড পরিবর্তন বোঝা" এর অধীনে যে এটা আপনার জন্য স্কিমা পরিবর্তন ট্র্যাক করা হবে না প্রশংসনীয় স্পষ্ট। উদাহরণস্বরূপ, এর সাথে Alter Table Add Column:

পরিবর্তিত ট্র্যাক টেবিলটিতে একটি নতুন কলাম যুক্ত করা থাকলে, কলামটির সংযোজন ট্র্যাক করা হবে না। শুধুমাত্র নতুন কলামে করা আপডেট এবং পরিবর্তনগুলি ট্র্যাক করা হয়।

Drop Column একটু বেশি জটিল।

তবে আপনার স্কিমা পরিবর্তন করতে আপনার ডিবি স্ক্রিপ্টগুলি ব্যবহার করা উচিত যাতে আপনাকে অগত্যা সিডিসির উপর নির্ভর করতে হবে না। এটি আপনাকে আপনার QA এবং প্রোডাকশন স্কিমার মধ্যে ধারাবাহিকতা রাখতে দেয়। এবং QA এ পরিবর্তনটি স্ক্রিপ্ট দ্বারা সম্পাদন করা উচিত যাতে সঠিক একই পরিবর্তনগুলি Prod এ প্রয়োগ করা যেতে পারে। এই স্ক্রিপ্টগুলি থেকে স্কিমা পরিবর্তনগুলি বের করা খুব বেশি কঠিন হওয়া উচিত নয়। এর অর্থ হতে পারে যে আপনার ইতিহাসের "সময়" মাত্রাটি প্রকৃত সময়ের পরিবর্তে সংস্করণ দ্বারা চালিত হবে তবে শেষ ফলাফলটি একই হবে।

আপনার যদি ইতিমধ্যে না থাকে তবে আপনার ডাটাবেস স্কিমার সংস্করণটি ট্র্যাক করতে একটি টেবিল তৈরি করুন। এবং তারপরে সেই ডাটাবেস স্কিমা সংস্করণ টেবিলটি সিডিসির অধীনে রাখুন যাতে আপনি কোনও নির্দিষ্ট টেবিলের মধ্যে মাইক্রোস্কোপিক পরিবর্তনের বিরুদ্ধে স্কিমায় ম্যাক্রোস্কোপিক পরিবর্তনগুলি সারিবদ্ধ করতে পারেন।

আমার বোঝার জন্য, আপনার এখনও সিডিসি স্কিমার পরিবর্তন না দেখিয়ে নতুন কলাম (গুলি) এ যুক্ত হওয়া ডেটা দেখতে হবে seeing এবং টেবিল থেকে টেবিলের মধ্যে ডেটা মাইগ্রেশনটি সিডিসি দ্বারাও নেওয়া উচিত।

ডাটাবেস স্কিমা স্থানান্তরিত করার সময় আপনি কীভাবে ক্যাপ্ট করা ডেটা ব্যবহার করবেন সে সম্পর্কে কোনও সেরা অনুশীলন আছে?

এটির মতো আচরণ করুন যেমন আপনি কোনও নিরীক্ষণের ব্যবস্থা করেন। আপনি যা পরীক্ষা করছেন এটি কেন, আপনি এটি কেন পরীক্ষা করছেন এবং আপনাকে কতক্ষণ এই তথ্যটি বজায় রাখতে হবে তা বুঝতে হবে। যখন এই জাতীয় কোনও কাজের কথা আসে তখন ব্যাপ্তি এবং ধরে রাখা দুটি বৃহত্তম বাগবাবু g

সিডিসির রিপোর্টিং সরঞ্জামগুলি বোধগম্যভাবে কঠোর, তাই আপনাকে পরিবর্তনের প্রসঙ্গটি জানতে হবে। " সবকিছু ট্র্যাক করুন" বলা খুব সহজ ! এবং ফলস্বরূপ ব্যবহারযোগ্য এমন কোনও কিছু না শেষ করুন। তেমনি, আপনি প্রতিটি পরিবর্তনের অনুলিপি রেখে আপনার ডাটাবেসের আকার দ্বিগুণ করতে পারেন। অনেকগুলি সন্নিবেশ এবং মোছা সহ একটি উচ্চ মন্থর টেবিলের উপরে, আপনি জ্যোতির্বিদ্যার বৃদ্ধিটি শেষ করবেন। এটি নিজের মধ্যে এবং নিজেই খারাপ নয়, তবে আপনাকে সেই বৃদ্ধির জন্য বাজেট করতে হবে এবং উত্পন্ন সমস্ত ডেটা পরীক্ষা করার উপায় থাকতে হবে।

সুতরাং আপনাকে কেন সম্পূর্ণ ট্রেসিবিলিটি হওয়ার জন্য চাপ দেওয়া হচ্ছে তা বুঝতে আপনাকে ফিরে পেয়েছে। অবশ্যই এই প্রয়োজনীয়তার বৈধ কারণ রয়েছে। আপনি প্রয়োজনীয়তা কেন পূরণ করতে হবে তা না জানা আপনি আপনার ডাটাবেসটির কার্যকর অডিটিং গঠনের জন্য সক্ষম হবেন না।


1

আপনি ডিডিএল ট্রিগারগুলির সাথে কলামগুলি সংযোজন করতে পারবেন able

CREATE TRIGGER trigger_name
ON { ALL SERVER | DATABASE }
[ WITH <ddl_trigger_option> [ ,...n ] ]
{ FOR | AFTER } { event_type | event_group } [ ,...n ]
AS { sql_statement [ ; ] [ ,...n ] |
EXTERNAL NAME < method specifier > [ ; ] }

আপনি ইভেন্টের গ্রুপ DDL_TABLE_EVENTS টি ব্যবহারের জন্য CREATE, DROP, বা কোনও টেবিলের বিকল্পের জন্য গুলি ব্যবহার করতে পারেন।

তবে আপনি এসকিউএল সার্ভার নিরীক্ষণটি একবার দেখে নিতে চাইতে পারেন, আপনি যদি এন্টারপ্রাইজ> ২০০৮ ব্যবহার করছেন তবে এটি "নিরীক্ষণের বিশদটিতে সমস্ত নিরীক্ষণ ক্ষমতা একত্রিত করতে পারে" can এই এমএসডিএন লিঙ্কটি সম্পর্কে একটি বিশদ নিবন্ধ রয়েছে: http://msdn.microsoft.com/en-us/library/dd392015(v=sql.100).aspx

CREATE SERVER AUDIT audit_name
TO { [ FILE (<file_options> [, ...n]) ] |
APPLICATION_LOG | SECURITY_LOG }
[ WITH ( <audit_options> [, ...n] ) ] }[ ; ]

<file_options>::=
{FILEPATH = 'os_file_path'
[, MAXSIZE = { max_size { MB | GB | TB } | UNLIMITED } ]
[, MAX_ROLLOVER_FILES = integer ]
[, RESERVE_DISK_SPACE = { ON | OFF } ] }

<audit_options>::=
{ [ QUEUE_DELAY = integer ]
[, ON_FAILURE = { CONTINUE | SHUTDOWN } ]
[, AUDIT_GUID = uniqueidentifier ]}

তারপরে আপনি সার্ভার বা ডেটাবেস স্পেসিফিকেশন তৈরি করুন।


0

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

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