SlideShare ist ein Scribd-Unternehmen logo
1 von 13
MongoDB - baza danych zorientowana
dokumentowo.
Czy ruch NoSQL ma sens?
Wojciech Sznapka
28.05.2010
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 /
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 /
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 /
•
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 /
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 /
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.
8 /
Czy ktoś tego używa?
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 /
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 /
Przykłady użycia w praktyce
•
Dokument,
•
Dokument zagnieżdżony,
•
Sortowanie, limitowanie,
•
Wyszukiwanie,
•
Regexp,
•
Indeksy,
•
Zaawansowane zapytania,
•
Geospatial index.
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”.
Dziękuję za uwagę!

Weitere ähnliche Inhalte

Ähnlich wie Mongo db baza danych zorientowana dokumentowo

MARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowaniaMARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowaniabartekel
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...twitch.tv/katmpb
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidkŁukasz Grala
 
OpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLOpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLFilip Tepper
 
Liquibase - database structure versioning
Liquibase - database structure versioningLiquibase - database structure versioning
Liquibase - database structure versioningPiotr Pelczar
 
Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerKamil Nowinski
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaWydawnictwo Helion
 
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?Tobias Koprowski
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski Elitmind
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziJakub Wiśniewski
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawWydawnictwo Helion
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oMarcinStachniuk
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Divante
 
Analizy danych w chmurze
Analizy danych w chmurzeAnalizy danych w chmurze
Analizy danych w chmurzenubitech
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Mariusz Szatkowski
 

Ähnlich wie Mongo db baza danych zorientowana dokumentowo (18)

MARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowaniaMARKOS – semantyczne repozytorium otwartego oprogramowania
MARKOS – semantyczne repozytorium otwartego oprogramowania
 
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
Kurs MySQL i SQL, bazy danych - prezentacja ppt, pdf, porady, trening, kurs i...
 
20160316 techstolica - cloudstorage -tidk
20160316  techstolica - cloudstorage -tidk20160316  techstolica - cloudstorage -tidk
20160316 techstolica - cloudstorage -tidk
 
OpenReaktor, Not Only SQL
OpenReaktor, Not Only SQLOpenReaktor, Not Only SQL
OpenReaktor, Not Only SQL
 
Liquibase - database structure versioning
Liquibase - database structure versioningLiquibase - database structure versioning
Liquibase - database structure versioning
 
Nukat2014
Nukat2014Nukat2014
Nukat2014
 
Wyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL ServerWyszukiwanie pełnotekstowe w SQL Server
Wyszukiwanie pełnotekstowe w SQL Server
 
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązaniaJava. Aplikacje bazodanowe. Najlepsze rozwiązania
Java. Aplikacje bazodanowe. Najlepsze rozwiązania
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
1st Silesian Code Camp - Czy jesteśmy gotowi na SQL Azure?
 
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski Elitmind @  Azure User Group #16 Warszawa - Michał Krajewski
Elitmind @ Azure User Group #16 Warszawa - Michał Krajewski
 
Responsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądziResponsive Web Design - kto mało pyta, nie błądzi
Responsive Web Design - kto mało pyta, nie błądzi
 
Sql day2015 fts
Sql day2015 ftsSql day2015 fts
Sql day2015 fts
 
Bazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstawBazy danych i MySQL. Od podstaw
Bazy danych i MySQL. Od podstaw
 
Inicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4oInicjatywa NoSQL na przykładzie db4o
Inicjatywa NoSQL na przykładzie db4o
 
Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13Skalowalność Magento - MMPL13
Skalowalność Magento - MMPL13
 
Analizy danych w chmurze
Analizy danych w chmurzeAnalizy danych w chmurze
Analizy danych w chmurze
 
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
Wordpress dla początkujących szkolenie / warsztat 07/10 Sidebary, Widgety, Mo...
 

Mehr von XSolve

Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksXSolve
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile OfficeXSolve
 
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXSolve
 
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletXSolve
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring BootXSolve
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSXSolve
 
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plXSolve
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolveXSolve
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8XSolve
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXSolve
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryXSolve
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPXSolve
 
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfonyXSolve
 
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideXSolve
 
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXSolve
 
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingXSolve
 
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?XSolve
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowoXSolve
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planningXSolve
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2XSolve
 

Mehr von XSolve (20)

Jak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricksJak migrować kod legacy do Symfony? Tips & tricks
Jak migrować kod legacy do Symfony? Tips & tricks
 
How to Create an Agile Office
How to Create an Agile OfficeHow to Create an Agile Office
How to Create an Agile Office
 
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy SpringXlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
Xlab #10: Integracja zewnętrznych API z wykorzystaniem platformy Spring
 
How to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a ChevroletHow to build a Tesla car for the price of a Chevrolet
How to build a Tesla car for the price of a Chevrolet
 
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Bootxlab #8 - Architektura mikroserwisów na platformie Spring Boot
xlab #8 - Architektura mikroserwisów na platformie Spring Boot
 
xlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJSxlab #7 - ReactJS & NodeJS
xlab #7 - ReactJS & NodeJS
 
How to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.plHow to be agile at Agile Hack?! - agilehack.pl
How to be agile at Agile Hack?! - agilehack.pl
 
PHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolvePHPCon 2016: PHP7 by Witek Adamus / XSolve
PHPCon 2016: PHP7 by Witek Adamus / XSolve
 
Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8Xlab #1: Advantages of functional programming in Java 8
Xlab #1: Advantages of functional programming in Java 8
 
Xlab #2: wzorce projektowe
Xlab #2: wzorce projektoweXlab #2: wzorce projektowe
Xlab #2: wzorce projektowe
 
Piątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous DeliveryPiątek z XSolve - TravisCI & Continuous Delivery
Piątek z XSolve - TravisCI & Continuous Delivery
 
Piątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTPPiątek z XSolve - Bezpieczne nagłówki HTTP
Piątek z XSolve - Bezpieczne nagłówki HTTP
 
Grafowa baza danych i integracja z symfony
Grafowa baza danych  i integracja z symfonyGrafowa baza danych  i integracja z symfony
Grafowa baza danych i integracja z symfony
 
How to outsource Scrum projects - a guide
How to outsource Scrum projects - a guideHow to outsource Scrum projects - a guide
How to outsource Scrum projects - a guide
 
Xsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerceXsolve presentation - programming, bodyleasing, e-commerce
Xsolve presentation - programming, bodyleasing, e-commerce
 
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasingPrezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
Prezentacja firmy XSolve - programowanie, e-commerce, bodyleasing
 
Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?Dlaczego git to nie svn oraz dlaczego to dobrze ?
Dlaczego git to nie svn oraz dlaczego to dobrze ?
 
Programowanie zorientowane aspektowo
Programowanie zorientowane aspektowoProgramowanie zorientowane aspektowo
Programowanie zorientowane aspektowo
 
Agile estimating and planning
Agile estimating and planningAgile estimating and planning
Agile estimating and planning
 
Tailoring of PRINCE2
Tailoring of PRINCE2Tailoring of PRINCE2
Tailoring of PRINCE2
 

Mongo db baza danych zorientowana dokumentowo

  • 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.
  • 8. 8 / Czy ktoś tego używa?
  • 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”.