MongoDB 2011

17
NoSQL i MongoDB http://www.mongodb.com/ Czerwiec 2011, Kraków Natalia Stanko

description

NoSQL MongoDB presentation 2011

Transcript of MongoDB 2011

Page 1: MongoDB 2011

NoSQL i MongoDB

http://www.mongodb.com/

Czerwiec 2011, Kraków

Natalia Stanko

Page 2: MongoDB 2011

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

Page 3: MongoDB 2011

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/

Page 4: MongoDB 2011

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?

Page 5: MongoDB 2011

Popularne DBMS zorientowane na dokumenty:

● CouchDB (BBC, meebo.com, LHC)

● Cassandra (Facebook)

● Dynamo (Amazon Web Serwises)

● Voldemort (Linkedln)

● BigTable (Google Engine)

● MongoDB (?)

Page 6: MongoDB 2011

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.

Page 7: MongoDB 2011

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

Page 8: MongoDB 2011

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

Page 9: MongoDB 2011

Tworzenie zapytań

> user = {name: 'Natalia', ulubiony_kolor: ['brązowy', 'biały']}

> db.mybase.save(user)

> db.mybase.save({name: 'Stach', ulubiony_kolor: ['żółty'], hobby: ['żaglówki']})

> db.mybase.find()

[

{ "_id" : { "$oid" : "4dec14eccc93747e680347c3" }, "name" : "Natalia", "ulubiony_kolor" : [ "brązowy", "biały" ] },

{ "_id" : { "$oid" : "4dec159fcc93747e680347c4" }, "hobby" : [ "żaglówki" ], "name" : "Stach", "ulubiony_kolor" : [ "żółty" ] }

]

Page 10: MongoDB 2011

Tworzenie zapytań

> db.mybase.update({name: 'Natalia'}, {'$push': {'ulubiony_kolor': 'łososiowy'}})

> db.mybase.update({name: 'Natalia'}, {'$pull': {'ulubiony_kolor': 'biały'}})

> db.mybase.find({name: 'Natalia'})

[

{ "_id" : { "$oid" : "4dec14eccc93747e680347c3" }, "name" : "Natalia", "ulubiony_kolor" : [ "brązowy", "łososiowy" ] },

{ "_id" : { "$oid" : "4dec159fcc93747e680347c4" }, "hobby" : [ "żaglówki" ], "name" : "Stach", "ulubiony_kolor" : [ "żółty" ] }

]

> db.mybase.find({ulubiony_kolor: 'żółty'})

Page 11: MongoDB 2011

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

Page 12: MongoDB 2011

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

Page 13: MongoDB 2011

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

Page 14: MongoDB 2011

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

Page 15: MongoDB 2011

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

Page 16: MongoDB 2011

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

Page 17: MongoDB 2011

Literatura i źródła:

• MongoDB

http://www.mongodb.org/

• 10gen

http://www.10gen.com

• Dwight Merriman's presentationhttp://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