Your SlideShare is downloading. ×
  • Like
  • Save
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

NoSQL i dlaczego go nie potrzebujesz? [OlCamp]

  • 2,417 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
    Be the first to like this
No Downloads

Views

Total Views
2,417
On SlideShare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
0
Comments
0
Likes
0

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide
  • 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
  • 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
  • \n
  • na początek definicja - co to jest nosql\nkto z was miał styczność z nosql w produkcji\n
  • 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
  • definicje są co najmniej 2 - pierwsza z nich wyklucza korzystanie z jakichkolwiek baz sql-owych\nta definicja nam się nie podoba\n
  • 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
  • po co w ogóle powstał nosql?\ndo czego Tobie może przydać się nosql\n
  • 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
  • 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
  • jako baza danych\n
  • 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
  • rozproszony - w uproszczeniu - jest centrum, które bazą steruje, ale dane w niej zawarte są rozrzucone po wielu serwerach, a nawet lokalizacjach\n
  • 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
  • nieustrukturyzowany - tak naprawdę w zaprzeczeniu do bazy danych, nie per se - nie ma kolumn, ale nawet klucz-wartość jest strukturą\n
  • łatwo replikowalny - dane można trzymać w wielu kopiach i nie powinno to być skomplikowane\n
  • ostatecznie zgodny - to najbardziej skomplikowany temat - po odpowiednio długim czasie od ostatniej aktualizacji bazy będzie ona taka sama we wszystkich kopiach\n
  • 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
  • typy nosql baz danych (opisać poszczególne typy)\nkv - memcached, nosql\nbaza kolumnowa - cassandra, simpledb, bigtable\ndokumentowa - couchdb, mongodb\n
  • i teraz trzeba sobie odpowiedzieć na podstawowe pytanie - dlaczego nie chce mieć no sql\njak myślicie - dlaczego nie?\nodpowiem przez przykłady\n
  • główną bazą jest mysql\n
  • twitter chciał trzymać dane w cassandrze, pozostawił jednak wszystko w mysqlu\ntestuje Redisa\n
  • 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
  • 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
  • sprawa zupełnie podstawowa - administracja - jeszcze brakuje specjalistów, łatwiej znaleźć specjalistę od mysqla niż cassandry\nco zrobić w przypadku krytycznej sytuacji?\n
  • te główne problemy to powód, dla którego to logo będziemy widzieć jeszcze bardzo długo\n
  • czy jednak może warto wejść w nosql\n
  • 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
  • baza dokumentowa\n
  • 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
  • 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
  • memcached na sterydach, serwer struktur danych\n
  • \n
  • 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
  • łańcuchy tekstowe (ale ze wsparciem dla liczb całkowitych)\nhashe - czyli struktura w strukturze (świetnie optymalizuje wykorzystanie pamięci)\n
  • 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
  • temat, który trzeba dobrze przemyśleć\n
  • czyli nowoczesne sposoby analizy dużych ilości danych\nsystem rozproszonego przetwarzania danych - niemal synonim map / reduce\nhbase - hive - pig\n
  • \n
  • \n

Transcript

  • 1. NOSQL dlaczego go nie potrzebujesz?
  • 2. CZEŚĆ!jestem filip
  • 3. PLAN co to jest nosql? dlaczego nie? dlaczego tak?kupuję to, co dalej?
  • 4. IN COMPUTING, NOSQL IS A TERM USED TO DESIGNATE DATABASE MANAGEMENTSYSTEMS THAT DIFFER FROM CLASSIC RELATIONAL DATABASE MANAGEMENT SYSTEMS (RDBMSES) IN SOME WAY.
  • 5. NO SQL?
  • 6. NOT ONLY SQL
  • 7. http://www.flickr.com/photos/emagic/56206868
  • 8. SKALOWALNOŚĆ
  • 9. NOSQL JEST...
  • 10. nierelacyjny
  • 11. rozproszony
  • 12. horyzontalnie skalowalny
  • 13. nieustrukturyzowany
  • 14. replikowalny
  • 15. ostatecznie zgodny
  • 16. SQL A NOSQL ACID BASEatomic basic availabilityconsistent soft stateisolated eventually consistentdurable
  • 17. NOSQLbaza klucz-wartość baza kolumnowabaza dokumentowa
  • 18. PROJEKTOWANIE APLIKACJI
  • 19. CAP THEOREM
  • 20. ADMINISTRACJA / DEVOPS
  • 21. MONGODB• baza dokumentowa• wydajna• wysokodostępna• skalowalna•z rozbudowanym językiem zapytań
  • 22. MONGODB• JSON, GridFS• indeksy geograficzne• operacje atomowe• map / reduce• kolekcje n-elementowe
  • 23. REDIS• klucz-wartość• przechowujący struktury danych• łatwo replikowalny• (wkrótce) klastrowalny
  • 24. REDIS• persystencja• pamięc wirtualna• pipeline• pub / sub
  • 25. REDIS - TYPY DANYCH• łańcuchy tekstowe• hashe• listy• kolekcje• kolekcje posortowane
  • 26. ONE SIZE DOESN’T FIT ALL
  • 27. ZA, A NAWET PRZECIW
  • 28. COŚ JESZCZE?
  • 29. WEBCLUSTER.PL
  • 30. DZIĘKUJĘ! pytania?