প্রকল্প সম্পর্কে

pgfathom হলো PostgreSQL স্কিমা আর্কিওলজির জন্য একটি read-only কমান্ড-লাইন ইউটিলিটি। এটি ক্যাটালগ, ভিউ ও ফাংশনের ব্যবহারের প্রমাণ, নামকরণ কনভেনশন এবং প্ল্যানার পরিসংখ্যান পরীক্ষা করে বিদেশী কী হিসেবে ঘোষিত নয় এমন সম্পর্ক খুঁজে বের করে। টুলটি কখনো ডেটাবেসে লেখে না এবং প্রোডাকশন সিস্টেমে নিরাপদ অপারেশনের জন্য ডিজাইন করা হয়েছে। এটি যে সমস্যার সমাধান করে তা হলো: অনেক লিগ্যাসি PostgreSQL ডেটাবেসে লুকানো referential integrity থাকে – কলাম যা অন্য টেবিলে নির্দেশ করে কিন্তু কোনো কনস্ট্রেইন্ট নেই, অথবা কনস্ট্রেইন্ট NOT VALID দিয়ে তৈরি হয়েছে এবং কখনো বৈধ করা হয়নি। এর ফলে মডেলটি \\u2206-এর মতো টুলের কাছে অদৃশ্য থাকে এবং এতিম (orphan) সারি অলক্ষ্যে জমতে থাকে। pgfathom যা করে: * ডিসকভার মোডে এটি verdicts (broken, confirmed, weak, unvalidated, detected) সহ একটি টার্মিনাল রিপোর্ট, একটি সংস্করণযুক্ত JSON মডেল এবং পর্যালোচনাযোগ্য .sql ফাইল তৈরি করে। নিশ্চিত সম্পর্কের জন্য DDL-এ VALIDATE CONSTRAINT আলাদা করে দেওয়া হয় যাতে ভারী লক না লাগে, এবং প্রয়োজন হলে CREATE INDEX CONCURRENTLY ব্যবহৃত হয়। ভাঙা সম্পর্ক কমেন্টেড DDL হিসেবে আউটপুট হয় যাতে ব্যবহারকারী এতিম সারির বিষয়ে সিদ্ধান্ত নিতে পারেন। * এটি নামকরণ প্রোফাইল (pt-br, en, es) সমর্থন করে এবং স্কিমায় থাকা কী থেকে affix কনভেনশন পড়তে পারে। ব্যবহারকারীরা কাস্টম TOML প্রোফাইল দিতে পারেন। * ভিউ ডেফিনিশন ও ফাংশন বডি (এবং pg_stat_statements থাকলে) থেকে join predicate মাইন করা হয়, যাতে নামকরণ মেলানোর মাধ্যমে না পাওয়া সম্পর্কও ধরা পড়ে। * ভ্যালিডেশন পাইপলাইনে ছয়টি ধাপ: ক্যাটালগ পড়া, ব্যবহারের প্রমাণ মাইনিং, প্রোফাইল ব্যবহার করে ক্যান্ডিডেট তৈরি, মেটাডেটায় স্কোরিং, পরিসংখ্যান দিয়ে প্রি-ফিল্টারিং, এবং ডেটার বিরুদ্ধে অ্যাগ্রিগেট ব্যবহার করে চূড়ান্ত বৈধতা। ইনস্টলেশনের বিকল্প: DEB/RPM প্যাকেজ, Homebrew, Docker ইমেজ, অথবা Go দিয়ে সোর্স থেকে বিল্ড। টুলটি read-only, statement ও lock timeout মেনে চলে, কনকারেন্সি সীমিত রাখে এবং স্কিমা/টেবিল কভারেজ রিপোর্ট করে, যাতে নীরবতাকে ক্লিন বিল অব হেলথ মনে না হয়। স্কোপ ডিফল্ট হলো public স্কিমা, তবে --all-schemas, --schema, --exclude-schema এবং --exclude ফ্ল্যাগ দিয়ে বাড়ানো যায়। setup কমান্ড প্রথমবার ব্যবহারকারীদের কানেকশন, স্কিমা নির্বাচন, ভ্যালিডেশন গভীরতা এবং আউটপুট অবস্থান বিষয়ে গাইড করে। সঠিকতা পরিমাপ করা হয় recovery rate দিয়ে: সম্পূর্ণ বিদেশী কীযুক্ত একটি স্কিমা থেকে কীগুলো সরিয়ে pgfathom চালানো হয়, এবং কতটুকু পুনরুদ্ধার হয়েছে তা রিপোর্ট করা হয়। ফলাফল প্রকাশিত হয় একটি পাবলিক কর্পাসে যাতে GitLab, পৌর ব্যবস্থা এবং Discourse রয়েছে; সেখানে আংশিক (অর্ধেক কী অপসারিত) এবং গ্রিনফিল্ড (কোনো কী ঘোষিত নয়) উভয় অবস্থায় কর্মক্ষমতা দেখানো হয়। টুলটি আরও রিপোর্ট করে প্রতিটি ধাপের অবদান – শুধু প্রোফাইল, নামকরণ সনাক্তকরণ এবং join মাইনিং। আউটপুটে থাকে: প্রতি verdict-এ গণনা, বিশ্লেষিত টেবিল এবং পরিসংখ্যান প্রি-ফিল্টার ফলাফলসহ টার্মিনাল সারাংশ; টাইমস্ট্যাম্পসহ সংস্করণযুক্ত JSON মডেল; এবং .sql ফাইল যাতে নিশ্চিত কীগুলোর DDL (পর্যালোচনার পরে চালানোর জন্য প্রস্তুত) এবং ভাঙা কীগুলোর কমেন্টেড DDL (কোনো পদক্ষেপের আগে পরীক্ষা করার জন্য) থাকে। সব জেনারেটেড SQL নির্বাহের আগে পর্যালোচনা করার উদ্দেশ্যে। সংক্ষেপে, pgfathom একটি নীরব, নথিভুক্ত নয় এমন স্কিমাকে দৃশ্যমান ও কর্মযোগ্য মডেলে রূপান্তরিত করে; ভাঙা ইন্টিগ্রিটি সমাধানের জন্য প্রয়োজনীয় সঠিক কোয়েরি এবং অনুপস্থিত কনস্ট্রেইন্ট পুনরুদ্ধারের জন্য নিরাপদ DDL সরবরাহ করে।