2. Plan
1. Ruch NoSQL
• Problem skalowalności
• Charakteryzacja NoSQL
• Popularne DBMS zorientowane na dokumenty
2. MongoDB
• Czym jest MongoDB?
• Właściwości MongoDB
• Tworzenie zapytań
• Analogie do SQL
• Możliwości MongoDB
• Współpraca z językami programowania
3. Kiedy wybrać?
4. Wady i problemy
5. Kto korzysta z tego rozwiązania?
6. Literatura i źródła
3. Problem skalowalności
● Większa liczba użytkowników aplikacji - większa liczba
wykonywanych operacji
● Niewydajne JOINy, transakcje
● Rozmiar bazy rośnie – problem z wydajnością
RDBMS nie skalują się dobrze.
NOSQL http://nosql-database.org/
4. Charakteryzacja NoSQL
● Brak relacji
● Stosunkowo nowy sposób składowania danych (XML, JSON)
● Alternatywa dla relacyjnych i obiektowych baz danych
● Hybrydowość
● Skalowalność
● Brak stałego schematu struktury danych, brak migracji
schematów baz
● Redukcja ORM, mapowania, migracji
● Bazy następnej generacji?
5. Popularne DBMS zorientowane
na dokumenty:
● CouchDB (BBC, meebo.com, LHC)
● Cassandra (Facebook)
● Dynamo (Amazon Web Serwises)
● Voldemort (Linkedln)
● BigTable (Google Engine)
● MongoDB (?)
6. Czym jest MongoDB?
MongoDB jest systemem zarządzania bazą danych napisanym w
języku C++. Pierwsze wydanie miało miejsce w 2009 r. Rozwiązanie
jest dostępne na licencji GNU AGPL.
Twórcy: Dwight Merriman i Eliot Horowitz
Producent: www.10gen.com/
Download: http://www.mongodb.org/downloads
Aktualna wersja: 1.6.5 z 2010 r.
7. Właściwości MongoDB
● Open Source
● Społeczność
● Zorientowane dokumentowo
● Struktura składowania danych:
● Składnia JavaScript
● JSON
● Brak stałego schematu
● Klucz: wartość
● BSON
● Updates in Place
8. Właściwości MongoDB
● Wybranie i zastosowanie zalet z metody przechowywania
danych w formacie klucz: wartość (JSON), co da szybkość i
skalowalność oraz zalet relacyjnych baz danych, co da
bogatą funkcjonalność
● Pełne wsparcie dla indeksów
● Replikacja - wysoka dostępność do danych
● GridFS
● Rozwiązania GIS
● Szybkość i wydajność
● Wysoka skalowalność pozioma
11. Analogie do SQL
MongoDB SQL
dokument rekord
kolekcja tablica
id klucz główny
zagnieżdżenie relacja 1:n
tablica obiektów relacja m:n
indeks indeks
12. Możliwości MongoDB
● Duża liczba obsługiwanych typów danych
● Zapytania do zagnieżdżonych pól dokumentów
● Możliwość składowania plików w bazie
● Architektura zaprojektowana z myślą o łatwej replikacji
● Instalacja możliwa na wszystkich platformach, dostępny
również w systemach zarządzania pakietami dla konkretnej
platformy
13. Współpraca z językami
programowania
Dostęp do bazy możliwy jest przy wykorzystaniu sterowników.
Oficjalnie w tej chwili są dostępne dla języków:
C, C++, Java, JavaScript, Perl, PHP, Python, Ruby
Sterowniki nieoficjalne dla:
C#, .NET, Clojure, ColdFusion, Delphi, Erlang, Factor,
Fantom, F#, Go, Groovy, Haskell, Lua, Node.js, PowerShell,
Scala, Scheme, Smalltalk
14. Kiedy wybrać?
● Aplikacje działające w czasie rzeczywistym: zapis danych,
aktualizacja i odczyt
● Śledzenie w czasie rzeczywistym parametrów wydajności na
swoich stronach internetowych, statystyki (odsłony itp.)
● Archiwizacja danych, zdarzeń
● Serwisy i aplikacje, które mają wysokie wymagania
wydajnościowe:
● duża liczba użytkowników, serwisy gromadzące duża ilość
danych
● Caching
15. Wady i problemy
● Brak obsługi transakcji
● Systemy bankowe, księgowe itp.
● Inne, w których krytycznie ważna jest spójność danych i
pewność wykonania operacji zapisu (sklepy, rezerwacje)
● Problemy wymagające użycia SQL
● Życie bez JOINów wymaga odpowiedniego przygotowania
modeli danych
● Sortowanie i filtrowanie danych
16. Kto korzysta z tego
rozwiązania?
http://www.10gen.com/customers
• Diaspora
https://joindiaspora.com/
• SourceForge
http://sourceforge.net/
• LHC
• The New York Times
http://www.nytimes.com
17. Literatura i źródła:
• MongoDB
http://www.mongodb.org/
• 10gen
http://www.10gen.com
• Dwight Merriman's presentation
http://assets.leadit.us/mysql/MongoDB-10gen-CEO-Dwight-Merriman-presenting-at-NYC-MySQL-Group-at-Sun-Microsystems.pdf
• Document-oriented database
http://en.wikipedia.org/wiki/Document-oriented_database
• MongoDB is Web Scale
http://nosql.mypopescu.com/post/1016320617/mongodb-is-web-scale
• GNU AGPL
http://www.gnu.org/licenses/agpl.html
• Wojciech Sznapka, MongoDb - baza danych zorientowana dokumentowo
http://www.slideshare.net/xsolve/mongo-db-baza-danych-zorientowana-dokumentowo
• NoSQL DB
http://ai.ia.agh.edu.pl/wiki/pl:dydaktyka:ztb:2010:projekty:nosql_mongodb:start