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 MANAGEMENTSYSTEMS THAT DIFFER FROM   CLASSIC RELATIONAL DATABASE ...
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               BASEatomic              basic availabilityconsistent          soft stateisolated ...
NOSQLbaza klucz-wartość baza kolumnowabaza 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?
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
NoSQL i dlaczego go nie potrzebujesz? [OlCamp]
Upcoming SlideShare
Loading in …5
×

NoSQL i dlaczego go nie potrzebujesz? [OlCamp]

2,855 views
2,730 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,855
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

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
  • NoSQL i dlaczego go nie potrzebujesz? [OlCamp]

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

    ×