ডাটাবেসের ধরন: রিলেশনাল, কলামনার, ডকুমেন্ট, গ্রাফ ও আরও | Koder.ai
২০ আগ, ২০২৫·8 মিনিট
ডাটাবেসের ধরন: রিলেশনাল, কলামনার, ডকুমেন্ট, গ্রাফ ও আরও
প্রধান ডাটাবেস টাইপগুলো — রিলেশনাল, কলামনার, ডকুমেন্ট, গ্রাফ, ভেক্টর, কী-ভ্যালু, টাইম-সিরিজ, ও আরও — তাদের ব্যবহার, ট্রেডঅফ এবং কিভাবে সঠিকভাবে নির্বাচন করবেন তুলনা করুন।
“ডাটাবেস টাইপ” আসলে কি বোঝায়\n\n“ডাটাবেস টাইপ” শুধু একটা লেবেল নয়—এটি সংক্ষিপ্তভাবে বলে দেয় কীভাবে একটি সিস্টেম ডেটা স্টোর করে, আপনি কীভাবে কোয়েরি করবেন, এবং এটি কোন কাজে অপ্টিমাইজ করা। সেই নির্বাচন সরাসরি প্রভাব ফেলে গতি (কোটা দ্রুত বনাম ধীর), খরচ (হার্ডওয়্যার বা ক্লাউড বিল), এবং সক্ষমতায় (ট্রানজ্যাকশন, অ্যানালিটিক্স, সার্চ, রিপ্লিকেশন ইত্যাদি)।\n\n### কেন “টাইপ” গুরুত্বপূর্ণ\n\nবিভিন্ন ডাটাবেস টাইপ ভিন্ন ট্রেডঅফ করে:\n\n- একটি রিলেশনাল ডাটাবেস ভাল যখন আপনার ডেটা স্ট্রাকচার্ড এবং আপনি বিশ্বাসযোগ্য ট্রানজ্যাকশন চান।\n- একটি কলামনার ডাটাবেস উজ্জ্বল যখন আপনি বিশ্লেষণাত্মক প্রশ্নের জন্য ব্যাপক সারি স্ক্যান করেন।\n- একটি ডকুমেন্ট ডাটাবেস দ্রুত চলতে পারে যখন আপনার অ্যাপের ডেটার আকার প্রায়ই বদলায়।\n- একটি গ্রাফ ডাটাবেস সম্পর্ক-ভিত্তিক ডেটার জন্য নির্মিত।\n- একটি ভেক্টর ডাটাবেস মিল-ভিত্তিক (“সামিলারিটি”) প্রশ্নগুলোর উপর ফোকাস করে।\n\nএসব ডিজাইন পছন্দগুলো প্রভাব ফেলে:\n\n- কোয়েরি প্যাটার্ন: অনেক ছোট লুকআপ, জটিল জয়েন, না বড় অ্যানালিটিক স্ক্যান?\n- স্কেল মডেল: একটি বড় মেশিনে স্কেল-আপ, না অনেক মেশিনে স্কেল-আউট?\n- ডেটা মডেল: টেবিল, ডকুমেন্ট, কী-ভ্যালু পেয়ার, গ্রাফ, ভেক্টর, বা টাইম-স্ট্যাম্পেড পয়েন্ট।\n\n### এই গাইড থেকে আপনি কী শিখবেন\n\nএই আর্টিকেলটি প্রধান ডাটাবেস টাইপগুলোর মধ্য দিয়ে যাবে এবং প্রতিটির জন্য ব্যাখ্যা করবে:\n\n- কী বিষয়ে এটি শ্রেষ্ঠ (এবং কোথায় দুর্বল)\n- বাস্তব প্রোডাক্টে টিপিক্যাল ইউজ কেস\n- প্রধান ট্রেডঅফ যা পারফরম্যান্স, খরচ, এবং জটিলতাকে প্রভাবিত করে\n\n### “মাল্টি-মডেল” সিস্টেম সম্পর্কে দ্রুত এক নোট\n\nআধুনিক অনেক প্রোডাক্ট সীমারেখা বিলুপ্ত করে দেয়। কিছু রিলেশনাল ডাটাবেস JSON সাপোর্ট যোগ করে যা ডকুমেন্ট ডাটাবেস-এর সঙ্গে ওভারল্যাপ করে। কিছু সার্চ ও অ্যানালিটিক্স প্ল্যাটফর্ম ভেক্টর ইনডেক্সিং দেয়। অন্যরা স্ট্রিমিং ও স্টোরেজ মিলিয়ে টাইম-সিরিজ ফিচারও দেয়।\n\nতাই “টাইপ” কঠোর বাক্স নয়—তবুও এটা ডিফল্ট শক্তি ও কোন ওয়ার্কলোডগুলো একটি ডাটাবেস সবচেয়ে ভালভাবে হ্যান্ডল করে তা বোঝার জন্য উপকারী।\n\n### এই গাইডটি কিভাবে ব্যবহার করে শর্টলিস্ট করবেন\n\nআপনার প্রধান ওয়ার্কলোড থেকেই শুরু করুন:\n\n- যদি আপনি স্ট্রাকচার্ড ডেটা ও ট্রানজ্যাকশন চান, রিলেশনাল ডাটাবেস দিয়ে শুরু করুন।\n- যদি আপনি ভারী রিপোর্টিং ও ড্যাশবোর্ড করতেছেন, কলামনার ডাটাবেস বা ওয়্যারহাউস দেখুন।\n- যদি আপনার অ্যাপ ডেটার আকৃতি প্রায়ই বদলায়, ডকুমেন্ট ডাটাবেস বিবেচনা করুন।\n- যদি আপনাকে অত্যন্ত দ্রুত কী-ভিত্তিক লুকআপ দরকার, কী-ভ্যালু স্টোর একটি শক্ত প্রতিযোগী।\n\nতারপর “How to Choose the Right Database Type” সেকশন ব্যবহার করে স্কেল, কনসিস্টেন্সি প্রয়োজন, এবং সবচেয়ে বেশি চালানো হবে এমন কোয়েরি অনুযায়ী সংকুচিত করুন।\n\n## রিলেশনাল ডাটাবেস (SQL): স্ট্রাকচার্ড ডেটার ডিফল্ট\n\nরিলেশনাল ডাটাবেস অনেকের মনের ছবিটাই যখন তারা “ডাটাবেস” শব্দটি চিন্তা করে। ডেটা টেবিলে সংগঠিত—প্রতিটি টেবিলে রো (রেকর্ড) এবং কলাম (ফিল্ড) থাকে। একটি স্কিমা নির্ধারণ করে প্রতিটি টেবিল কিরকম—কোন কলাম আছে, সেগুলোর টাইপ, এবং টেবিলগুলো কিভাবে সম্পর্কিত।\n\n### কেন SQL এত ব্যাপক\n\nরিলেশনাল সিস্টেমগুলো সাধারণত SQL (Structured Query Language) দিয়ে প্রশ্ন করা হয়। SQL জনপ্রিয় কারণ এটি পাঠযোগ্য ও অভিব্যক্তিশীল:\n\n- আপনি ফিল্টার ও সোর্ট করতে পারেন (WHERE, ORDER BY)।\n- টেবিল জুড়ে ডেটা মিলাতে পারেন (JOIN)।\n- ফলাফল সংক্ষেপ করতে পারেন (GROUP BY)।\n\nঅধিকাংশ রিপোর্টিং টুল, অ্যানালিটিক্স প্ল্যাটফর্ম, ও বিজনেস অ্যাপ SQL জানে—যা এটিকে একটি নিরাপদ ডিফল্ট করে তোলে।\n\n### ACID ট্রানজ্যাকশন সহজ ভাষায়\n\nরিলেশনাল ডাটাবেসগুলো ACID ট্রানজ্যাকশন-এর জন্য পরিচিত, যা ডেটাকে সঠিক রাখতে সাহায্য করে:\n\n- Atomicity: বহু-ধাপের পরিবর্তন “সব বা কিছুই নয়।”\n- Consistency: রুল (যেমন ফরেন কী) পরিবর্তনের পরও সঠিক থাকে।\n- Isolation: সমান্তরাল আপডেট একে অপরকে নষ্ট করে না।\n- Durability: একবার সেভ হলে, ডেটা ক্র্যাশে টিকে থাকে।\n\nএটি গুরুত্বপূর্ণ যখন ভুলের খরচ বেশি—যেমন একজন গ্রাহককে দ্বিবার্ভাবে চার্জ করা বা স্টক আপডেট হারানো।\n\n### সবচেয়ে উপযুক্ত ওয়ার্কলোড\n\nরিলেশনাল ডাটাবেস সাধারণত সঠিক ফিট যখন ডেটা স্ট্রাকচার্ড, ভালভাবে সংজ্ঞায়িত এবং কাজগুলো যেমন:\n\n- বিজনেস অ্যাপলিকেশন (CRM/ERP ধরনের)\n- ফাইনান্স, পেমেন্ট, বিলিং\n- ইনভেন্টরি, অর্ডার, রিজার্ভেশন\n\n### সাধারণ pitfalls\n\nএকই কাঠামো যা রিলেশনাল ডাটাবেসকে নির্ভরযোগ্য করে, তা কখনো friction যোগ করে:\n\n- কড়কড়া স্কিমা: ডেটা আকৃতি বারবার বদলে হলে মাইগ্রেশন দরকার হতে পারে।\n- জয়েন-ভিত্তিক স্কেলিং: বড় টেবিল জুড়ে অনেক জয়েন ধীরে বা ব্যয়বহুল হতে পারে, বিশেষত যদি ডাটা অনেক মেশিনে ছড়ানো থাকে।\n\nযখন আপনার ডেটা মডেল ক্রমাগত বদলায়—অথবা আপনি চাচ্ছেন চরম হরাইজন্টাল স্কেল যেখানে অ্যাক্সেস প্যাটার্ন সহজ—অন্যান্য ডাটাবেস টাইপগুলো ভাল মানানসই হতে পারে।\n\n## কলামনার ডাটাবেস: অ্যানালিটিক্সের জন্য নির্মিত\n\nকলামনার ডাটাবেস ডেটা “কলাম হিসেবে” স্টোর করে, সারি হিসেবে নয়। সেই এক বদল বিশ্লেষণাত্মক ওয়ার্কলোডে গতি ও খরচে বড় প্রভাব ফেলে।\n\n### রো-স্টোর বনাম কলাম-স্টোর\n\nপ্রথাগত রো-স্টোরে (রিলেশনাল ডাটাবেসে সাধারণ) একটি রেকর্ডের সব মান একসাথে থাকে। সেটা ভালো যখন আপনি প্রায়শই এক-এক করে কাস্টমার/অর্ডার ফেচ বা আপডেট করেন।\n\nকলাম-স্টোরে, একই ফিল্ডের সব মান একসঙ্গে থাকে—প্রতিটি price, প্রতিটি country, প্রতিটি timestamp আলাদা করে রাখা হয়। রিপোর্টের জন্য প্রয়োজনীয় কয়েক কলামই পড়লে হবে, পুরো সারি হার্ডড্রিভ থেকে টেনে আনতে হয় না।\n\n### কেন কলামনার রিপোর্টিংয়ে দ্রুত\n\nঅ্যানালিটিক্স ও BI কোয়েরিগুলো প্রায়ই:\n\n- বহু রেকর্ড স্ক্যান করে\n- কিছু কলামই সিলেক্ট করে\n- SUM, AVG, COUNT মতো এগ্রিগেট হিসাব করে\n\nকলামনার স্টোরেজ কম ডেটা পড়ে এবং খুব ভালভাবে কমপ্রেস হয় (সমকক্ষ মানগুলো একসাথে থাকলে কমপ্রেশন কার্যকর)। অনেক কলামনার ইঞ্জিন ভেক্টরাইজড এক্সিকিউশন, স্মার্ট ইনডেক্সিং/পার্টিশনিংও ব্যবহার করে বড় স্ক্যান দ্রুত করতে।\n\n### টিপিক্যাল কোয়েরি প্যাটার্ন\n\nকলামনার সিস্টেম ড্যাশবোর্ড ও রিপোর্টিংয়ের জন্য উপযুক্ত: “সপ্তাহভিত্তিক রাজস্ব,” “রিজিয়নভিত্তিক শীর্ষ ২০ প্রোডাক্ট,” “চ্যানেলভিত্তিক কনভার্শন রেট,” অথবা “গত ৩০ দিনের সার্ভিস এ রর”—এগুলো বহু সারি স্পর্শ করে কিন্তু তুলনামূলকভাবে কিছু কলামই লাগে।\n\n### ট্রেডঅফ: OLTP-স্টাইল আপডেট ও পয়েন্ট লুকআপ\n\nআপনার ওয়ার্কলোড যদি হয় “ID দিয়ে একটি রেকর্ড ফেচ” বা “একটি সারি প্রতি সেকেন্ডে বহু বার আপডেট”, তাহলে কলামনার ধাঁচ ধীর বা ব্যয়বহুল মনে হতে পারে। রাইটগুলো সাধারণত ব্যাচ-অপ্টিমাইজড (অ্যাপেন্ড-ওজনী ইনজেশন) হয়, বারবার ছোট আপডেটে নয়।\n\n### কোথায় এটি উজ্জ্বল\n\nকলামনার ডাটাবেস ভালো মানায়:
BI ও এক্সিকিউটিভ ড্যাশবোর্ড
ইভেন্ট ও ক্লিকস্ট্রিম অ্যানালিটিক্স
লগ বা ট্রাঞ্জ্যাকশন নিয়ে বড় স্কেল রিপোর্টিং
আপনি যদি বড় ডাটার উপর দ্রুত এগ্রিগেশনকে অগ্রাধিকার দেন, কলামনার টাইপ সাধারণত প্রথম বিবেচ্য।\n\n## ডকুমেন্ট ডাটাবেস: অ্যাপ ডেটার জন্য নমনীয় স্কিমা\n\nডকুমেন্ট ডাটাবেস ডেটাকে “ডকুমেন্ট” হিসেবে রাখে—স্ব-অন্তর্ভুক্ত রেকর্ড যা JSON-এর মতো দেখা যায়। অনেক ক্ষেত্রেই আপনি সম্পর্কিত ফিল্ডগুলো একই অবজেক্টে রাখেন (নেস্টেড অ্যারে ও সাব-অবজেক্টসহ), ফলে অ্যাপ ডেটার জন্য এটি প্রাকৃতিক ফিট।\n\n### ডকুমেন্ট মডেল (JSON-র মতো রেকর্ড)
\nএকটি ডকুমেন্ট হতে পারে একটি ইউজার, পণ্য, বা আর্টিকেল—পরিপূর্ণ অ্যাট্রিবিউটসহ যা প্রতিটি ডকুমেন্টে আলাদা হতে পারে। একটি প্রোডাক্টে থাকতে পারে ও , আরেকটাতে ও , সবকিছু একই স্কিমায় ফিট করাতে না গিয়ে।\n\nএই লচিলাভ্য আপনার চাহিদা দ্রুত বদলালে বা বিভিন্ন আইটেমের ভিন্ন ফিল্ড থাকলে বিশেষভাবে উপকারী।\n\n### ইনডেক্সিং, সংক্ষেপে\n\nপ্রতিটি ডকুমেন্ট স্ক্যান না করতে, ডকুমেন্ট DB-গুলো ইনডেক্স ব্যবহার করে—যা ডাটাবেসকে দ্রুত ম্যাচিং ডকুমেন্ট খুঁজে পেতে সাহায্য করে। আপনি সাধারণ লুকআপ ফিল্ডগুলো (যেমন , , ) ইনডেক্স করতে পারেন, এবং অনেক সিস্টেম নেস্টেড ফিল্ডও ইনডেক্স করতে পারে (যেমন )। ইনডেক্সগুলো রিড দ্রুত করে, কিন্তু রাইটে বাড়তি ওভারহেড আনে কারণ ডকুমেন্ট বদলালে ইনডেক্স আপডেট করতে হয়।\n\n### শক্তি এবং ট্রেডঅফ
\nডকুমেন্ট ডাটাবেস ইভলভিং স্কিমা, নেস্টেড ডেটা, এবং API-ফ্রেন্ডলি পে-লোডে ভাল। ট্রেডঅফগুলো সাধারণত প্রকাশ পায় যখন আপনি চান:
\n- জটিল জয়েন বহু এনটিটি জুড়ে (রিলেশনাল ডেটাবেসে স্বাভাবিক হিসাবে করা সহজ)
এই “ফিল্টার + সিমিলারিটি” প্যাটার্ন ভেক্টর সার্চকে বাস্তবে ব্যবহারযোগ্য করে তোলে।\n\n### ভেক্টর ডাটাবেস কোথায় মানায়
\nসাধারণ ব্যবহারগুলো:
সাধারণ প্রশ্ন
What does “database type” actually mean in practice?
ওয়াইড-কলাম সিস্টেমগুলো সাধারণত কোয়্যরি-ড্রিভেন মডেলিং দাবি করে—বিভিন্ন অ্যাক্সেস প্যাটার্ন সাপোর্ট করতে ডেটা ডুপ্লিকেট করতে হতে পারে।
When should I choose a graph database over relational tables?
গ্রাফ ডাটাবেস বেছে নিন যখন আপনার মূল প্রশ্নগুলো সম্পর্ক-ভিত্তিক:
পথ এবং আলাদা হওয়ার ডিগ্রি (degrees of separation)
কানেকশনের উপর ভিত্তি করে রিকমেন্ডেশন
ফ্রড রিংস বা শেয়ার্ড অ্যাট্রিবিউট খোঁজা
গ্রাফগুলো ট্র্যাভার্সালে দ্রুত; রিলেশনালভাবে একই ধরনের প্রশ্ন করলে অনেক জয়েন লাগতে পারে। বদলে আপনাকে গ্রাফ মডেলিং কনভেনশন এবং নতুন কোয়েরি ভাষা (Cypher/Gremlin/SPARQL) শিখতে হতে পারে।
What problem do vector databases solve, and do they replace my main database?
ভেক্টর ডাটাবেস সমাধান দেয় সিমিলারিটি সার্চ: এম্বেডিংস (টেক্সট, ইমেজ, অডিও, প্রোডাক্ট) ব্যবহার করে মানে-ভিত্তিক মিল খুঁজে পাওয়া। সাধারণ ব্যবহার:
Semantic search (ভিন্ন শব্দভান্ডার হলেও প্রাসঙ্গিক ডক উদ্ধার করা)
RAG (LLM-এর আগে প্রাসঙ্গিক প্যাসেজ রিট্রিভ করা)
সামিলারিটি-ভিত্তিক রিকমেন্ডেশন
এগুলো সাধারণত আপনার মেইন ডাটাবেসকে প্রতিস্থাপন করে না—সোর্স-অফ-ট্রুথ relational/document স্টোরে রাখুন, এম্বেডিংস ও ইনডেক্স ভেক্টর DB-তে রাখুন এবং পরে ফুল রেকর্ড/পারমিশনগুলো যোগ করুন।
size
color
dimensions
materials
email
sku
status
address.city
উচ্চ-স্কেলে মাল্টি-ডকুমেন্ট ট্রানজ্যাকশন (অনেক প্রোডাক্টে সাপোর্ট আছে, কিন্তু পারফরম্যান্সের খরচ হতে পারে)
কড়াকড়া নর্মালাইজেশন (টিমগুলো মাঝে মাঝে রিড সহজ রাখতে ডেটা ডুপ্লিকেট করে, যা যত্নশীল আপডেট লজিক দাবি করে)\n\n### সাধারণ ইউজ কেস
\nকনটেন্ট ম্যানেজমেন্ট, প্রোডাক্ট ক্যাটালগ, ইউজার প্রোফাইল, এবং ব্যাকএন্ড API—কোনও জায়গায় যেখানে আপনার ডেটা “প্রতি পৃষ্ঠা/স্ক্রীন/রিকোয়েস্ট এক অবজেক্ট” হিসেবে মানায়—সেগুলোতে ডকুমেন্ট DB শক্তিশালী পছন্দ।\n\n## কী-ভ্যালু স্টোর: সহজ ও খুব দ্রুত লুকআপ\n\nকী-ভ্যালু স্টোর হলো সবচেয়ে সরল ডাটাবেস মডেল: আপনি একটি ভ্যালু (স্ট্রিং থেকে JSON ব্লব পর্যন্ত) স্টোর করেন এবং একটি ইউনিক কী দিয়ে তা রিট্রিভ করেন। মূল অপারেশন হচ্ছে “এই কী-র জন্য মানটি দাও”, তাই এই সিস্টেমগুলো অত্যন্ত দ্রুত হতে পারে।\n\n### কী-ভ্যালু মডেল (এবং কেন এটি দ্রুত)
\nকারণ রিড ও রাইট একটি একক প্রাইমারি কী-র চারপাশে কেন্দ্রীভূত, কী-ভ্যালু স্টোরগুলো কম লেটেন্সি ও উচ্চ থ্রুপুটের জন্য অপ্টিমাইজ করা যায়। অনেকেই হট ডেটা মেমোরিতে রাখে, জটিল কোয়েরি প্ল্যানিং কমায়, এবং হরাইজন্টাল স্কেলে ডিজাইন করা থাকে।\n\nএই সরলতা ডেটা মডেলিংকেও প্রভাবিত করে: আপনি সাধারণত কীতে এমনভাবে ডিজাইন করেন যাতে সঠিক রেকর্ডটি সরাসরি পেয়ে যান (উদাহরণ: user:1234:profile)।\n\n### ক্যাশিং ও সেশন ব্যবহারে কেন জনপ্রিয়\n\nকী-ভ্যালু স্টোর প্রায়শই একটি ধীরতর প্রধান ডাটাবেসের সামনে ক্যাশ হিসাবে ব্যবহৃত হয় (যেমন একটি রিলেশনাল DB)। যদি আপনার অ্যাপ বারবার একই ডেটা চায়—প্রোডাক্ট ডিটেইল, ইউজার পারমিশন, প্রাইসিং রুল—তাহলে কী-ভ্যালু ক্যাশিং ফলাফল রেখে পুনরায় ক্যালকুলেশন বা রিকোয়েরি এড়ায়।\n\nএগুলো সেশন স্টোরেজ-এর জন্যও উপযুক্ত (উদাহরণ: session:<id> -> session data) কারণ সেশনগুলো বারবার পড়ে ও আপডেট হয় এবং সাধারণত এগুলো এক্সপায়ার করে।\n\n### TTL, ইভিকশন, মেমরি বনাম ডিস্ক
\nঅধিকাংশ কী-ভ্যালু স্টোর TTL (time to live) সাপোর্ট করে যাতে ডেটা ম্যানুয়ালি ক্লিন না করেই মেয়াদোত্তীর্ণ হয়—সেশন, ওয়ান-টাইম টোকেন, এবং রেট-লিমিট কাউন্টার জন্য আদর্শ।\n\nমেমোরি সীমিত হলে সিস্টেমগুলো সাধারণত ইভিকশন পলিসি (যেমন least-recently-used) ব্যবহার করে পুরানো এন্ট্রি সরিয়ে দেয়। কিছু প্রোডাক্ট মেমরি-ফার্স্ট, অন্যগুলো ডিউরেবিলিটির জন্য ডিস্কে পারসিস্ট করে। মেমরি বনাম ডিস্কের নির্বাচন সাধারণত নির্ভর করে আপনি কি স্পিড অপটিমাইজ করছেন না কি রিটেনশন/রিকভারি।\n\n### আগাম ট্রেডঅফ জানুন
\nকী-ভ্যালু স্টোরগুলো তখনই উজ্জ্বল যখন আপনি কী আগে থেকেই জানেন। ওপেন-এন্ডেড প্রশ্নের জন্য এগুলো কম উপযুক্ত। অনেকেরই SQL ডাটাবেসগুলোর চেয়ে সীমিত কোয়েরি প্যাটার্ন থাকে। সেকেন্ডারি ইন্ডেক্স সাপোর্ট ভিন্ন ভিন্ন—কেউ দেয়, কেউ আংশিক বিকল্প দেয়, আবার কেউ বলে নিজে লুকআপ কীগুলি মেইন্টেইন করুন।\n\n### সাধারণ ইউজ কেস
\nকী-ভ্যালু স্টোর ভালো মানায়:
\n- রেট লিমিটিং: TTL উইন্ডোসহ ইউজার/IP প্রতি কাউন্টার
ফিচার ফ্ল্যাগ: দ্রুত রিড করে ব্যবহারকারীর আচরণ ঠিক করা
শপিং কার্ট: ইউজার/সেশন কী দিয়ে দ্রুত কার্ট আপডেট
\nআপনার অ্যাক্সেস প্যাটার্ন যদি “ID দ্বারা ফেচ/আপডেট” এবং লেটেন্সি গুরুত্বপূর্ণ হয়, কী-ভ্যালু স্টোর প্রায়ই সবচেয়ে সরল উপায়ে নির্ভরযোগ্য গতি দেয়।\n\n## ওয়াইড-কলাম ডাটাবেস: স্কেল-আউট অপারেশনাল স্টোরেজ\n\nওয়াইড-কলাম ডাটাবেস (কখনও কখনও ওয়াইড-কলাম স্টোর বলা হয়) ডেটা কলাম ফ্যামিলি তে সংগঠিত করে। প্রতিটি সারির জন্য একই কলামের সেট থাকা বাধ্যতামূলক নয়—পরিবারভিত্তিক কলামগুলো একসাথে গোষ্ঠীভুক্ত করা হয় এবং প্রতিটি সারিতে ভিন্ন কলাম হতে পারে।\n\n### ওয়াইড-কলাম বনাম কলামনার অ্যানালিটিক্স
\nনাম মিললেও, ওয়াইড-কলাম ডাটাবেসগুলো কোলামনার অ্যানালিটিক্স ডাটাবেসের মতো নয়।\n\nএকটি কলামনার ডাটাবেস বিশাল ডাটাসেট স্ক্যান করে দক্ষতার জন্য প্রতিটি কলাম আলাদা করে রাখে (রিপোর্টিং ও এগ্রিগেশনের জন্য দুর্দান্ত)। একটি ওয়াইড-কলাম ডাটাবেস অপারেশনাল ওয়ার্কলোড, যেখানে আপনি অনেক মেশিন জুড়ে দ্রুত রাইট/রিড চান, সেই ব্যপারে নির্মিত।\n\n### কোথায় এগুলো উজ্জ্বল\n\nওয়াইড-কলাম সিস্টেমগুলো ডিজাইন করা হয়:
\n- উচ্চ রাইট থ্রুপুট (প্রতি সেকেন্ড বহু ইভেন্ট ইনজেস্ট)
হরাইজন্টাল স্কেলিং (নোড যোগ করে ট্র্যাফিক ও ডেটা হ্যান্ডল করা)
প্রেডিক্টেবল, লো-লেটেন্সি রিড যখন সঠিক কী জানেন
\n### স্বাভাবিক অ্যাক্সেস প্যাটার্ন
\nসাধারণ প্যাটার্নটি হলো:
\n- আপনি পার্টিশন কী জানেন (ঐ কী নির্ধারণ করে ডেটা কোথায় থাকে), এবং
আপনি প্রায়ই সেই পার্টিশনের মধ্যে একটি রেঞ্জ পড়েন (উদাহরণ: “ডিভাইস X-এর সব ইভেন্ট 10:00–10:05 এর মধ্যে”)।\n\nএটি টাইম-অর্ডারড ডেটা ও অ্যাপেন্ড-ওজনী ওয়ার্কলোডের জন্য উপযুক্ত।\n\n### ট্রেডঅফ বুঝে নিন\n\nওয়াইড-কলাম ডাটাবেসে ডেটা মডেলিং কোয়েরি-ড্রিভেন: সাধারণত আপনি টেবিল ডিজাইন করেন ঠিক আপনার প্রয়োজনীয় কোয়েরিগুলোর চারপাশে। এতে বিভিন্ন অ্যাক্সেস প্যাটার্ন সাপোর্ট করতে ডেটা ডুপ্লিকেট করা লাগতে পারে।\n\nতারা সাধারণত সীমিত জয়েন এবং কম অ্যাড-হক কোয়েরি অপশন দেয়; যদি আপনার অ্যাপ জটিল সম্পর্ক ও লচিলাভ্য কোয়েরি উপর নির্ভর করে, আপনি অসন্তুষ্ট বোধ করতে পারেন।\n\n### সাধারণ ইউজ কেস
\nওয়াইড-কলাম ডাটাবেস প্রায়শই ব্যবহৃত হয় IoT ইভেন্ট, মেসেজিং ও অ্যাকটিভিটি স্ট্রিম, এবং অন্যান্য বড়-স্কেলের অপারেশনাল ডেটা যেখানে দ্রুত রাইট ও কী-ভিত্তিক রিড relational কুঠিন প্রশ্নের চাইতে বেশি গুরুত্বপূর্ণ।\n\n## গ্রাফ ডাটাবেস: সম্পর্ককে প্রথম শ্রেণির ডেটা হিসেবে নেওয়া\n\nগ্রাফ ডাটাবেস ডেটাকে সেইভাবে রাখে যেভাবে অনেক বাস্তব সিস্টেম আচরণ করে: এক বস্তুকে অন্য বস্তুর সাথে যোগ করে। সম্পর্কগুলো টেবিলে জোর করে ফিট করানোর বদলে, কানেকশনগুলো মডেলের অংশ।\n\n### গ্রাফ মডেল: নোড, এজ, ও প্রপার্টি
\nএকটি গ্রাফ সাধারণত থাকে:
\n- নোড: ইন্টিটি (ব্যক্তি, অ্যাকাউন্ট, ডিভাইস, প্রোডাক্ট)
এজ: তাদের মধ্যকার সম্পর্ক ("follows", "paid", "belongs to", "shipped to")
প্রপার্টি: নোড ও এজের উপর কী-ভ্যালু অ্যাট্রিবিউট (টাইমস্ট্যাম্প, এমাউন্ট, লেবেল)
\nএইভাবে নেটওয়ার্ক, হায়ারার্কি, ও অনেক-থেকে-অনেক সম্পর্কগুলো প্রাকৃতিকভাবে উপস্থাপন করা যায়।\n\n### কেন ট্র্যাভার্সাল জয়েনকে হারাতে পারে\n\nরিলেশনাল ডাটাবেসে সম্পর্ক-ভিত্তিক কোয়েরিগুলো করার জন্য অনেক জয়েন লাগতে পারে। প্রতিটি অতিরিক্ত জয়েন ডেটা বড় হলে জটিলতা ও খরচ বাড়ায়।\n\nগ্রাফ ডাটাবেস ট্র্যাভার্সাল-এর জন্য ডিজাইন করা—একটি নোড থেকে সংযুক্ত নোডে হাঁটা, তারপর সেগুলোর সংযোগে, ইত্যাদি। যখন আপনার প্রশ্নগুলো সাধারণত হয় “2–6 ধাপে সংযুক্ত জিনিস খুঁজো”, ট্র্যাভার্সাল বড় নেটওয়ার্কেও দ্রুত ও পড়তে সহজ থাকবে।\n\n### গ্রাফ বিশেষভাবে যেসব প্রশ্নের জন্য ভাল
\nগ্রাফ ডাটাবেস ভালো:
\n- পথ ও আলাদা হওয়ার ডিগ্রি (শর্টেস্ট পাথ, রিচেবিলিটি)
রেকমেন্ডেশন ("যারা X কিনেছে তারা Y কিনেছে" অথবা "ফ্রেন্ডস অফ ফ্রেন্ডস")
ফ্রড রিংস ও অ্যানোমালি প্যাটার্ন (শেয়ার্ড ডিভাইস, ঠিকানা, পেমেন্ট মেথড)
\n### পরিকল্পনা করার ট্রেডঅফ
\nগ্রাফ একটি পরিবর্তন হতে পারে টিমের জন্য: ডেটা মডেলিং ভিন্ন হবে, এবং কোয়েরি ভাষা (সাধারণত Cypher, Gremlin, বা SPARQL) নতুন হতে পারে। মডেলকে রক্ষণীয় রাখার জন্য সম্পর্কের ধরন ও দিক সম্পর্কে স্পষ্ট কনভেনশন রাখতে হবে।\n\n### কখন রিলেশনাল মডেলই যথেষ্ট
\nযদি আপনার সম্পর্কগুলো সোজা, কোয়েরি মূলত ফিল্টার/এগ্রিগেশন, এবং কিছু জয়েনেই কভার হয়ে যায়, তাহলে রিলেশনাল ডাটাবেস বহু ক্ষেত্রে সহজতম ও যথেষ্ট পছন্দই থাকবে—বিশেষত যখন ট্রানজ্যাকশন ও রিপোর্টিং ইতোমধ্যে কাজ করছে।\n\n## ভেক্টর ডাটাবেস: AI অ্যাপ্লিকেশনের জন্য সিমিলারিটি সার্চ\n\nভেক্টর ডাটাবেস এমন ধরনের প্রশ্নের জন্য ডিজাইন করা: “এই আইটেমটির সাথে কোন আইটেমগুলো সবচেয়ে মিল?” তারা এক্স্যাক্ট ম্যাচের বদলে (ID বা কীওয়ার্ড), এম্বেডিংস—AI মডেল দ্বারা উত्पন্ন সংখ্যাসূচক প্রতিনিধিত্ব—তুলনা করে। সমমত মানে-ভিত্তিক আইটেমগুলো মাল্টি-ডাইমেনশনাল স্পেসে কাছাকাছি থাকে।\n\n### কেন ভেক্টর সেম্যান্টিক সার্চ খুলে দেয়
\nস্বাভাবিক সার্চ শব্দভেদে ফলাফল মিস করতে পারে ("laptop sleeve" বনাম "notebook case")। এম্বেডিংস ব্যবহার করলে সামঞ্জস্য মানে-ভিত্তিক হওয়ায় সিস্টেমটি প্রাসঙ্গিক ফলাফল উঠাতে পারে এমনকি যখন শব্দগুলো মিল না করলেও।\n\n### মূল অপারেশন: সিমিলারিটি + ফিল্টার
\nপ্রধান অপারেশন হল নিয়ারেস্ট নেবার সার্চ: একটি কুয়েরি ভেক্টর দিলে, সবচেয়ে কাছাকাছি ভেক্টরগুলো রিট্রিভ করুন।\n\nবাস্তব অ্যাপগুলোতে সাধারণত সিমিলারিটি সাথে ফিল্টার মিলিয়ে কাজ করে, যেমন:
শুধুমাত্র নির্দিষ্ট কাস্টমারের ডকুমেন্ট দেখাও
একটি প্রোডাক্ট ক্যাটাগরির মধ্যে সীমাবদ্ধ করো
আর্কাইভকৃত বা নিম্ন-গুণমান আইটেম বাদ দাও
RAG (Retrieval-Augmented Generation): LLM উত্তর প্রদানের আগে সবচেয়ে প্রাসঙ্গিক প্যাসেজগুলি আনতে
Semantic search: কনলেজ বেস, সাপোর্ট টিকিট, বা ইন্টারনাল ডকুমেন্ট সার্চ
রিকমেন্ডেশন: কনটেন্ট-ভিত্তিক “ইউজাররা যা দেখেছে/কিনেছে” ধরনের সাজেশন্স
\n### জানার মতো ট্রেডঅফ
\nভেক্টর সার্চ স্পেশালাইজড ইনডেক্সের উপর নির্ভর করে। সেই ইনডেক্সগুলো তৈরি ও আপডেট করতে সময় লাগে এবং অনেক মেমরি ব্যবহার করতে পারে। এছাড়া প্রায়শই আপনাকে উচ্চ রিকল (সত্যিকারের সেরা ম্যাচগুলো আরও খুঁজে পাওয়া) বনাম কম লেটেন্সি (দ্রুত উত্তর) এর মধ্যে পছন্দ করতে হতে পারে।\n\n### রিলেশনাল বা ডকুমেন্ট স্টোরের সাথে জোড়া দেওয়া
\nভেক্টর ডাটাবেস সাধারণত আপনার মেইন ডাটাবেস প্রতিস্থাপন করে না। কমন সেটআপ হল: সোর্স-অফ-ট্রুথ (অর্ডার, ইউজার, ডকুমেন্ট) relational বা document DB-তে রাখুন, এম্বেডিংস + সার্চ ইনডেক্স ভেক্টর DB-তে রাখুন—তারপর ফলাফলগুলো ফিরিয়ে নিয়ে পূর্ণ রেকর্ড ও পারমিশন যাচাই করুন।\n\n## টাইম-সিরিজ ডাটাবেস: সময়ের উপর ভিত্তি করে মেট্রিক্সের জন্য অপ্টিমাইজড\n\nটাইম-সিরিজ ডাটাবেস (TSDB) এমন ডেটার জন্য ডিজাইন করা যা ধারাবাহিকভাবে আসে এবং সবসময় একটি টাইমস্ট্যাম্পের সাথে জড়িত থাকে। ভাবুন CPU ইউসেজ প্রতি 10 সেকেন্ডে, প্রতিটি রিকোয়েস্টের API ল্যাটেন্সি, সেন্সর রিডিং প্রতি মিনিট, বা স্টক প্রাইস প্রতি সেকেন্ডে বদলানো।\n\n### টাইম-সিরিজ ডেটা দেখতে কেমন
\nঅধিকাংশ টাইম-সিরিজ রেকর্ডে থাকে:
\n- টাইমস্ট্যাম্প: কখন মাপটা নেওয়া হয়
মেট্রিক/ভ্যালু: ট্র্যাক করা সংখ্যা (ল্যাটেন্সি, তাপমাত্রা, প্রাইস)
ট্যাগ/লেবেল: ফিল্টার ও গ্রুপিংয়ের জন্য মেটাডেটা (host=web-01, region=us-east, service=checkout)
\nএই স্ট্রাকচার সহজ করে তোলে “সার্ভিসভিত্তিক এরর রেট দেখাও” বা “অঞ্চলভিত্তিক ল্যাটেন্সি তুলনা করো” ধরনের প্রশ্ন।\n\n### TSDB-এর পারফরম্যান্স ফিচার
\nডেটার ভলিউম দ্রুত বাড়তে পারে, তাই TSDB সাধারণত ফোকাস করে:
\n- কমপ্রেশন: সংখ্যাসূচক ভ্যালুগুলো দক্ষভাবে স্টোর করা
ডাউনস্যাম্পলিং: বিস্তারিত সংক্ষেপে রোল-আপ করা (per-second → per-minute → per-hour)
\nএই ফিচারগুলো স্টোরেজ ও কোয়েরি খরচ পূর্বানুমানযোগ্য রাখে।\n\n### সাধারণ কোয়েরি প্যাটার্ন
\nTSDBs তখনি উপযুক্ত যখন আপনাকে সময়ভিত্তিক হিসাব দরকার, যেমন:
\n- রোলিং অ্যাভারেজ (উদাহরণ: 5-মিনিট মুভিং অ্যাভারেজ)
পারসেন্টাইল (p95/p99 ল্যাটেন্সি)
রেট অব চেঞ্জ (requests/second)
থ্রেশহোল্ড বা অ্যানোমালি-এলার্টিং
\n### কোথায় মানায় (এবং কোথায় নয়)
\nসাধারণ ইউজ কেস: মনিটরিং, অবজার্ভেবিলিটি, IoT/সেন্সর, এবং ফাইনান্সিয়াল টিক ডেটা।\n\nট্রেডঅফ: TSDBs জটিল, অ্যাড-হক রিলেশনাল যোগসূত্রের জন্য ভালো নয় (উদাহরণ: “users → teams → permissions → projects” ধরনের গভীর জয়েন)। সেই ক্ষেত্রে রিলেশনাল বা গ্রাফ ডাটাবেস ভালো ফিট।\n\n## ওয়্যারহাউস ও লেকহাউস: সংস্থাগত স্কেলে অ্যানালিটিক্স\n\nএকটি ডেটা ওয়্যারহাউস কেবল একটি ডাটাবেস টাইপ নয়, বরং একটি ওয়ার্কলোড + আর্কিটেকচার: বহু টিম বড় হিস্টোরিকাল ডেটা কোয়েরি করে ব্যবসায়িক প্রশ্নের উত্তর পেতে (রাজস্ব প্রবণতা, চর্ন, ইনভেন্টরি ঝুঁকি)। এটি ম্যানেজড প্রোডাক্ট হিসেবে কেনাবেচা যায়, কিন্তু ওয়্যারহাউস যা করে—কেন্দ্রীভূত, অ্যানালিটিক্যাল, এবং শেয়ার করা—তা এটিকে সংজ্ঞায়িত করে।\n\n### ব্যাচ বনাম স্ট্রিমিং ইনজেশন (সরল সংস্করণ)
\nবেশি ওয়্যারহাউস ডেটা দুইভাবে নেয়:
\n- ব্যাচ ইনজেশন: ডেটা প্রতি ঘণ্টা/প্রতিদিন ল্যান্ড করে (উদাহরণ: অ্যাপ DB-র নাইটলি এক্সপোর্ট)। সস্তা ও সহজ, কিন্তু রিয়েল-টাইম নয়।\n- স্ট্রিমিং ইনজেশন: ইভেন্টগুলো ধারাবাহিকভাবে আসে (ক্লিক, পেমেন্ট, IoT)। আপনি আরও ফ্রেশ নম্বর দেখেন, কিন্তু পাইপলাইন ও মনিটরিং জরুরি।\n\n### কেন এগুলো দ্রুত: কলামনার স্টোর, পার্টিশনিং, ম্যাটেরিয়ালাইজড ভিউ
\nওয়ারহাউস সাধারণত অ্যানালিটিক্সের জন্য অপ্টিমাইজ করা হয় কিছু প্রায়োগিক ট্রিক দিয়ে:
\n- কলামনার স্টোরেজ রিকোয়ায়ার্ড কলামগুলোই পড়ে (এগ্রিগেশনের জন্য ভাল)।
পার্টিশনিং বড় টেবিলগুলো সময়/রিজিয়ন ভিত্তিতে ভাগ করে যাতে কোয়েরি কম ডেটা স্ক্যান করে।
ম্যাটেরিয়ালাইজড ভিউ পূর্বে গণনা করা ফলাফল সংরক্ষণ করে (যেমন “দৈনিক দেশভিত্তিক বিক্রয়”) যাতে ড্যাশবোর্ড দ্রুত চলে।\n\n### স্কেলে গভার্ন্যান্স অপরিহার্য
\nএকবার বহু ডিপার্টমেন্ট একই সংখ্যার উপর নির্ভর করলে, আপনি দরকার হবে অ্যাক্সেস কন্ট্রোল (কে কী দেখতে পারে), অডিট ট্রেইল (কে কোয়েরি/ডেটা বদলে করেছে), এবং লেইনেজ (কোন উৎস থেকে একটি মেট্রিক এসেছে ও কিভাবে রূপান্তর করা হয়েছে)। এগুলো প্রায়ই কোয়েরি গতির চাইতেও বেশি গুরুত্বপূর্ণ।\n\n### কখন লেকহাউস মানায়
\nএকটি লেকহাউস ওয়্যারহাউস-ধাঁচের অ্যানালিটিক্সকে ডেটা লেকের ফ্লেক্সিবিলিটির সাথে মিশায়—উপকারী যখন আপনি চান এক জায়গায় কিউরেটেড টেবিল ও র অ-প্রসেসড ফাইল (লগ, ছবি, সেমি-স্ট্রাকচার্ড ইভেন্ট) রাখবেন, সবকিছু ডুপ্লিকেট না করেই। ভলিউম বেশি, ফরম্যাট ভিন্ন, এবং SQL-সানন্দ রিপোর্টিং দরকার হলে এটি ভাল ফিট।\n\n## মূল ট্রেডঅফ: কনসিস্টেন্সি, স্কেল, ও কোয়েরি প্যাটার্ন\n\nডাটাবেস টাইপ বেছে নেওয়া “সেরা” সম্পর্কে নয়—এটি ফিট সম্পর্কে: আপনি কীভাবে কোয়েরি করবেন, কত দ্রুত, এবং সিস্টেমের অংশগুলি ব্যর্থ হলে কী হবে।\n\n### OLTP বনাম OLAP (ওয়ার্কলোড মেলান)
\nএকটি দ্রুত নিয়মঃ
\n- OLTP (online transactions): অনেক ছোট রিড/রাইট (চেকআউট, লগইন, অর্ডার আপডেট)। অগ্রাধিকার: কম লেটেন্সি, সঠিক আপডেট, বহু সমান্তরাল ইউজার।\n- OLAP (analytics): তুলনামূলকভাবে কম কিন্তু ভারী কোয়েরি বহু সারি স্ক্যান করে (ড্যাশবোর্ড, ট্রেন্ডস)। অগ্রাধিক্য: দ্রুত এগ্রিগেশন, কলামনার স্টোরেজ, কম্পিউট থেকে স্টোরেজ আলাদা করা।\n\nরিলেশনাল DB প্রায়শই OLTP-তে ভালো; কলামনার সিস্টেম, ওয়্যারহাউস, লেকহাউস OLAP-এ ব্যবহৃত হয়।\n\n### CAP সহজ ভাষায়\n\nযখন নেটওয়ার্ক বিভক্তি হলে, সাধারণত আপনি একই সাথে সব তিনটা পাবেন না:
\n- Consistency: সবাই এক সময় একই ডেটা দেখবে
Availability: সিস্টেম উত্তর দেওয়া চালিয়ে যাবে
Partition tolerance: নেটওয়ার্ক স্প্লিটের পরও কাজ চালিয়ে যাবে
\nবহু ডিস্ট্রিবিউটেড ডাটাবেসই ইস্যুর সময় উপলব্ধ থাকতে গিয়ে পরে মিলিয়ে নেয় (eventual consistency)। অন্যরা কড়া সঠিকতা অগ্রাধিকার দেয়, এমনকি এর মানে কিছু অনুরোধ ফিরিয়ে দেয়া হচ্ছে যতক্ষণ না সিস্টেম স্থিতিশীল।\n\n### স্কেলিং: ভার্টিক্যাল, হরাইজন্টাল, ও শার্ডিং
\n- ভার্টিক্যাল স্কেলিং: বড় মেশিন—সরল, কিন্তু সীমা আছে।\n- হরাইজন্টাল স্কেলিং: বেশি মেশিন—অধিক ক্ষমতা, বেশি সমন্বয় দরকার।\n- শার্ডিং: ডেটা নোডে ভাগ (প্রায়ই কাস্টমার ID অনুযায়ী)। এটি স্কেল বাড়ায়, কিন্তু ক্রস-শার্ড কোয়েরি ও ট্রানজ্যাকশন কঠিন হতে পারে।\n\n### ট্রানজ্যাকশন ও কনকারেন্সি বেসিক
\nযদি বহু ইউজার একই ডেটা আপডেট করে, আপনি ক্লিয়ার রুলস চাইবেন। ট্রানজ্যাকশন ধাপগুলোকে “সব-অথবা-কিছুই” করে। লকিং ও ইসলেশন লেভেল সংঘর্ষ প্রতিরোধ করে, কিন্তু থ্রুপুট কমাতে পারে; ঢিলা ইসলামেশন স্পিড বাড়ায় কিন্তু অ্যানোমালি ঘটতে পারে।\n\n### অপারেশনাল দিকগুলো (এইগুলো এড়িয়ে যাবেন না)
\nপ্রারম্ভিকভাবে ব্যাকআপ, রিপ্লিকেশন, ও ডিজাস্টার রিকভারি পরিকল্পনা করুন। রিস্টোর টেস্ট করা, ল্যাগ মনিটর করা, এবং আপগ্রেড করা কত সহজ—এই সব দিন-টু-ডে বিবরণ প্রায়ই কোয়েরি গতির চেয়েও বেশি গুরুত্বপূর্ণ।\n\n## কি ভাবে সঠিক ডাটাবেস টাইপ চয়ন করবেন\n\nপ্রধান ডাটাবেস টাইপগুলোর মধ্যে নির্বাচন করা ট্রেন্ডিংয়ের চেয়ে বেশি আপনার ডেটার সাথে কী করা দরকার তা নির্ভর করে। শুরু করার বাস্তব পদ্ধতিটা হল আপনার কোয়েরি ও ওয়ার্কলোড থেকে পেছন থেকে কাজ করা।\n\n### 1) আপনার কোয়েরি থেকে শুরু করুন (ডেটা নয়)
\nআপনার অ্যাপ বা টিমের সবচেয়ে গুরুত্বপূর্ণ 5–10টি কাজ লিখুন:
\n- আপনি সর্বাধিক কি পড়েন (একক রেকর্ড লুকআপ, ফিল্টার, জয়েন, এগ্রিগেশন, সিমিলারিটি সার্চ)?\n- আপনি সবচেয়ে বেশি কি লিখেন (একক-রো ইনসার্ট, ইভেন্ট স্ট্রিম, আপডেট, বাল্ক লোড)?\n- ফলাফল কতটা তাজা হওয়া উচিত (মিলিসেকেন্ড, সেকেন্ড, মিনিট)?\n\nএটি যে কোনো ফিচার লিস্টকেও দ্রুত সংকুচিত করে।\n\n### 2) আপনার ডেটার আকৃতির সাথে মিলান
\nএটি একটি দ্রুত “আকৃতি” চেকলিস্ট:
\n- স্ট্রাকচার্ড, কনসিস্টেন্ট ফিল্ড → রিলেশনাল ডাটাবেস\n- সেমি-স্ট্রাকচার্ড JSON যা প্রায়ই বদলে → ডকুমেন্ট ডাটাবেস\n- বহু-থেকে-বহু সম্পর্ক আপনি গভীরভাবে ট্র্যাভার্স করবেন → গ্রাফ ডাটাবেস\n- এম্বেডিংস ও নিয়ারেস্ট-নেবার সার্চ → ভেক্টর ডাটাবেস\n- টাইমস্ট্যাম্প সহ ইভেন্ট/মেট্রিক্স ও রোলআপ → টাইম-সিরিজ ডাটাবেস\n- প্রেডিক্টেবল অ্যাক্সেস প্যাটার্নসহ বিশাল স্কেল-আউট টেবিল → ওয়াইড-কলাম ডাটাবেস\n- খুব সহজ get/set কী দ্বারা → কী-ভ্যালু স্টোর\n- ভারী অ্যানালিটিক্স স্ক্যান ও এগ্রিগেশন → কলামনার ডাটাবেস (অথবা ওয়্যারহাউস)
\n### 3) শুরুর দিকে ল্যাটেন্সি, থ্রুপুট, ও খরচ চালক স্পষ্ট করুন
\nপারফরম্যান্স টার্গেট আর্কিটেকচার নির্ধারণ করে। মোটামুটি সংখ্যাগুলো সেট করুন (p95 লেটেন্সি, রিড/রাইট প্রতি সেকেন্ড, ডেটা রিটেনশন)। খরচ সাধারণত আসে:
\n- স্টোরেজ (কাঁচা ডেটা + রেপ্লিকা)\n- কাম্পিউট (কোয়েরি, ETL/ELT, ব্যাকগ্রাউন্ড জব)\n- রিপ্লিকেশন (মাল্টি-রিজিয়ন, HA)\n- ইন্ডেক্সিং (দ্রুত কোয়েরি = বেশি রাইট ওভারহেড)
\n### 4) একটি সরল সিদ্ধান্ত টেবিল
\n| প্রাথমিক ব্যবহার | প্রায়শই সেরা ফিট | কেন |
|---|---|---|
| ট্রানজ্যাকশন, ইনভয়েস, ইউজার অ্যাকাউন্ট | রিলেশনাল (SQL) | শক্ত কনস্ট্রেন্ট, জয়েন, কনসিস্টেন্সি |
| পরিবর্তনশীল ফিল্ড সহ অ্যাপ ডেটা | ডকুমেন্ট | নমনীয় স্কিমা, JSON-প্রাকৃতিক |
| রিয়েল-টাইম ক্যাশ/সেশন স্টেট | কী-ভ্যালু স্টোর | কী-ভিত্তিক দ্রুত লুকআপ |
| ক্লিকস্ট্রিম/মেট্রিক সময়ভিত্তিক | টাইম-সিরিজ | উচ্চ ইনজেস্ট + সময়ভিত্তিক কোয়েরি |
| BI ড্যাশবোর্ড, বড় এগ্রিগেশন | কলামনার | দ্রুত স্ক্যান + কমপ্রেশন |
| সামাজিক/জ্ঞান সম্পর্ক | গ্রাফ | দক্ষ সম্পর্ক ট্র্যাভার্সাল |
| সেম্যান্টিক সার্চ, RAG রিট্রিভাল | ভেক্টর | এম্বেডিংস উপর সিমিলারিটি সার্চ |
| অপারেশনাল ডেটা বিশাল স্কেলে | ওয়াইড-কলাম | হরাইজন্টাল স্কেল, প্রেডিক্টেবল কোয়েরি |
\nঅনেক টিম দুইটি ডাটাবেস ব্যবহার করে: একটি অপারেশনাল (উদাহরণ: রিলেশনাল) এবং একটি অ্যানালিটিক্স (উদাহরণ: কলামনার/ওয়্যারহাউস)। “সঠিক” পছন্দ হলো সেইটি যেটা আপনার সবচেয়ে গুরুত্বপূর্ণ কোয়েরিগুলোকে সবচেয়ে সহজ, দ্রুত, এবং সস্তায় নির্ভরযোগ্যভাবে চালায়।\n\n### দ্রুত নোট যদি আপনি দ্রুত প্রোডাক্ট বিল্ড করছেন
\nপ্রটোটাইপ বা নতুন ফিচার দ্রুত ডেলিভারির ক্ষেত্রে ডাটাবেস সিদ্ধান্ত প্রায়ই আপনার ডেভেলপমেন্ট ওয়ার্কফ্লোর সাথে জড়িত। Koder.ai-এর মতো প্ল্যাটফর্ম (চ্যাট থেকে ওয়েব, ব্যাকএন্ড, মোবাইল অ্যাপ জেনারেট করে) এই সিদ্ধান্তকে আরও কনক্রিট করে তোলে: উদাহরণস্বরূপ, Koder.ai-এর ডিফল্ট ব্যাকএন্ড স্ট্যাক Go + PostgreSQL, যা ট্রানজ্যাকশনাল সঠিকতা ও বিস্তৃত SQL টুলিং দরকার হলে একটি শক্তিশালী শুরুর পয়েন্ট।\n\nপ্রোডাক্ট বড় হলে, আপনি স্পেশালাইজড ডাটাবেস যোগ করতে পারেন (যেমন সেম্যান্টিক সার্চের জন্য ভেক্টর DB বা অ্যানালিটিক্সের জন্য কলামনার ওয়্যারহাউস) এবং PostgreSQL-কে সোর্স-অফ-ট্রুথ হিসেবে রাখুন। মূল কথাটি: আজকের ওয়ার্কলোড থেকে শুরু করুন—এবং দরকার পড়লে পরবর্তীতে “দ্বিতীয় স্টোর” যোগ করার পথ খুলে রাখুন।