আমি কেন PostgreSQL-কে প্রেফার করি (SQL ডাটাবেস হিসেবে)

সম্প্রতি টুইটার সেলিব্রেটি পিটার লেভেলস, লেক্স ফ্রিডম্যান পডকাস্ট-এ কিভাবে মাসে ৪০০ ডলারের একটা ভিপিএসে তার মাল্টিপল মাল্টিমিলিয়ন ডলারের বিসনেস 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-এ অনেক বেটার:

  1. টেবিল ইনহেরিটেন্স: PostgreSQL-এ একটি টেবিল অন্য টেবিলের সব প্রপার্টি ইনহেরিট করতে পারে।

  2. অ্যাডভান্সড ইন্ডেক্সিং: PostgreSQL-এ পার্শিয়াল ইনডেক্স, এক্সপ্রেশন ইনডেক্স এবং GIN (Generalized Inverted Index) আছে।

  3. পাওয়ারফুল জিওস্পেশিয়াল ফিচার: PostGIS এক্সটেনশন দিয়ে জিওস্পেশিয়াল ডাটা হ্যান্ডলিং অনেক শক্তিশালী।

  4. কাস্টম ডাটা টাইপ: ব্যবহারকারীরা নিজেদের প্রয়োজন অনুযায়ী নতুন ডাটা টাইপ তৈরি করতে পারেন।

  5. ফুল-টেক্সট সার্চ: PostgreSQL-এর বিল্ট-ইন ফুল-টেক্সট সার্চ ক্ষমতা অনেক বেশি উন্নত।

  6. JSON/JSONB সাপোর্ট: PostgreSQL-এ JSON ডাটা হ্যান্ডলিং এবং কুয়েরি করার ক্ষমতা অনেক বেশি অ্যাডভান্সড।

  7. অ্যাডভান্সড কনকারেন্সি কন্ট্রোল: Multi-Version Concurrency Control (MVCC) ব্যবহার করে PostgreSQL বেটার পারফরম্যান্স দেয়।

  8. মাল্টিপল প্রোগ্রামিং ল্যাঙ্গুয়েজ সাপোর্ট: PL/pgSQL, PL/Python, PL/Perl ইত্যাদি।

  9. ম্যাটেরিয়ালাইজড ভিউ: কমপ্লেক্স কোয়েরির রেজাল্ট স্টোর করে রাখতে পারে।

  10. উইন্ডো ফাংশন: এনালিটিক্যাল কোয়েরি করার জন্য পাওয়ারফুল উইন্ডো ফাংশন।

  11. রিকার্সিভ কোয়েরি: WITH RECURSIVE ক্লজ ব্যবহার করে জটিল হায়ারার্কিক্যাল ডাটা কোয়েরি করা যায়।

  12. টেবল পার্টিশনিং: বড় টেবিলগুলিকে ছোট ছোট অংশে ভাগ করে পারফরম্যান্স বাড়ানো যায়।

  13. AI/ML সাপোর্ট: বর্তমানে AI/ML এর যুগ, AI টোকেন বাই ডিফল্ট vector হিসেবে এড করে।

যদিও PostgreSQL শেখার কার্ভ একটু স্টিপ, কিন্তু একবার শিখে ফেললে এটা অসাধারন পাওয়ারফুল টুল হিসেবে কাজ করে। আমি মনে করি, যে কোনো সিরিয়াস ডেভেলপারের PostgreSQL শেখা উচিত।

আপনি কি PostgreSQL ব্যবহার করেন? আপনার অভিজ্ঞতা কেমন? কমেন্টে জানান!

15 Likes

Supabase এ ব্যবহার করে খুব ভালই লেগেছে। কিন্তু এতটা গভীরে যাওয়া হয় নাই।

1 Like

Supabase, Amazon Aurora, Neon, Xata সহ আরও অনেক ডাটাবেস PostgreSQL দিয়েই তৈরি তার উপর তার নিজেদের propritory ফিচার্স অ্যাড করেছে আরকি। PostgreSQL শিখে ফেলেন।

1 Like

পোস্টগ্রেস শেখার জন্য স্টার্টার কিছু রিসোর্সের লিংক থাকলে দিও। আমি গুগল করে বের করতে পারবো বাট তোমার থেকে পেলে জার্নিটা একটু সহজ হবে।

6 Likes

দুইটার বেশি লিঙ্ক এড করতে পারছিনা ভাই। আপনাকে ইনবক্স করে দিব, আপনি এড করে দিবেন?

ধন্যবাদ ভাই। আমি মাত্রই খুজতেছিলাম PostgreSQL নিয়ে লেখা কোনো টপিক, আর সাথে সাথেই আপনার পোস্ট পাইলাম।
আমি MSSQL নিয়ে কাজ করেছি। এখন PostgreSQL টা শিখতে চাচ্ছি। সহজ কোনো রিসোর্স থাকলে শেয়ার করবেন প্লিজ।

2 Likes

সাধারণত ফুলস্ট্যাক ডেভেলপার হিসেবে PostgreSQL অথবা যেকোন ডাটাবেস কতটুকু শিখা উচিত?
একজন Database Administrator এর তুলনায় কতটুকু শিখা উচিত?

ফুলস্ট্যাক ডেভেলপমেন্টে এর শুরুর দিকে সাধারণত CRUD অপারেশন নিয়ে বেশী কাজ করা হয়, সেক্ষেত্রে ডাটাবেসের অতিরিক্ত অথবা এডভান্স ফিচারগুলো তেমন একটা ব্যবহার হয় না।

You can try now. Trust level updated.

1 Like

PostgreSQL শেখার রিসোর্স:
১। অফিসিয়াল ডকস: PostgreSQL: Documentation
২। বেস্ট টেক্সট টিউটোরিয়াল: https://www.postgresqltutorial.com
৩। ভিডিও টিউটোরিয়ালস: https://www.udemy.com/course/sql-and-postgresql/ এবং https://www.udemy.com/course/sql-and-postgresql-for-beginners/
৪। আর যদি আপনার হাতে পর্যাপ্ত সময় থাকে ইউনিভার্সিটি অফ মিশিগান এর কোর্স টাই করে ফেলতে পারেন, আমার ইচ্ছা আছে আমিও করব: https://www.edx.org/certificates/professional-certificate/michiganx-postgresql-for-everybody

6 Likes

আমি যতটুকু লিখেছি ততটুকু ডেভলপারদের জন্যই, DBA -এর কাজ আরও অনেক বিস্তৃত। সব এক দিনেই শেখার প্রয়োজন নেই, একটু একটু করে শিখবেন।

1 Like

Postgres এ সবচেয়ে কনফিউজিং লাগে ডেটাবেজ আর স্কীমা আলাদা ব্যাপারটা

Thanks for sharing. Keep Sharing like this.

1 Like