SlideShare ist ein Scribd-Unternehmen logo
1 von 40
NOSQL
 dlaczego go nie potrzebujesz?
CZEŚĆ!
jestem filip
PLAN


 co to jest nosql?

   dlaczego nie?

   dlaczego tak?

kupuję to, co dalej?
IN COMPUTING, NOSQL IS A
 TERM USED TO DESIGNATE
 DATABASE MANAGEMENT
SYSTEMS THAT DIFFER FROM
   CLASSIC RELATIONAL
 DATABASE MANAGEMENT
  SYSTEMS (RDBMSES) IN
      SOME WAY.
NO SQL?
NOT ONLY SQL
http://www.flickr.com/photos/emagic/56206868
SKALOWALNOŚĆ
NOSQL JEST...
nierelacyjny
rozproszony
horyzontalnie
 skalowalny
nieustrukturyzowany
replikowalny
ostatecznie zgodny
SQL A NOSQL

           ACID               BASE

atomic              basic availability

consistent          soft state

isolated            eventually consistent

durable
NOSQL


baza klucz-wartość

 baza kolumnowa

baza dokumentowa
PROJEKTOWANIE APLIKACJI
CAP THEOREM
ADMINISTRACJA / DEVOPS
MONGODB

• baza   dokumentowa

• wydajna

• wysokodostępna

• skalowalna

•z   rozbudowanym językiem zapytań
MONGODB

• JSON, GridFS

• indeksy    geograficzne

• operacje    atomowe

• map   / reduce

• kolekcje   n-elementowe
REDIS


• klucz-wartość

• przechowujący   struktury danych

• łatwo   replikowalny

• (wkrótce)   klastrowalny
REDIS


• persystencja

• pamięc     wirtualna

• pipeline

• pub   / sub
REDIS - TYPY DANYCH

• łańcuchy   tekstowe

• hashe

• listy

• kolekcje

• kolekcje   posortowane
ONE SIZE DOESN’T FIT ALL
ZA, A NAWET PRZECIW
COŚ JESZCZE?
WEBCLUSTER.PL
DZIĘKUJĘ!
  pytania?

Weitere ähnliche Inhalte

Andere mochten auch

Indexing and Query Optimizer (Richard Kreuter)
Indexing and Query Optimizer (Richard Kreuter)Indexing and Query Optimizer (Richard Kreuter)
Indexing and Query Optimizer (Richard Kreuter)MongoDB
 
Indexing and Query Optimizer (Aaron Staple)
Indexing and Query Optimizer (Aaron Staple)Indexing and Query Optimizer (Aaron Staple)
Indexing and Query Optimizer (Aaron Staple)MongoSF
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)MongoDB
 
Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDBMongoDB
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB
 
Webinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBWebinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBMongoDB
 

Andere mochten auch (8)

Phplx mongodb
Phplx mongodbPhplx mongodb
Phplx mongodb
 
Indexing and Query Optimizer (Richard Kreuter)
Indexing and Query Optimizer (Richard Kreuter)Indexing and Query Optimizer (Richard Kreuter)
Indexing and Query Optimizer (Richard Kreuter)
 
Indexing and Query Optimizer (Aaron Staple)
Indexing and Query Optimizer (Aaron Staple)Indexing and Query Optimizer (Aaron Staple)
Indexing and Query Optimizer (Aaron Staple)
 
Indexing
IndexingIndexing
Indexing
 
Fast querying indexing for performance (4)
Fast querying   indexing for performance (4)Fast querying   indexing for performance (4)
Fast querying indexing for performance (4)
 
Indexing with MongoDB
Indexing with MongoDBIndexing with MongoDB
Indexing with MongoDB
 
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
MongoDB Analytics: Learn Aggregation by Example - Exploratory Analytics and V...
 
Webinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDBWebinar: Working with Graph Data in MongoDB
Webinar: Working with Graph Data in MongoDB
 

Mehr von Filip Tepper

Getting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroGetting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroFilip Tepper
 
WebClusters, Redis
WebClusters, RedisWebClusters, Redis
WebClusters, RedisFilip Tepper
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - BiografiaFilip Tepper
 
API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?Filip Tepper
 

Mehr von Filip Tepper (6)

ls &
ls &ls &
ls &
 
Getting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to heroGetting the most out of your Ruby on Rails applications: from zero to hero
Getting the most out of your Ruby on Rails applications: from zero to hero
 
WebClusters, Redis
WebClusters, RedisWebClusters, Redis
WebClusters, Redis
 
Pan Oponka - Biografia
Pan Oponka - BiografiaPan Oponka - Biografia
Pan Oponka - Biografia
 
Redis at WRUG
Redis at WRUGRedis at WRUG
Redis at WRUG
 
API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?API. Czy warto i dlaczego tak?
API. Czy warto i dlaczego tak?
 

NoSQL i dlaczego go nie potrzebujesz? [OlCamp]

Hinweis der Redaktion

  1. dlaczego go nie potrzebujesz dzisiaj, ale jeśli masz szczęście - możesz potrzebować go jutro\nnie chce was zniechecic - raczej pokazac dlaczego jest to trudne\n
  2. dziękuję za zaproszenie, 100% ruby, okolice Javy, Freeport Metrics, pozostałe 100% obj-c\njestem praktykiem, nie teoretykiem - nie jestem z wykształcenia informatykiem w prezentacji będzie dużo skrótów, uproszczeń i założeń a priori - bo to zbyt szeroki temat na niecałe pół godziny, a ja nie jestem aż tak mądry ;-)\n
  3. \n
  4. na początek definicja - co to jest nosql\nkto z was miał styczność z nosql w produkcji\n
  5. definicja z wikipedii nie definiuje pojęcia prezycyjnie\na w zasadzie niczego nie precyzuje\nogólnie - system przetrzymywania danych, podobny do bazy danych, ale nią nie będący - masło maślane\n
  6. definicje są co najmniej 2 - pierwsza z nich wyklucza korzystanie z jakichkolwiek baz sql-owych\nta definicja nam się nie podoba\n
  7. tak jak ja to rozumiem\nnie brak SQL-a, ale “nie tylko SQL”\nnosql jedynie jako pomoc dla relacyjnych baz danych\ntak naprawdę nie ma jednoznacznej definicji - przedstawiam swój punkt widzenia\n
  8. po co w ogóle powstał nosql?\ndo czego Tobie może przydać się nosql\n
  9. pierwszy i podstawowy to skalowalność - nosql ma być magicznym rozwiązaniem, które ulży wszystkim problemom związanym ze skalowalnością - został tak naprawdę stworzony przez firmy, które musiały rozwiązać konkretny problem - dzisiaj się to zmienia, postawają wyspecjalizowane firmy tworzące takie rozwiązania\n
  10. baaaaaaardzo duuuuuuużo danych\npartycjonowanie pozwala na względnie łatwe przetrzymywanie ogromnej ilości danych\nw zwykłych bazach zwykle trzeba robić to na poziomie kodu (sharding)\n\n
  11. jako baza danych\n
  12. nierelacyjny, nie można wykonywać joinów, pobranie każdego zasobu wymaga osobnego zapytania do bazy danych, nie da się wyciągnać skomplikowanych struktur, które są ze sobą powiązane, nie da się wykonywać obliczeń - tak naprawdę przy pewnej skali chcesz wszystko obsługiwać asynchronicznie\n
  13. rozproszony - w uproszczeniu - jest centrum, które bazą steruje, ale dane w niej zawarte są rozrzucone po wielu serwerach, a nawet lokalizacjach\n
  14. horyzontalnie skalowalny - skalowanie następuje poprzez dorzucanie maszyn, a nie dorzucanie sprzętu do pojedynczej maszyny - sprzęt tanieje, ale ilość pamięci, którą jesteśmy w stanie umieścić w serwerze zawsze będzie ograniczona (i mniejsza od najbardziej wyrafinowanych wymagań)\n
  15. nieustrukturyzowany - tak naprawdę w zaprzeczeniu do bazy danych, nie per se - nie ma kolumn, ale nawet klucz-wartość jest strukturą\n
  16. łatwo replikowalny - dane można trzymać w wielu kopiach i nie powinno to być skomplikowane\n
  17. ostatecznie zgodny - to najbardziej skomplikowany temat - po odpowiednio długim czasie od ostatniej aktualizacji bazy będzie ona taka sama we wszystkich kopiach\n
  18. base - brak transakcji, prostsze sturktury i operacje\ncap theorem - jeżeli ktoś chce poznać temat dogłębiej - inna sprawa, że większości ludzi ten problem nigdy nie będzie dotyczył bo jestem ważny tylko dla naprawdę ważnych systemów\n
  19. typy nosql baz danych (opisać poszczególne typy)\nkv - memcached, nosql\nbaza kolumnowa - cassandra, simpledb, bigtable\ndokumentowa - couchdb, mongodb\n
  20. i teraz trzeba sobie odpowiedzieć na podstawowe pytanie - dlaczego nie chce mieć no sql\njak myślicie - dlaczego nie?\nodpowiem przez przykłady\n
  21. główną bazą jest mysql\n
  22. twitter chciał trzymać dane w cassandrze, pozostawił jednak wszystko w mysqlu\ntestuje Redisa\n
  23. projektowanie aplikacji w oparciu o nosql wymaga zupełnie innego podejścia,\nprojektowanie modelu danych jest dużo trudniejsze, odpytywanie bazy danych jest dużo trudniejsze - nie wszystko da się trzymać w jednym miejscu\n
  24. zgodność, dostępność, partycjonowanie - rozproszony system nigdy nie zapewni tych wszystkich elementów\n\nrozwiązanie tego problemu jest podstawowe dla zastosowania nosql\nmożna wybrać tylko 2 z trzech\n
  25. sprawa zupełnie podstawowa - administracja - jeszcze brakuje specjalistów, łatwiej znaleźć specjalistę od mysqla niż cassandry\nco zrobić w przypadku krytycznej sytuacji?\n
  26. te główne problemy to powód, dla którego to logo będziemy widzieć jeszcze bardzo długo\n
  27. czy jednak może warto wejść w nosql\n
  28. czasami trzeba, bo nie ma innej możliwości\n2 bazy danych, na które warto spojrzeć, które mają przed sobą przyszłość w zastosowaniach nawet podstawowych, przy mniejszych serwisach\n
  29. baza dokumentowa\n
  30. dokumentowa - czyli do klucza przypisujemy dokument json, wydajna - bez joinów, ale posiada indeksy, wysokodostępna - automatyczna replikacja z failoverem mastera, skalowalna - automatyczny sharding, język zapytań - javascript + możliwość pisania map reduce\n
  31. ciekawostka - GridFS - czyli możliwość przechowywania plików w bazie danych (i ma to sens)\nindeksy geograficzne - coś, z czego mocno korzysta Foursquare - wyszukiwanie lokalizacji najbliższych wskanazej lokalizacji\n
  32. memcached na sterydach, serwer struktur danych\n
  33. \n
  34. persystencja - coś, czego nie ma memcache - zrzut bazy, dopisywanie do pliku\nwłasna pamięc wirtualna, która trzyma w RAM-ie tylko te dane, z których aktualnie korzystamy\npipeline - optymalizacja wykonywania operacji - wysłanie wielu komend bez czekania na odpowiedź poprzedniej\n
  35. łańcuchy tekstowe (ale ze wsparciem dla liczb całkowitych)\nhashe - czyli struktura w strukturze (świetnie optymalizuje wykorzystanie pamięci)\n
  36. nie ma uniwersalnego rozwiązania dla wszystkich\nprzede wszystkich trzeba dobrze poznać słabości aplikacji, potem środowiska\na potem zastosowania, które akurat danego dnia wydało się idealne\nnie używaj nosqla jeśli ktoś inny z niego korzysta\n
  37. temat, który trzeba dobrze przemyśleć\n
  38. czyli nowoczesne sposoby analizy dużych ilości danych\nsystem rozproszonego przetwarzania danych - niemal synonim map / reduce\nhbase - hive - pig\n
  39. \n
  40. \n