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

NoSQL: Wprowadzenie

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.

Mariusz Gil

September 01, 2012
Tweet

More Decks by Mariusz Gil

Other Decks in Programming

Transcript

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

    Careercon, kariera programisty, lodz 2012 - ` `
  2. „ 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
  3. Key-Value / Touple Store DYNAMODB AZURE TABLE STORAGE RIAK SCALARIS

    TOKYO CABINET / TYRANT REDIS VOLDEMORT MNESIA
  4. BuzzWords SCHEMA FREE DISTRIBUTED ACID / BASE EVENTUALLY CONSISTENT FAULT

    TOLERANT HIGH PERFORMANCE HIGH AVAILABILITY LINEAR SCALABILITY
  5. Neo4j http://neo4j.org/ Algorytm najkrótszych sciezek Algorytm wszystkich sciezek Algorytm wszystkich

    prostych sciezek Algorytm Dijksty Algorytm A* Grafowa baza danych . . .
  6. 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(); -
  7. 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 ,
  8. 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> -
  9. Problem Cena Producent Matryca Typ pamieci Cena Producent Monitor Dysk

    HDD Cena Wykonawca Utwory Cena Producent Szybkosc Kolor Problem ` ` ,
  10. {      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; -
  11. 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 ... . ` ` ,
  12. 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