আমাকে দুটি বড় ডাটাবেসের মধ্যে ডেটা সিঙ্ক্রোনাইজেশন প্রয়োগ করতে হবে যার সম্পূর্ণ ভিন্ন কাঠামো রয়েছে। মূলত, আমার প্রথম ডাটাবেসে বিভিন্ন টেবিলের পণ্য সম্পর্কে কিছু তথ্য আঁকতে হবে এবং দ্বিতীয় ডাটাবেসে অন্যান্য টেবিলের জন্য তাদের পুনরায় ব্যবস্থা করতে হবে।
প্রথমবারে আমার পণ্যগুলি তৈরি করা খুব জটিল নয়। তবে আমি প্রতিটি পণ্য সম্পর্কে কিছু নির্দিষ্ট ডেটা - সমস্ত ডেটা নয় - আপডেট করার উপায় খুঁজছি।
স্পষ্টতই, কয়েকটি সমস্যা রয়েছে যা এই কৌশলটিকে জটিল করে তোলে।
- উত্স ডাটাবেসে কিছু জিজ্ঞাসা বাদ দিয়ে আমাকে কিছু করার অনুমতি নেই।
- লক্ষ্য ডাটাবেসে, আমি সাধারন প্রশ্নগুলি করতে পারি (নির্বাচন করুন, আপডেট করুন, সন্নিবেশ করুন, তৈরি করুন) তবে আমি বিদ্যমান কাঠামো / সারণীগুলি সংশোধন করতে পারি না।
- টার্গেট এবং সোর্স ডিবিতে সম্পূর্ণ আলাদা কাঠামো রয়েছে, টেবিল মোটেও এক রকম নয়, সুতরাং ডেটা সত্যিই পুনরায় সাজানো দরকার - তুলনা টেবিলগুলি কাজ করবে না।
- লক্ষ্য ডাটাবেস একটি মাইএসকিউএল সার্ভার ব্যবহার করে - উত্সটি ডিবি 2 হতে পারে।
- কোথাও কোনও "আপডেট সময়" ক্ষেত্র নেই।
সুতরাং পুরো প্রক্রিয়াটি একটি একক পাইথন (আদর্শ) স্ক্রিপ্টে করা দরকার।
আমি লক্ষ্যবস্তু ডাটাবেসে আপডেট করার ক্ষেত্রগুলির উপর ভিত্তি করে প্রতিটি পণ্যের জন্য একটি হ্যাশ তৈরি করার বিষয়ে চিন্তা করি: এমডি 5 (কোড + বিবরণ + সরবরাহকারী + প্রায় 10 অন্যান্য ক্ষেত্র)। উত্স ডাটাবেস থেকে দৈনিক ভিত্তিতে একই ডেটা ভিত্তিক একটি নতুন হ্যাশ তৈরি করা হবে। পারফরম্যান্সের উদ্দেশ্যে আমি সমস্ত হ্যাশ একক টেবিলের (আইটেম কোড, কারেন্ট_হ্যাশ, ওল্ড হ্যাশ) সংরক্ষণ করব store তারপরে নতুন হ্যাশটি পুরানোটির থেকে আলাদা হলে পণ্যটির তুলনা করুন এবং আপডেট করুন।
প্রায় 500 000 পণ্য রয়েছে তাই আমি পারফরম্যান্স সম্পর্কে কিছুটা চিন্তিত।
এটা কি ভাল উপায়?