দ্বিমুখী ডেটা সিঙ্ক্রোনাইজেশনের জন্য সেরা অনুশীলন / প্যাটার্নগুলি


52

আমার কাজ প্রায়শই ডাটাবেস সিস্টেম ফসলের মধ্যে দ্বি-উপাত্ত ডেটা সিঙ্ক্রোনাইজেশনের ধারণা। ক্লাসিক উদাহরণটি হ'ল দুটি সামান্য আলাদা সিআরএম সিস্টেম (বলুন, রাইজারের এজ এবং সেলসফোর্স) এবং তাদের মধ্যে যোগাযোগের ডেটার দ্বি-দ্বি সমন্বয় প্রয়োজন।

আপনার সিঙ্কের জন্য একটি ভাগ করা কী আছে এবং ধরে নেবেন এবং অ্যালগরিদম / প্যাটার্নটি নিযুক্ত করার জন্য নিখুঁতভাবে ভাবছেন তা ধরে নিয়ে এপিআই বিবেচনাগুলি একদিকে রাখুন, এটি এমন একটি কাজ যা প্রায়শই নন-টেকিজ দ্বারা অবমূল্যায়ন করা হয়।

উদাহরণস্বরূপ, আপনাকে এগুলি সন্ধান করতে হবে:

  • উভয় সিস্টেমে কোন রেকর্ডগুলি পরিবর্তিত হয়েছে তা আপনি সহজেই সনাক্ত করতে পারেন (বা পরিবর্তনগুলি সনাক্ত করতে আপনাকে সিস্টেমের মধ্যে সমস্ত রেকর্ডের তুলনা করতে হবে)
  • আপনি যদি একবার-এন-ঘন্টা সিঙ্কের জন্য যাচ্ছেন, তবে দ্বন্দ্বগুলির সাথে কীভাবে व्यवहार করবেন যেখানে উভয় সিস্টেমে একইরকম রেকর্ড কম-বেশি-একই সময়ে পরিবর্তিত হয়
  • আপনি যদি রিয়েল-টাইম সিঙ্কের জন্য যাচ্ছেন (তেমনি একটি সিস্টেমে আপডেট অন্য সিস্টেমে তাত্ক্ষণিকভাবে একটি ট্রিগার ট্রিগার করে) কীভাবে বাগ এবং সিস্টেম ক্র্যাশের কারণে সময়ের সাথে ডাইভারজেন্স পরিচালনা করতে হয়

ব্যক্তিগতভাবে আমি এই সমস্তগুলি মোকাবিলার উপায়গুলি সম্পর্কে ভাবতে পারি তবে আমি ভাবছি যে কোনও উল্লেখযোগ্য নিদর্শন, সাহিত্য বা সর্বোত্তম অনুশীলন রয়েছে যা আমি উল্লেখ করতে পারি are


আপনি যা বর্ণনা করেছেন তা ফেডারেটেড ডাটাবেস সিস্টেমের খুব কাছাকাছি মনে হচ্ছে - এটি কি সঠিক?
gnat

@ গ্যাनेट: লিঙ্কটির জন্য ধন্যবাদ, উদ্বেগগুলির মধ্যে কয়েকটি একইরকম (যেমন ভিন্ন ভিন্নতার মোকাবেলা করা), তবে আমি দুটি স্বায়ত্তশাসিত ডাটাবেস থেকে ডেটা একটি উপসেট সিঙ্ক করার কথা বলছি যেখানে এটি সমস্ত কিছুর সম্পূর্ণ সংহত দৃষ্টিভঙ্গি তৈরি করার বিষয়ে আরও বেশি বলে মনে হচ্ছে একাধিক ডিবিএস জুড়ে
কোডুলিকে

1
Years বছর পরে, ৫০ টি আপভোট কিন্তু কেবল 1 টি শালীন উত্তর। সেখানে কিছু সিঙ্ক্রোনাইজেশন নিদর্শন বা সেরা অনুশীলন অবশ্যই থাকতে হবে?
কোডুলিকে

উত্তর:


8

হ্যাঁ, একটি কঠিন সমস্যা, সহজেই হ্রাস করা হবে না। এবং অনেক কাজ হতে পারে। আপনি যদি মাইক্রোসফ্ট প্রযুক্তিগুলিতে থাকেন তবে আপনি মাইক্রোসফ্ট সিঙ্ক ফ্রেমওয়ার্কটি এখানে এবং এখানে দেখতে পারেন


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

2
মাইক্রোসফ্ট সিঙ্ক ফ্রেমওয়ার্কটি মাইক্রোসফ্ট সিঙ্ক ফ্রেমওয়ার্ক টুলকিট দ্বারা প্রতিস্থাপন করা হয়েছিল।
টমাস কুবেস

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

0

রিমোট সাইট ডিবি সিঙ্ক্রোনাইজেশন সম্পর্কে অনেক তত্ত্ব রয়েছে। প্রথমে INSERT দিয়ে শুরু করুন। এটি হ্যান্ডেল করা সহজ - যেহেতু আপনি প্রতিটি সাইটের জন্য একটি অনন্য আইডি তৈরি করতে পারেন (উদাহরণস্বরূপ সাইটের নাম + আইডি (নম্বর) এর একটি প্রাথমিক: সাইট_এ_177 বনাম সাইট_ বি_53)

সুতরাং সন্নিবেশ কোনও বিরোধ না তৈরি করা উচিত। সমস্যাটি হচ্ছে আপডেট। আমি বিশ্বাস করি না যে 100% ব্যর্থতার প্রমাণ পদ্ধতি আছে, তবে আপনি দূরবর্তী ডিবিতে রেকর্ডটি "লক" করে একটি আপডেট শুরু করতে পারেন এবং আপনি হ্যান্ডেলটি পেয়ে গেলেই - আপডেটটি চালিয়ে যান, এবং আপডেটটি সিঙ্ক করে শেষ করুন এবং কেবল তখনই লকটি ছেড়ে দিন।


1
ধন্যবাদ, আমি মনে করি আপনি একই স্কিমার সাথে বিতরণ করা ডিবিএস এবং বিতরণ লেনদেনের সাথে কথা বলার বিষয়ে কথা বলছেন। আমি আরও এমন পরিস্থিতিতে নিয়ে ভাবছি যেখানে দুটি ডিবি সম্পূর্ণ স্বায়ত্তশাসিত (যেমন তারা সম্পূর্ণ ভিন্ন উপায়ে অনন্য আইডি দেয় এবং স্কিমার পার্থক্য থাকে) তবে আপনি তাদের মধ্যে ডেটা একটি উপসেট সিঙ্ক করতে চান।
কোডুলিকে

মনে হচ্ছে কোনও দ্বন্দ্ব হওয়া উচিত নয়। সেক্ষেত্রে এটি খুব সহজ হওয়া উচিত - প্রতিটি টেবিলের জন্য সিঙ্ক হওয়া "শেষ রেকর্ড-আইডি" সংরক্ষণ করুন এবং সেখান থেকে চালিয়ে যান।
আলফাসিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.