Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
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
•...
Problem skalowalności
● Większa liczba użytkowników aplikacji - większa liczba
wykonywanych operacji
● Niewydajne JOINy, t...
Charakteryzacja NoSQL
● Brak relacji
● Stosunkowo nowy sposób składowania danych (XML, JSON)
● Alternatywa dla relacyjnych...
Popularne DBMS zorientowane
na dokumenty:
● CouchDB (BBC, meebo.com, LHC)
● Cassandra (Facebook)
● Dynamo (Amazon Web Serw...
Czym jest MongoDB?
MongoDB jest systemem zarządzania bazą danych napisanym w
języku C++. Pierwsze wydanie miało miejsce w ...
Właściwości MongoDB
● Open Source
● Społeczność
● Zorientowane dokumentowo
● Struktura składowania danych:
● Składnia Java...
Właściwości MongoDB
● Wybranie i zastosowanie zalet z metody przechowywania
danych w formacie klucz: wartość (JSON), co da...
Tworzenie zapytań
> user = {name: 'Natalia', ulubiony_kolor: ['brązowy', 'biały']}
> db.mybase.save(user)
> db.mybase.save...
Tworzenie zapytań
> db.mybase.update({name: 'Natalia'}, {'$push': {'ulubiony_kolor':
'łososiowy'}})
> db.mybase.update({na...
Analogie do SQL
MongoDB SQL
dokument rekord
kolekcja tablica
id klucz główny
zagnieżdżenie relacja 1:n
tablica obiektów re...
Możliwości MongoDB
● Duża liczba obsługiwanych typów danych
● Zapytania do zagnieżdżonych pól dokumentów
● Możliwość skład...
Współpraca z językami
programowania
Dostęp do bazy możliwy jest przy wykorzystaniu sterowników.
Oficjalnie w tej chwili są...
Kiedy wybrać?
● Aplikacje działające w czasie rzeczywistym: zapis danych,
aktualizacja i odczyt
● Śledzenie w czasie rzecz...
Wady i problemy
● Brak obsługi transakcji
● Systemy bankowe, księgowe itp.
● Inne, w których krytycznie ważna jest spójnoś...
Kto korzysta z tego
rozwiązania?
http://www.10gen.com/customers
• Diaspora
https://joindiaspora.com/
• SourceForge
http://...
Literatura i źródła:
• MongoDB
http://www.mongodb.org/
• 10gen
http://www.10gen.com
• Dwight Merriman's presentation
http:...
Upcoming SlideShare
Loading in …5
×

MongoDB 2011

634 views

Published on

NoSQL MongoDB presentation 2011

Published in: Technology
  • Be the first to comment

MongoDB 2011

  1. 1. NoSQL i MongoDB http://www.mongodb.com/ Czerwiec 2011, Kraków Natalia Stanko
  2. 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. 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. 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. 5. Popularne DBMS zorientowane na dokumenty: ● CouchDB (BBC, meebo.com, LHC) ● Cassandra (Facebook) ● Dynamo (Amazon Web Serwises) ● Voldemort (Linkedln) ● BigTable (Google Engine) ● MongoDB (?)
  6. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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

×