ইতিহাস ট্র্যাক করতে সিডিসি কখন ব্যবহার করবেন?


26

এসকিউএল সার্ভার চেঞ্জ ডেটা ক্যাপচার এমন একটি বৈশিষ্ট্য যা এসকিউএল সার্ভার লেনদেনের লগগুলি থেকে historicalতিহাসিক ডেটা পড়ে এবং এগুলি একটি বিশেষ সারণীতে সঞ্চয় করে।

বিশেষ টেবিল মান ফাংশন (টিভিএফ) ব্যবহারের মাধ্যমে এটি ব্যবহারকারীকে এই ডেটাটি জিজ্ঞাসা করতে দেয়, নির্দিষ্ট টেবিলে সমস্ত পরিবর্তনগুলি পাওয়া সম্ভব হয় বা নির্দিষ্ট সময়ের মধ্যে পরিবর্তনের ফলে কেবল নেট পরিবর্তন হয়।

সিডিসির কিছু সুবিধা রয়েছে

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

এর কিছু অসুবিধাও রয়েছে:

আমি সিডিসি সম্পর্কে বেশ কিছু পড়েছি এবং আমি এখন এটি কীভাবে ব্যবহার করতে হয় তা জানার পরেও এখনও নিশ্চিত নই যে এটি আমার পক্ষে সঠিক সরঞ্জাম কিনা।

  1. কোন কাজ / পরিস্থিতিগুলির জন্য সিডিসি সঠিক সরঞ্জাম? (উদাহরণস্বরূপ, ব্যবহারকারীদের কোনও নির্দিষ্ট সময়ে কোনও ডেটা অবজেক্টটিকে পুনরুদ্ধার করতে দেওয়া? অডিটিং? ডেটার সম্পূর্ণ ইতিহাস দেখাচ্ছে?)
  2. আপনি কখন সিডিসি ব্যবহার করবেন না, তবে একটি কাস্টম ট্রিগার-ভিত্তিক সমাধানটি অবলম্বন করবেন?
  3. কোনও অপারেশনাল ডাটাবেসে সিডিসি ব্যবহার করা এবং কোনও অপারেশনাল অ্যাপ্লিকেশনের মধ্যে সিডিসি ডেটা ব্যবহার করা কি ঠিক হবে? (যেমন শেষ ব্যবহারকারীর কাছে এটি দেখানো) বা এটি স্পষ্টতই এই বৈশিষ্ট্যের অপব্যবহার করছে?

আমি সাধারণত শুনি যে সিডিসি একটি নিরীক্ষণ সরঞ্জাম, তবে এসকিউএল সার্ভার অডিট কীসের জন্য নয়? তারা কি একই কাজের জন্য আলাদা আলাদা সরঞ্জাম? অথবা সিডিসি কি অন্য কিছুর জন্য ব্যবহার করা যায়?

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

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


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

@ jpmc26, এই ধরণের প্রশ্নটি স্থির করে প্রতিটি প্রকল্পের ব্যয় সময় বন্ধ করার জন্য কাঠামোর প্রয়োজন হতে পারে।
আয়ান রিংরোজ

@ ইয়ানআরিংরোজ আমার বক্তব্যটি হ'ল দীর্ঘমেয়াদে কোনও প্রকল্পের সুনির্দিষ্ট প্রয়োজন বিবেচনা না করে সিদ্ধান্ত নেওয়ার চেষ্টা করা তার সমাধানের চেয়ে আরও বেশি সমস্যার সৃষ্টি করবে (এবং আসলে এটি সময় ব্যয় করার চেয়ে ব্যয়বহুল হবে)। এই যে একটি সিদ্ধান্ত না পারেন, কার্যকরভাবে একটি সাধারণ ক্ষেত্রে তৈরি করা। প্রকল্পের নির্দিষ্টকরণগুলি অবশ্যই বিবেচনা করা উচিত। একটি কম্বল সিদ্ধান্ত ব্যবহার করে, সময়টি নির্বাচিত সমাধানটি ব্যবহার করে এবং কেবলমাত্র অনুমানগুলি লঙ্ঘন করার জন্য এটির পক্ষে উপযুক্ত সমাধান নয় বলে আবিষ্কার করা হলে অনুমান করা যায়। তারপরে সিস্টেমটি নতুন করে তৈরি করা দরকার।
jpmc26

1
@ jpmc26 আমি আপনাকে প্রস্তাবিত সমাধানটি সহকারে নিতে পারি, যদি আমি এটির সমাধানের কোনও উপায় খুঁজে পাই: ট্রিগার-ভিত্তিক এবং সিডিসি ভিত্তিক ইতিহাস ট্র্যাকিং, পরিবর্তনযোগ্য এবং একটি সাধারণ ইন্টারফেসের পিছনে উভয়ই বিকাশ করা। অ্যাপ্লিকেশনগুলি তাদের প্রয়োজনীয়তার উপর নির্ভর করে এক বা অন্যটিকে বেছে নিতে পারে, তবে এগুলি নিজে প্রয়োগ করার বিষয়ে চিন্তা করার দরকার নেই। অবশ্যই আমি এখনও আমার উপরের প্রশ্নের একটি ভাল উত্তর পেতে চাই, কারণ সিডিসি যদি যাইহোক এই ধরণের কাজের জন্য বাইরে না আনা হয় (উদাহরণস্বরূপ এটি নিরীক্ষণের জন্য কেবল কোনও ভাল) তবে আমি নিজের সমস্যাটি বাঁচাতে পারি এবং সর্বদা ট্রিগারগুলি ব্যবহার করি ।
চৌম্বকীয়

"যদি এজেন্ট চলমান না থাকে বা ক্র্যাশ হয় তবে কোনও ইতিহাস ট্র্যাক করা হচ্ছে না" - তবে যদি এটি পুনরায় চালু করা হয় তবে কোনও পরিবর্তন হারাতে হবে না, তাই না?
অ্যান্ডি জোয়ারার

উত্তর:


12

প্রথমত,

পরিবর্তন ডেটা ক্যাপচারটি কেবলমাত্র এসকিউএল সার্ভারের এন্টারপ্রাইজ, বিকাশকারী এবং মূল্যায়ন সংস্করণগুলিতে উপলভ্য।

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

ট্রিগারগুলির মতো এটি বাস্তব সময় নয়, এটি উভয়ই একটি সুবিধা এবং অসুবিধা। ট্রিগার ব্যবহার করা সর্বদা একটি আপডেটকে ধীর করে দেয়।

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

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


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

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

@ অ্যাটিকা, আপনার কাঠামোটি ডাটাবেসের মধ্যে সীমাবদ্ধ থাকতে হবে না, এতে ডাটাবেসের বাইরে চলে এমন কোড অন্তর্ভুক্ত থাকতে পারে।
আয়ান রিংরোজ

এটি অবশ্যই ডাটাবেসের মধ্যে সীমাবদ্ধ নয়। (আমি এ ক্ষেত্রে এটিকে একটি কাঠামো বলব না)) আমি এখন "অ্যাপ্লিকেশন স্তর" দ্বারা আপনি কী বোঝাতে চাইছেন এবং আমি বর্তমানে টেম্পোরাল প্রপার্টি প্যাটার্নের তারতম্যটি ব্যবহার করছি যা আপনার লিঙ্কটি আলোচনা করে। আমি যে ফ্রেমওয়ার্কটি তৈরি করি তা অ্যাপ্লিকেশনগুলিকে ব্যবহার করে যা এই ইন্টারফেসটি সরবরাহ করে। তবুও, এটি ইন্টারফেসের অংশ, এবং এর কিছুই আমার উপরে উল্লিখিত আমার প্রশ্নের উত্তর দেয় না।
চৌম্বকীয়

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

12

এখানে একটি খুব ভাল লিখিত 9 টি অংশ সিরিজ রয়েছে যা এসকিউএল সার্ভারের ডেটা পরিবর্তনের নিরীক্ষণের বিভিন্ন উপায়ে পর্যালোচনা করে। 3, 4 এবং 5 অংশ সিডিসিতে ফোকাস করে। এটি সমস্ত নিবন্ধের পড়ার পক্ষে মূল্যবান কারণ এটি আপনার প্রশ্নের উত্তর দেবে, বিভিন্ন বৈশিষ্ট্যের মতো যেখানে বৈশিষ্ট্যগুলি উপযুক্ত এবং ওভারহেড হবে। http://solutioncenter.apexsql.com/tag/methods-for-auditing-sql-server


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

9

কোন কাজ / পরিস্থিতিগুলির জন্য সিডিসি সঠিক সরঞ্জাম? (উদাহরণস্বরূপ, ব্যবহারকারীদের কোনও নির্দিষ্ট সময়ে কোনও ডেটা অবজেক্টটি পুনরুদ্ধার করতে দিচ্ছেন?

হতে পারে, এটি নির্ভর করে।

অডিটিং?

হ্যাঁ।

ডেটার সম্পূর্ণ ইতিহাস দেখাচ্ছে?)

হ্যাঁ।

আপনি কখন সিডিসি ব্যবহার করবেন না, তবে একটি কাস্টম ট্রিগার-ভিত্তিক সমাধানটি অবলম্বন করবেন?

যখন পরিবর্তন সারণীতে থাকা ডেটা আপনার প্রয়োজনীয়তা পূরণ করে না।

কোনও অপারেশনাল ডাটাবেসে সিডিসি ব্যবহার করা এবং কোনও অপারেশনাল অ্যাপ্লিকেশনের মধ্যে সিডিসি ডেটা ব্যবহার করা কি ঠিক হবে? (যেমন শেষ ব্যবহারকারীর কাছে এটি দেখানো)

হ্যাঁ।

বা এটি স্পষ্টতই এই বৈশিষ্ট্যটির অপব্যবহার?

না, এটি এই বৈশিষ্ট্যটির অপব্যবহার নয়।

আমি সাধারণত শুনি যে সিডিসি একটি নিরীক্ষণ সরঞ্জাম, তবে এসকিউএল সার্ভার অডিট কী তা নয়?

হ্যাঁ।

তারা কি একই কাজের জন্য আলাদা আলাদা সরঞ্জাম?

না।

অথবা সিডিসি কি অন্য কিছুর জন্য ব্যবহার করা যায়?

সিডিসি অন্যান্য জিনিসের জন্য ব্যবহার করা যেতে পারে।

চেঞ্জ ট্র্যাকিং রয়েছে এবং সেখানে চেঞ্জ ডেটা ক্যাপচার রয়েছে। উভয়েরই প্রতিরূপে তাদের শিকড় রয়েছে।

চেঞ্জ ট্র্যাকিং কোনও টেবিলে নেট পরিবর্তনগুলি সরবরাহ করার একটি উপায় সরবরাহ করে। ব্যবহারের একটি উদাহরণ হ্যান্ড হোল্ডড ডিভাইস সিঙ্ক হবে।

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


2

সংশোধনের একটি বিন্দু। একসময়, পরিবর্তন ডেটা ক্যাপচার কেবল উপরের তালিকাভুক্ত সংস্করণগুলিতেই উপলভ্য ছিল। যাইহোক, পরিবর্তন ডেটা ক্যাপচার 2016 এসপি 1 হিসাবে স্ট্যান্ডার্ড সংস্করণে পাওয়া যায়। সুতরাং, ২০১০ এসপি 1 এর আগে লেখা অনেকগুলি নিবন্ধগুলি এটিকে শোনায় যেন স্ট্যান্ডার্ড সংস্করণ ব্যবহার করে আমাদের মধ্যে সিডিসির নাগালের বাইরে। এই এখন আর তা নেই। মাইক্রোসফ্ট ডক সিডিসির উপলভ্যরেখার নীচের লিঙ্কে রয়েছে।

https://docs.microsoft.com/en-us/sql/sql-server/editions-and-components-of-sql-server-2016?view=sql-server-2017#DW

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