সম্প্রতি টুইটার সেলিব্রেটি পিটার লেভেলস, লেক্স ফ্রিডম্যান পডকাস্ট-এ কিভাবে মাসে ৪০০ ডলারের একটা ভিপিএসে তার মাল্টিপল মাল্টিমিলিয়ন ডলারের বিসনেস index.php আর sqlite ডাটাবেস ইউজ করে বানিয়েছে, সেটা বলেছে। তারপর বলতে পারেন sqlite-এর জনপ্রিয়তা আগের থেকে বেড়ে যাচ্ছে। অনেকে তো প্রোডাকশনে কিভাবে sqlite ইউজ করা যায় সেটা নিয়েও কোর্স বানায় ফেলতেছে।
আপনার পিটারের মতো ইউজকেস হয় করতে পারে। কিন্তু এটাও মাথায় রাখতে হবে sqlite জাস্ট একটা স্ট্যাটিক ফাইল বানায়। লোকাল ডেভেলপমেন্ট এবং খুবই বেসিক ডাটাবেস ইউজ হয় এমন অ্যাপ চলতে কোন সমস্যা নেই। কিন্তু মাথায় রাখতে হবে একটাই তো ফাইল, প্রডাকশনে একটু ইউজ বেড়ে গেলেই IO অপারেশন লিমিট চলে আসবে।
এর পর আসুন MySQL এর কথায়। আপনার ছোট থেকে মাঝারি অ্যাপ-এর জন্য MySQL দারুণ হতে পারে, আবার অন্য দিকে ওয়ার্ডপ্রেসের মতো জনপ্রিয় টুলে MySQL ডিফল্ট ডাটাবেস ড্রাইভার হিসেবে আসে। MySQL এর আরেকটা দিক হল, PostgreSQL এর তুলনায় সিম্পল। কিন্তু দেখেন 2010 সালে ওরাকল MySQL কিনে নিয়েছে, তাদের নিজেদের একটা এক্সপেন্সিভ প্রপ্রিটরি ডাটাবেস আছে যার ইয়ারলি রেভেনিউ 10 বিলিয়ন ডলার। আপনার কি মনে হয় তার MySQL-কে এতটাই পাওয়ারফুল হতে দিবে যাতে নিজেদেরই কম্পেটিটর হয়? ওপেন-সোর্সারদের MySQL বিক্রি করা পছন্ধ হয় নাই দেখেই তারা MySQL-কে ফর্ক করে MariaDB বানিয়েছে।
অনেকবছর ধরেই আমার MySQL খুব একটা ইউজ করা হয় না কারণ আমি যেসকল এপ্লিকেশন-এ কাজ করছি তার বেশির ভাগই কমপ্লেক্স। অনেককে আলাদা আলাদা করে বলেছি কেন আমি PostgreSQL ইউএস করছি। আজকে আমি সে গুলোই এক সাথে করে লিখছি কেনো PostgreSQL আমার কাছে সবচেয়ে প্রিয় ডাটাবেস ম্যানেজমেন্ট সিস্টেম (DBMS)। এটা শুধু আমার পার্সোনাল চয়েস না, বরং অনেক ডেভেলপার এবং বড় বড় কোম্পানির পছন্দের DBMS। PostgreSQL-এর কিছু অসাধারণ ফিচার রয়েছে যা MySQL এবং SQLite-এ নেই বা PostgreSQL-এ অনেক বেটার:
-
টেবিল ইনহেরিটেন্স: PostgreSQL-এ একটি টেবিল অন্য টেবিলের সব প্রপার্টি ইনহেরিট করতে পারে।
-
অ্যাডভান্সড ইন্ডেক্সিং: PostgreSQL-এ পার্শিয়াল ইনডেক্স, এক্সপ্রেশন ইনডেক্স এবং GIN (Generalized Inverted Index) আছে।
-
পাওয়ারফুল জিওস্পেশিয়াল ফিচার: PostGIS এক্সটেনশন দিয়ে জিওস্পেশিয়াল ডাটা হ্যান্ডলিং অনেক শক্তিশালী।
-
কাস্টম ডাটা টাইপ: ব্যবহারকারীরা নিজেদের প্রয়োজন অনুযায়ী নতুন ডাটা টাইপ তৈরি করতে পারেন।
-
ফুল-টেক্সট সার্চ: PostgreSQL-এর বিল্ট-ইন ফুল-টেক্সট সার্চ ক্ষমতা অনেক বেশি উন্নত।
-
JSON/JSONB সাপোর্ট: PostgreSQL-এ JSON ডাটা হ্যান্ডলিং এবং কুয়েরি করার ক্ষমতা অনেক বেশি অ্যাডভান্সড।
-
অ্যাডভান্সড কনকারেন্সি কন্ট্রোল: Multi-Version Concurrency Control (MVCC) ব্যবহার করে PostgreSQL বেটার পারফরম্যান্স দেয়।
-
মাল্টিপল প্রোগ্রামিং ল্যাঙ্গুয়েজ সাপোর্ট: PL/pgSQL, PL/Python, PL/Perl ইত্যাদি।
-
ম্যাটেরিয়ালাইজড ভিউ: কমপ্লেক্স কোয়েরির রেজাল্ট স্টোর করে রাখতে পারে।
-
উইন্ডো ফাংশন: এনালিটিক্যাল কোয়েরি করার জন্য পাওয়ারফুল উইন্ডো ফাংশন।
-
রিকার্সিভ কোয়েরি: WITH RECURSIVE ক্লজ ব্যবহার করে জটিল হায়ারার্কিক্যাল ডাটা কোয়েরি করা যায়।
-
টেবল পার্টিশনিং: বড় টেবিলগুলিকে ছোট ছোট অংশে ভাগ করে পারফরম্যান্স বাড়ানো যায়।
-
AI/ML সাপোর্ট: বর্তমানে AI/ML এর যুগ, AI টোকেন বাই ডিফল্ট vector হিসেবে এড করে।
যদিও PostgreSQL শেখার কার্ভ একটু স্টিপ, কিন্তু একবার শিখে ফেললে এটা অসাধারন পাওয়ারফুল টুল হিসেবে কাজ করে। আমি মনে করি, যে কোনো সিরিয়াস ডেভেলপারের PostgreSQL শেখা উচিত।
আপনি কি PostgreSQL ব্যবহার করেন? আপনার অভিজ্ঞতা কেমন? কমেন্টে জানান!