অভিন্ন কাঠামোর সাথে দুটি ডাটাবেসের তুলনা করা কি সম্ভব? ধরা যাক যে আমার কাছে দুটি ডাটাবেস ডিবি 1 এবং ডিবি 2 রয়েছে এবং আমি তাদের মধ্যে ডেটাতে কোনও পার্থক্য আছে কিনা তা যাচাই করতে চাই।
অভিন্ন কাঠামোর সাথে দুটি ডাটাবেসের তুলনা করা কি সম্ভব? ধরা যাক যে আমার কাছে দুটি ডাটাবেস ডিবি 1 এবং ডিবি 2 রয়েছে এবং আমি তাদের মধ্যে ডেটাতে কোনও পার্থক্য আছে কিনা তা যাচাই করতে চাই।
উত্তর:
(নোট করুন যে এই সরঞ্জামগুলির বেশিরভাগটি কেবল কাঠামোর তুলনা করতে পারে তবে ডেটা নয়)
বিনামূল্যে
ব্যবসায়িক:
apgdiff
উত্তরাধিকারী টেবিলগুলি ভালভাবে সমর্থন করে না এবং আমি এটি ব্যবহার করার চেষ্টা করার সাথে সাথেই ব্যতিক্রম ছুঁড়ে ফেলা হয়। WbSchemaDiff
খুব ভাল কাজ করে, অবাক!
pg_dump
উভয় ডাটাবেস ব্যবহার করে এবং ফাইলগুলি পৃথক করে দেখুন।
pg_dump
জন্য ঠিক আছে। আপনি যদি এর সাথে উল্লেখযোগ্য ভিন্নতা দেখতে পান তবে আপনি pg_dump
সম্ভবত তুলনামূলকভাবে বাইরে থাকা জিনিসগুলির তুলনা করার চেষ্টা করছেন। কমপক্ষে পিজি ডিবিএস তুলনা করার জন্য।
psql -c '\x' -c 'SELECT... ORDER BY...'
পরিবর্তে ব্যবহার করছি pg_dump
।
আর একটি ফ্রি অ্যাপ (এটি কেবল কাঠামোর সাথে তুলনা করতে পারে তবে ডেটা নয় ):
ডিবিভার - আপনি একে অপরের সাথে তুলনা করতে ডাটাবেস, টেবিল ইত্যাদি নির্বাচন করতে পারেন
আমি প্রচুর সরঞ্জাম মূল্যায়ন করেছি এবং নিম্নলিখিত সমাধানগুলি পেয়েছি:
স্কিমার তুলনা :
সবচেয়ে আকর্ষণীয় ছিল লিকুইবেস, পারস্য এবং পিজকোড কিপার:
( ইস্যু ) লিক্সবেস রূপান্তর:
SET DEFAULT nextval('myschema.name_id_seq'::regclass)
মধ্যে
BIGSERIAL
সুতরাং এটি ব্যবহার করতে প্রত্যাখ্যান করা হয়েছিল
( ইস্যু ) পারস্যেরা ততক্ষণ কাজ করেছে যতক্ষণ না আমি কিছু অতিরিক্ত স্কিমা যুক্ত করেছি এবং এটি নীচে ফেলে দেওয়া শুরু করে:
pyrseas_1 | TypeError: 'NoneType' object is not iterable
সুতরাং আমি পিজকোডকিপারকে পেয়েছি এটি পুরোপুরি কার্যকর হয় এবং এটি জীবিত (আপনি প্রকাশগুলি পরীক্ষা করতে পারেন)। আমি নিম্নলিখিত কমান্ড ব্যবহার করি:
./pgcodekeeper-cli.sh -E -I ./ignore.txt \
-s "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-t "jdbc:postgresql://localhost/postgres?user=postgres&password=123" \
-o /result/schema-diff-$(date +'%m%d%y_%H%M%S').sql
ডেটা তুলনা: আমি লিক্সবেসটি ব্যবহার করার চেষ্টা করেছি এবং এটি কার্যকর হয় না আপনি লিকবেজের সাথে দুটি ডাটাবেসের ডেটা পার্থক্য সম্পর্কে আমার অনুত্তরিত প্রশ্নে যে পদক্ষেপগুলি চেষ্টা করেছি তা দেখতে পাচ্ছেন
সুতরাং আমি অন্য একটি প্রকল্প পেয়েছি এসকিউএল ওয়ার্কবেঞ্চ / জে এটি সত্যিই দুর্দান্ত কাজ করে এবং এসকেউএলে রিল ডিফারেট জেনারেট করে। আমি নিম্নলিখিত কমান্ড ব্যবহার করি:
java -jar /sqlworkbench.jar -command="'WbDataDiff -excludeTables=$EXCLUDE_TABLES \
-referenceConnection=$REFERENCE_CONNECTION \
-targetConnection=$TARGET_CONNECTION -referenceSchema=$1 \
-targetSchema=$1 -file=$DIFF_RESULT_FILE -singleFile=true \
-includeDelete=true -ignoreMissingTarget=true ;'"
উভয় সরঞ্জামই বস্তুর পরিস্রাবণকে সমর্থন করে। এটা সত্যিই সুবিধাজনক।
মাইগ্রেশন
এবং পরিশেষে আমি কেবল মাইগ্রেশন / সংস্করণ ট্র্যাকিংয়ের জন্য লিক্সবেস ব্যবহার করি।
আমি পোস্টগ্রিসের জন্য একটি বিস্তৃত তুলনা সরঞ্জামে কাজ করছি। এটি বিটা থাকাকালীন বিনামূল্যে হবে।
প্রাথমিকভাবে এটি কেবল স্কিমা (ডিডিএল) তুলনা তবে আমরা সম্ভবত ডেটাতেও প্রসারিত করব। আমি বিশ্বাস করি যে এটি এমন একটি সরঞ্জাম যা তাদের বিকাশের পরিবেশ, অপারেশন ইত্যাদি কীভাবে কাজ করে তাও পরিবর্তন না করেই প্রচুর শপগুলিকে তাদের বর্তমান আরডিবিএমএস থেকে সরানোর জন্য প্রয়োজন হয়।
আমি যে সেরা সরঞ্জামটি দেখেছি https://pythonhosted.org/Pyrseas/
A dbtoyaml ডাটাবেস থেকে ডাম্প পান ...
A => B yamltodb থেকে মাইগ্রেশন উত্পন্ন করুন ... [ধাপ ১-এ উত্পন্ন ফাইল]
আমি ডাটাবেসে ডেটা তুলনা করার জন্য একটি সরঞ্জামও সন্ধান করছি (বিশেষত আমি রেডশিফ্ট ডিবি তুলনায় আগ্রহী ছিলাম)। এ পর্যন্ত সেরা আমি খুঁজে পাওয়া যায়নি https://www.dbbest.com/products/database-compare-suite/#close । দুর্ভাগ্যক্রমে বিনামূল্যে ট্রায়ালটির একদিন পরে মেয়াদ শেষ হয়।
আমি 2 টি লাইভ PostgreSQL ডাটাবেস (ডাম্প নয়), টেবিলের ডেটা এবং সিকোয়েন্সগুলির সাথে তুলনা করার জন্য একটি সরঞ্জাম তৈরি করেছি। খুব প্রারম্ভিক দিন তবে আমি যা করতে চাই তা অর্জন করেছে, সম্ভবত এটি আপনাকেও সহায়তা করতে পারে।
আমার মতে পোস্টগ্রেএসকিএল-এ কোমাপ্রিংয়ের জন্য ডিবিফোজই সবচেয়ে শক্তিশালী হাতিয়ার। এটি ডিভার্ট কোম্পানির একটি পণ্য y আপনি এখানে ডাউনলোড করতে পারেন ।