Upgrade to Pro — share decks privately, control downloads, hide ads and more …

NoSQL: Wprowadzenie

34be88398f623c109b61d23e8215bd23?s=47 Mariusz Gil
September 01, 2012

NoSQL: Wprowadzenie

Abstrakt prezentacji:

“To SQL or NoSQL” – takie pytanie zapewne zadaje sobie wiele zespołów rozpoczynających pracę nad nowymi projektami. NoSQL to wciąż relatywnie nowe narzędzia, obarczone wieloma problemami, z których często nie zdajemy sobie sprawy, a które złośliwie ujawnią się kluczowym dla nas momencie. Jak się poruszać w dżungli ponad 120 dostępnych systemów, aby wybrać ten właściwy, dopasowany idealnie do potrzeb projektu? A może jednak czasem nie warto opierać aplikacji o backend NoSQL, tylko skorzystać ze sprawdzonego od lat modelu relacyjnego? Albo projektować rozwiązanie mieszane, wykorzystujące zalety obu grup?

W trakcie prezentacji spróbujemy odpowiedzieć na te właśnie pytania. Poznamy najważniejsze systemy NoSQL, potencjalne zakresy ich zastosowań, alternatywne rozwiązania oparte o standardowe bazy danych SQL, a także poświęcimy trochę uwagi na analizę kilku dość dużych projektów, gdzie NoSQL okazał się złym wyborem i tylko przysporzył zespołom problemów. Ostatecznie ważne jest tylko to, aby potrafić dobrać rozwiązanie do potrzeb projektu, nie dając się uwieść przy tym całej medialnej otoczce.

34be88398f623c109b61d23e8215bd23?s=128

Mariusz Gil

September 01, 2012
Tweet

Transcript

  1. No.SQL Design ✯ Store ✯ Scale ✯ Search Mariusz Gil

    Careercon, kariera programisty, lodz 2012 - ` `
  2. historia

  3. „ N Sql i a fast, portable, relational database management

    system without arbitrary limit , (othe than memory and proce o sp d) that run unde , and interact with, the UNIX1 Operating System. It use the "Operato -Stream Paradigm" described in "Unix Revie ". Carlo Strozzi, Marzec 1991
  4. None
  5. None
  6. Klasyfikacja

  7. Wide Column Store HADOOP / HBASE CASSANDRA HYPERTABLE ACUMULLO AMAZON

    SIMPLE DB CLOUDATA SCIDB STRATOSPHERE
  8. Document Store MONGODB COUCHDB RAVENDB THRUDB TERRASTORE RAPTORDB SDB SCHEMA

    FREE DB
  9. Key-Value / Touple Store DYNAMODB AZURE TABLE STORAGE RIAK SCALARIS

    TOKYO CABINET / TYRANT REDIS VOLDEMORT MNESIA
  10. Graph Database NEO4J INFINITE GRAPH HYPER GRAPH DB ALLEGRO GRAPH

    VERTEXDB FLOCKDB DEX TRINITY
  11. Object Database DB4O VERSTANT OBJECTIVITY PERST MAGMA STERLING EYEDB NINJA

    DATABASE PRO
  12. XML Database MARK LOGIC SERVER DOCUMENTUM XDB EXIST BASEX QIZX

    BERKELEY DB XML
  13. 120+

  14. BuzzWords SCHEMA FREE DISTRIBUTED ACID / BASE EVENTUALLY CONSISTENT FAULT

    TOLERANT HIGH PERFORMANCE HIGH AVAILABILITY LINEAR SCALABILITY
  15. case studies

  16. Problem A B C

  17. Jak uzupełnic KRAWEDZIE W GRAFIE SPOLECZNYM ` ` - ?

  18. A B C D E F G Problem

  19. Które p łaczenie JEST NAJLEPSZE LUB NAJTANSZE ` , ?

  20. Neo4j http://neo4j.org/ Algorytm najkrótszych sciezek Algorytm wszystkich sciezek Algorytm wszystkich

    prostych sciezek Algorytm Dijksty Algorytm A* Grafowa baza danych . . .
  21. Neo4j Przyklad firstNode  =  graphDb.createNode(); firstNode.setProperty("message",  "Hello,  "); secondNode  =

     graphDb.createNode(); secondNode.setProperty("message",  "World!");   relationship  =  firstNode.createRelationshipTo(secondNode,  RelTypes.KNOWS); relationship.setProperty("message",  "brave  Neo4j  "); firstNode.getSingleRelationship(RelTypes.KNOWS,  Direction.OUTGOING).delete(); firstNode.delete(); secondNode.delete(); -
  22. A Problem

  23. Jak znalezc ZNAJOMYCH ONLINE ` ` ?

  24. Problem

  25. Redis http://redis.io/ Key value storage z trwałoscia danych Obsługa łancuchów

    tekstowych Obsługa hashy Obsługa list Obsługa zbiorów Obsługa zbiorów sortowanych Protokół Publish / Subscribe Serwer struktury danych ,
  26. Redis Przyklad redis>  SADD  myset  "Hello" (integer)  1 redis>  SADD

     myset  "World" (integer)  1 redis>  SADD  myset  "World" (integer)  0 redis>  SMEMBERS  myset 1)  "World" 2)  "Hello" redis>   redis>  LPUSH  mylist  "world" (integer)  1 redis>  LPUSH  mylist  "hello" (integer)  2 redis>  LRANGE  mylist  0  -­‐1 1)  "hello" 2)  "world" redis>   redis>  ZADD  myzset  1  "one" (integer)  1 redis>  ZADD  myzset  2  "two" (integer)  1 redis>  ZADD  myzset  3  "three" (integer)  1 redis>  ZRANGEBYSCORE  myzset  -­‐inf  +inf 1)  "one" 2)  "two" 3)  "three" redis>  ZRANGEBYSCORE  myzset  1  2 1)  "one" 2)  "two" redis> -
  27. Problem Cena Producent Matryca Typ pamieci Cena Producent Monitor Dysk

    HDD Cena Wykonawca Utwory Cena Producent Szybkosc Kolor Problem ` ` ,
  28. Jak efektywnie OPISAC PRODUKTY ROZNEGO RODZAJU ` . ` ?

  29. MongoDB http://mongodb.org/ Dowolnosc schematu danych Indeksy MapReduce Skalowalnosc horyzontalna Replikacja

    danych Dokumentowa baza danych ` ` ` `
  30. {      author:  'joe',    created  :  new  Date('03/28/2009'),

       title  :  'Yet  another  blog  post',    text  :  'Here  is  the  text...',    tags  :  [  'example',  'joe'  ],    comments  :  [ {  author:  'jim',  comment:  'I  disagree'  }, {  author:  'nancy',  comment:  'Good  post'  }    ] } MongoDB Przyklad doc  =  { author  :  'joe',   created  :  new  Date('03/28/2009'),   title:  'Sample  title', tags:  [  "moon",  "apollo",  "spaceflight"  ], ...   }; db.posts.insert(doc); db.posts.find(  {  "comments.author"  :  "jim"  }  ) db.posts.ensureIndex(  {  tags:  1  }  ); db.posts.findOne(  {  tags:  "apollo"  }  ).title; -
  31. alternative.to

  32. Czy na pewn POTRZEBUJE ROZWIAZANIA NOSQL ` ` ?

  33. APLIKACJE TYPU FACEBOOK NIE KORZYSTAJA Z JOIN-OW ` `

  34. A TAKZE NIE WYKORZYSTUJA INDEKSOW KLUCZY OBCYCH ` .

  35. A SKALOWANIE BAZY DANYCH ZACZYNA SIE NA POZIOMIE SCHEMATU DANYCH

    `
  36. DeNA HandlerSocket 750.000qps

  37. MySQL API dla złozonych zapytan HandlerSocket dla zapytan szybkich lub

    index scan watek workera watek na polaczenie Akceptacja protokolu Parsowanie SQL Optymalizacja SQL Otwarcie tabel Query Plan Query Cache Dostep do danych Zamkniecie tabel Zwrócenie wyników Akceptacja protokołu Dostep do danych Zwrócenie wyników Storage Engine 3306 9998 9999 InnoDB MyISAM ... . ` ` ,
  38. MySQL Cluster high performance database Auto-sharding Skalowalnosc horyzontalna online Real-time

    performance Dostep do danych SQL i NoSQL ACID ` ` , http://www.mysql.com/products/cluster
  39. big bang theory

  40. PROUDLY SPONSORED BY CASSANDRA* *oraz developerow `

  41. PROUDLY SPONSORED BY MONGODB* *oraz developerów

  42. dobre praktyki

  43. R.T.F.M. powaznie, rtfm .

  44. WYBOR TECHNOLOGII uzasadniony pot ebami `

  45. plan backupu dzialajacy praktyce ` -

  46. monitoring zanim bedzie zbyt pozn ` ` `

  47. linki

  48. http://highscalability.com/ http://nosqltapes.com/ http://nosql-database.org/ http://nosqlsummer.org/ http://nosql2012.dataversity.net/ http://nosql-matters.org/ http://berlinbuzzwords.de/ http://www.dzone.com/mz/nosql

  49. Pytania? Email: mariusz@mariuszgil.pl ✯ Twitter: @mariuszgil