Firebase এর হাতেখড়ি (পর্ব ৪) – Firestore vs Realtime Database

Firestore vs Realtime Database

এতদিন Authentication নিয়ে কাজ করলাম। এবার আসল প্রশ্নে আসি — ইউজারের ডেটা রাখব কোথায়? Firebase দুইটা আলাদা ডেটাবেজ অপশন দেয়: Realtime Database আর Firestore। নাম শুনে গুলিয়ে ফেলা স্বাভাবিক, তাই এই পর্বে দুটোর পার্থক্য স্পষ্ট করে বুঝব — যাতে পরের পর্বগুলোতে সঠিক সিদ্ধান্ত নিয়ে এগোতে পারি।

দুটোই আসলে কী?

Realtime Database (RTDB) হলো Firebase-এর আদি ডেটাবেজ — পুরো ডেটাবেজটা একটামাত্র বিশাল JSON ট্রিFirestore পরে এসেছে, আধুনিক ও বেশি স্ট্রাকচার্ড — ডেটা থাকে Document আর Collection আকারে (অনেকটা ফোল্ডার আর ফাইলের মতো)।

// Realtime Database — একটাই বড় JSON ট্রি
{
  "books": {
    "book1": { "title": "অপরাজিত", "author": "বিভূতিভূষণ" },
    "book2": { "title": "পথের পাঁচালী", "author": "বিভূতিভূষণ" }
  },
  "users": {
    "user1": { "name": "আরিফ" }
  }
}

// Firestore — Collection আর Document
books (collection)
  └── book1 (document) { title: "অপরাজিত", author: "বিভূতিভূষণ" }
  └── book2 (document) { title: "পথের পাঁচালী", author: "বিভূতিভূষণ" }
users (collection)
  └── user1 (document) { name: "আরিফ" }

পাশাপাশি তুলনা

বিষয় Realtime Database Firestore
ডেটা গঠন একটা বড় JSON ট্রি Collection ও Document
Query ক্ষমতা সীমিত, নেস্টেড ডেটায় কঠিন শক্তিশালী, একাধিক ফিল্ডে ফিল্টার
স্কেলেবিলিটি বড় হলে স্লো হতে পারে বড় ডেটাসেটেও ভালো পারফরম্যান্স
অফলাইন সাপোর্ট আছে (মোবাইলে ভালো) আছে, ওয়েবেও শক্তিশালী
লেটেন্সি খুবই কম — রিয়েল-টাইমে দ্রুত কম, কিন্তু RTDB-এর চেয়ে সামান্য বেশি
ফ্রি টিয়ার সহজ, স্টোরেজ ভিত্তিক Read/Write অপারেশন ভিত্তিক
সেরা ব্যবহার চ্যাট, লাইভ স্কোর, প্রেজেন্স স্ট্যাটাস ব্লগ, ই-কমার্স, জটিল অ্যাপ ডেটা

কোড দেখলে পার্থক্যটা আরও স্পষ্ট হয়

একটা বই যোগ করার উদাহরণ দুই ডেটাবেজে কেমন দেখতে —

// Realtime Database — ডেটা লেখা
import { ref, push } from "firebase/database";
import { db } from "./firebase";

await push(ref(db, "books"), {
  title: "অপরাজিত",
  author: "বিভূতিভূষণ",
});
// Firestore — ডেটা লেখা
import { collection, addDoc } from "firebase/firestore";
import { firestore } from "./firebase";

await addDoc(collection(firestore, "books"), {
  title: "অপরাজিত",
  author: "বিভূতিভূষণ",
});

ফাংশনের নাম আলাদা হলেও ধারণাটা একই — একটা নির্দিষ্ট লোকেশনে ডেটা লেখা হচ্ছে। মূল পার্থক্য আসে যখন একাধিক শর্ত দিয়ে ডেটা খুঁজতে হয় — সেখানে Firestore অনেক এগিয়ে।

// Firestore — একাধিক শর্তে খোঁজা সহজ
import { collection, query, where, getDocs } from "firebase/firestore";

const q = query(
  collection(firestore, "books"),
  where("author", "==", "বিভূতিভূষণ"),
  where("year", ">", 1950)
);
const snapshot = await getDocs(q);

Realtime Database-এ এই ধরনের একাধিক শর্তে ফিল্টার করা সরাসরি সম্ভব না — সাধারণত সব ডেটা এনে JavaScript দিয়ে ফিল্টার করতে হয়, যা বড় ডেটাসেটে অদক্ষ হয়ে পড়ে।

তাহলে কোনটা বেছে নেবেন?

  • Realtime Database বেছে নিন যদি — চ্যাট অ্যাপ, লাইভ কোলাবোরেশন, অনলাইন/অফলাইন প্রেজেন্স, অথবা সিম্পল ও দ্রুত রিয়েল-টাইম আপডেট দরকার হয়
  • Firestore বেছে নিন যদি — জটিল কোয়েরি লাগবে, ডেটা স্ট্রাকচার্ড রাখতে চান, বড় স্কেলে যাওয়ার প্ল্যান আছে, অথবা ই-কমার্স/ব্লগ/CMS টাইপ অ্যাপ বানাচ্ছেন

এই সিরিজে আমরা যা করব: যেহেতু ArifStack-এর প্রজেক্টগুলোতে (Pathok Ghar, CastFM) সবসময় Realtime Database ব্যবহার হয়েছে, আর এটা শেখার জন্যও সহজবোধ্য, তাই বাকি সিরিজে আমরা মূলত Realtime Database নিয়ে গভীরভাবে কাজ করব। তবে Firestore-এর ধারণাটা মাথায় রাখলে ভবিষ্যতে বড় প্রজেক্টে সিদ্ধান্ত নিতে সুবিধা হবে।

ইন্টারেক্টিভ — কোন ডেটাবেজ কোন কাজের জন্য?

নিচে কিছু বাস্তব প্রজেক্ট আইডিয়া দেওয়া আছে — ক্লিক করে দেখো কোনটার জন্য কোন ডেটাবেজ বেশি মানানসই।

নিজে চেষ্টা করো

Exercise:

  1. Firebase Console-এ গিয়ে দুটো অপশনই দেখো — Build → Realtime Database আর Build → Firestore Database। দুটোর সেটআপ স্ক্রিন কেমন আলাদা লক্ষ করো।
  2. নিজের একটা প্রজেক্ট আইডিয়া (যেমন Todo App) নিয়ে চিন্তা করো — সেটার জন্য কোন ডেটাবেজ বেশি মানানসই হবে, আর কেন — এক প্যারাগ্রাফে লেখো।
  3. উপরের JSON স্ট্রাকচার দুটো (RTDB-এর ট্রি বনাম Firestore-এর Collection/Document) কাগজে এঁকে পার্থক্যটা নিজের ভাষায় ব্যাখ্যা করো।

পরের পর্বে যা থাকছে

পরের পর্ব থেকে আমরা হাতেকলমে Realtime Database নিয়ে কাজ শুরু করব — Database তৈরি, JSON স্ট্রাকচার ডিজাইন করা, আর বেসিক Security Rules লেখা।

একটি মন্তব্য পোস্ট করুন

নবীনতর পূর্বতন

যোগাযোগ ফর্ম