1. MongoDB - baza danych zorientowana
dokumentowo.
Czy ruch NoSQL ma sens?
Wojciech Sznapka
28.05.2010
2. 2 /
Plan
•
Ruch NoSQL – definicja i rozwiązania
•
MongoDB – opis i możliwości
•
Zastosowania MongoDB
•
Kto używa MongoDB?
•
Analogie do baz SQL
•
Migracje, a raczej ich brak
•
Przykłady użycia „na żywo”
•
Czy ruch NoSQL ma sens?
3. 3 /
Ruch NoSQL
•
Promuje klasę nierelacyjnych baz jako
alternatywę dla tradycyjnych baz relacyjnych,
nazywając je czasami bazami następnej
generacji,
•
Te bazy nie posiadają sztywnych schematów,
unikają poleceń JOIN i dobrze się skalują.
4. 4 /
Ruch NoSQL - rozwiązania
Bazy zorientowane dokumentowo:
•
MongoDB,
•
Apache CouchDB.
Bazy typu klucz/wartość:
•
BigTable (Google App Engine),
•
Dynamo (Amazon Web Services),
•
Apache Cassandra (Facebook),
•
Project Voldemort (LinkedIn).
5. 5 /
•
Baza danych zorientowana na przechowywanie
dokumentów JSON,
•
Bardzo wydajna (napisana w C++),
•
Skalowalna,
•
Bezschematowa – prostota i elastyczność,
•
Wsparcie dla wielu platform i języków
programowania,
•
Rozwijana od Sierpnia 2007, pierwsze wydanie w
2009,
6. 6 /
Możliwości MongoDB
•
Przechowywanie dynamicznych dokumentów JSON
(reprezentowanych wewnętrznie jako BSON – Binary
JSON),
•
Pełne wsparcie dla indeksów,
•
Replikacja i wysoka dostępność,
•
Auto-Sharding (skalowanie poziome),
•
Złożone zapytania (jako dokumenty),
•
Map/Reduce – elastyczny mechanizm agregacji i
przetwarzania danych,
•
GridFS – przechowywanie plików w bazie.
7. 7 /
Zastosowania
TAK:
•
Zastosowanie webowe,
•
Wysokie obciążenia / wymóg skalowalności,
•
Cache'owanie,
•
Rozwiązań GIS (wsparcie dla indeksów 2d –
szerokość/wysokość geograficzna).
NIE:
•
Wysoka transakcyjność,
•
Problemy wymagające SQLa.
9. 9 /
Analogie do baz SQL
MongoDB Baza SQL
Dokument Wiersz / rekord
Kolekcja Tablica
_id Klucz główny
Zagnieżdżenie Relacja 1:N
Tablica referencji do
obiektów
Relacja M:N
Indeks Indeks
10. 10 /
Migracje, a raczej ich brak
MongoDB jest bezschematowa, więc jeśli
potrzebujemy nowego pola w dokumencie to po
prostu zaczynamy go używać w aplikacji, bez
konieczności modyfikacji czegokolwiek w bazie
(można zapomnieć o ALTER TABLE, czy symfony
doctrine:migrate)
11. 11 /
Przykłady użycia w praktyce
•
Dokument,
•
Dokument zagnieżdżony,
•
Sortowanie, limitowanie,
•
Wyszukiwanie,
•
Regexp,
•
Indeksy,
•
Zaawansowane zapytania,
•
Geospatial index.
12. 12 /
Czy ruch NoSQL ma sens?
Tak, jeśli termin NoSQL nie będzie nadużywany
jako całkowite porzucenie baz relacyjnych, ale jako
„Not only SQL”.