SlideShare a Scribd company logo
1 of 17
Download to read offline
NoSQL i MongoDB
http://www.mongodb.com/
Czerwiec 2011, Kraków
Natalia Stanko
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
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/
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?
Popularne DBMS zorientowane
na dokumenty:
● CouchDB (BBC, meebo.com, LHC)
● Cassandra (Facebook)
● Dynamo (Amazon Web Serwises)
● Voldemort (Linkedln)
● BigTable (Google Engine)
● MongoDB (?)
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.
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
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
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" ] }
]
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'})
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
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
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
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
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
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
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

More Related Content

Similar to MongoDB 2011

The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
GOG.com dev team
 

Similar to MongoDB 2011 (20)

It od kuchni w nokaut.pl
It od kuchni w nokaut.plIt od kuchni w nokaut.pl
It od kuchni w nokaut.pl
 
IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
Paleta możliwości web developera
Paleta możliwości web developeraPaleta możliwości web developera
Paleta możliwości web developera
 
Mongodb with Rails
Mongodb with RailsMongodb with Rails
Mongodb with Rails
 
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
Zrób dobrze swojej komórce - programowanie urządzeń mobilnych z wykorzystanie...
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
 
The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )The story of GOG.com Cache - 4developers 2014 ( PL )
The story of GOG.com Cache - 4developers 2014 ( PL )
 
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł StefańskiPLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
PLNOG16: Integracja Ceph w OpenStack - status i przyszłość, Paweł Stefański
 
Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015Encje w drupalu - DrupalCamp Wroclaw 2015
Encje w drupalu - DrupalCamp Wroclaw 2015
 
The story of GOG.com Cache - PHPers 2014 ( PL )
 The story of GOG.com Cache - PHPers 2014 ( PL ) The story of GOG.com Cache - PHPers 2014 ( PL )
The story of GOG.com Cache - PHPers 2014 ( PL )
 
The story of GOG.com Cache
The story of GOG.com Cache The story of GOG.com Cache
The story of GOG.com Cache
 
Wprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache SparkWprowadzenie do Big Data i Apache Spark
Wprowadzenie do Big Data i Apache Spark
 
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWSAnaliza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
Analiza semantyczna artykułów prasowych w 5 sprintów z użyciem AWS
 
DynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornychDynamoDB – podstawy modelowania danych dla opornych
DynamoDB – podstawy modelowania danych dla opornych
 
multi-tier cache at gog.com - 4developers
multi-tier cache at gog.com -  4developersmulti-tier cache at gog.com -  4developers
multi-tier cache at gog.com - 4developers
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidk
 
Struktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią DrupalStruktura i własności systemu zarządzania treścią Drupal
Struktura i własności systemu zarządzania treścią Drupal
 

More from Natalia Stanko

Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
Moja przygoda z programowaniem - Rails Girls Wroclaw 2014Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
Natalia Stanko
 
Women in Technology Kraków
Women in Technology KrakówWomen in Technology Kraków
Women in Technology Kraków
Natalia Stanko
 

More from Natalia Stanko (19)

Recovering from burnout
Recovering from burnoutRecovering from burnout
Recovering from burnout
 
Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
Moja przygoda z programowaniem - Rails Girls Wroclaw 2014Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
Moja przygoda z programowaniem - Rails Girls Wroclaw 2014
 
Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010Ruby, Ruby on Rails 2010
Ruby, Ruby on Rails 2010
 
Projektowanie i przetwarzanie danych w SQL
Projektowanie i przetwarzanie danych w SQLProjektowanie i przetwarzanie danych w SQL
Projektowanie i przetwarzanie danych w SQL
 
SQLite 2010
SQLite 2010SQLite 2010
SQLite 2010
 
Przegląd języków programowania
Przegląd języków programowaniaPrzegląd języków programowania
Przegląd języków programowania
 
The power of events
The power of eventsThe power of events
The power of events
 
Poznaj GITa - Natalia Stanko
Poznaj GITa - Natalia StankoPoznaj GITa - Natalia Stanko
Poznaj GITa - Natalia Stanko
 
12. spotkanie Women in Technology Kraków
12. spotkanie Women in Technology Kraków12. spotkanie Women in Technology Kraków
12. spotkanie Women in Technology Kraków
 
11. spotkanie Women in Technology Kraków
11. spotkanie Women in Technology Kraków11. spotkanie Women in Technology Kraków
11. spotkanie Women in Technology Kraków
 
9. spotkanie Women in Technology w Krakowie
9. spotkanie Women in Technology w Krakowie9. spotkanie Women in Technology w Krakowie
9. spotkanie Women in Technology w Krakowie
 
8. spotkanie Women in Technology w Krakowie
8. spotkanie Women in Technology w Krakowie8. spotkanie Women in Technology w Krakowie
8. spotkanie Women in Technology w Krakowie
 
Geeklist #hack4good Kraków
Geeklist #hack4good KrakówGeeklist #hack4good Kraków
Geeklist #hack4good Kraków
 
Women in Technology Kraków #6
Women in Technology Kraków #6Women in Technology Kraków #6
Women in Technology Kraków #6
 
Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2Prostota i mozliwosci symfony2
Prostota i mozliwosci symfony2
 
Hack4good 0.5 Kraków Challenges
Hack4good 0.5 Kraków ChallengesHack4good 0.5 Kraków Challenges
Hack4good 0.5 Kraków Challenges
 
Hack4good 0.5 Kraków tematy (PL)
Hack4good 0.5 Kraków tematy (PL)Hack4good 0.5 Kraków tematy (PL)
Hack4good 0.5 Kraków tematy (PL)
 
Hack4good Idea (PL)
Hack4good Idea (PL)Hack4good Idea (PL)
Hack4good Idea (PL)
 
Women in Technology Kraków
Women in Technology KrakówWomen in Technology Kraków
Women in Technology Kraków
 

MongoDB 2011

  • 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
  • 9. 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" ] } ]
  • 10. 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'})
  • 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