🎯 Definicja

Baza dokumentowa to rodzaj bazy NoSQL, która przechowuje dane w formacie półstrukturalnym (zazwyczaj JSON lub BSON), zamiast w tabelach z wierszami i kolumnami. Każdy “rekord” to samodzielny dokument, który może mieć różną strukturę.

🔑 Kluczowe punkty

  • Elastyczny schemat (Schema-less): Dokument A może mieć pole “telefon”, a dokument B go nie mieć. Nie trzeba robić ALTER TABLE.
  • Hierarchia: Dane mogą być zagnieżdżone (tablice, obiekty w obiektach), co świetnie mapuje się na obiekty w kodzie programowania (Java/JS Objects).
  • Skalowalność: Łatwiejsze skalowanie poziome (Sharding) niż w relacyjnych bazach.

📚 Szczegółowe wyjaśnienie

W świecie relacyjnym (SQL), aby zapisać “Fakturę” i jej “Pozycje”, musisz mieć dwie tabele (Invoices, InvoiceLines) i łączyć je JOIN-em. W bazie dokumentowej (MongoDB), Faktura to jeden plik JSON, który zawiera tablicę Pozycji. { "id": 1, "client": "XYZ", "lines": [ { "item": "A", "price": 10 }, { "item": "B", "price": 5 } ] } Odczyt jest atomowy i szybki (czytasz jeden klucz = dostajesz całość).

Wady: Trudniejsze raportowanie analityczne (JOINy są drogie/niemożliwe), ryzyko bałaganu w danych (brak schema enforcement).

💡 Przykład zastosowania

Katalog produktów w e-commerce. Jeden produkt to “Telewizor” (ma przekątną ekranu), drugi to “Buty” (mają rozmiar). W SQL wymagałoby to tabeli Attributes (EAV model) lub wielu kolumn NULL. W MongoDB każdy produkt ma po prostu inny JSON z odpowiednimi polami.

📌 Źródła

👽 Brudnopis

  • JSON, BSON (Binary JSON), XML bases.
  • Przykłady: MongoDB, CouchDB, Couchbase, Amazon DocumentDB.
  • Często używane jako “Operational Datastore” dla aplikacji webowych.