45
No.SQL Design Store Scale Search Mariusz Gil Careercon, kariera programisty, lodz 2012 - ` ` piątek, 31 sierpnia 2012

No sql mariusz g-il

Embed Size (px)

Citation preview

Page 1: No sql mariusz g-il

No.SQLDesign ✯ Store ✯ Scale ✯ Search

Mariusz GilCareercon, kariera programisty, lodz 2012- ``

piątek, 31 sierpnia 2012

Page 2: No sql mariusz g-il

historiapiątek, 31 sierpnia 2012

Page 3: No sql mariusz g-il

„NoSql is a fast, portable, relational database management system without arbitrary limits, (other than memory and proce%or sp&d) that runs under, and interacts with, the UNIX1 Operating System. It uses the "Operator-Stream Paradigm" described in "Unix Review".

Carlo Strozzi, Marzec 1991

piątek, 31 sierpnia 2012

Page 4: No sql mariusz g-il

piątek, 31 sierpnia 2012

Page 5: No sql mariusz g-il

Klasyfikacjapiątek, 31 sierpnia 2012

Page 6: No sql mariusz g-il

Wide Column Store

HADOOP / HBASE

CASSANDRA

HYPERTABLE

ACUMULLO

AMAZON SIMPLE DB

CLOUDATA

SCIDB

STRATOSPHERE

piątek, 31 sierpnia 2012

Page 7: No sql mariusz g-il

Document Store

MONGODB

COUCHDB

RAVENDB

THRUDB

TERRASTORE

RAPTORDB

SDB

SCHEMA FREE DB

piątek, 31 sierpnia 2012

Page 8: No sql mariusz g-il

Key-Value / ToupleStore

DYNAMODB

AZURE TABLE STORAGE

RIAK

SCALARIS

TOKYO CABINET / TYRANT

REDIS

VOLDEMORT

MNESIA

piątek, 31 sierpnia 2012

Page 9: No sql mariusz g-il

Graph Database

NEO4J

INFINITE GRAPH

HYPER GRAPH DB

ALLEGRO GRAPH

VERTEXDB

FLOCKDB

DEX

TRYNITY

piątek, 31 sierpnia 2012

Page 10: No sql mariusz g-il

Object Database

DB4O

VERSTANT

OBJECTIVITY

PERST

MAGMA

STERLING

EYEDB

NINJA DATABASE PRO

piątek, 31 sierpnia 2012

Page 11: No sql mariusz g-il

XML Database

MARK LOGIC SERVER

DOCUMENTUM XDB

EXIST

BASEX

QIZX

BERKELEY DB XML

piątek, 31 sierpnia 2012

Page 12: No sql mariusz g-il

BuzzWordsSCHEMA FREE DISTRIBUTED ACID / BASE EVENTUALLY CONSISTENT

FAULT TOLERANT HIGH PERFORMANCE HIGH AVAILABILITY

piątek, 31 sierpnia 2012

Page 13: No sql mariusz g-il

case studies

piątek, 31 sierpnia 2012

Page 14: No sql mariusz g-il

Problem

A

B

C

piątek, 31 sierpnia 2012

Page 15: No sql mariusz g-il

Jak uzupełnic KRAWEDZIE W GRAFIE SPOLECZNYM

``

-

piątek, 31 sierpnia 2012

Page 16: No sql mariusz g-il

A

B

C

D

E

F

G

Problempiątek, 31 sierpnia 2012

Page 17: No sql mariusz g-il

Które połaczenie JEST NAJLEPSZE LUB NAJTANSZE`

,

piątek, 31 sierpnia 2012

Page 18: No sql mariusz g-il

Neo4j

http://neo4j.org/

Algorytm najkrótszych sciezekAlgorytm wszystkich sciezekAlgorytm wszystkich prostych sciezekAlgorytm DijkstyAlgorytm A*

Grafowa baza danych

..

.

piątek, 31 sierpnia 2012

Page 19: No sql mariusz g-il

Neo4jPrzyklad

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();

-

piątek, 31 sierpnia 2012

Page 20: No sql mariusz g-il

A

Problempiątek, 31 sierpnia 2012

Page 21: No sql mariusz g-il

Jak znalezcZNAJOMYCH ONLINE

piątek, 31 sierpnia 2012

Page 22: No sql mariusz g-il

Problempiątek, 31 sierpnia 2012

Page 23: No sql mariusz g-il

Redis

http://redis.io/

Key value storage z trwałoscia danychObsługa łancuchów tekstowychObsługa hashyObsługa listObsługa zbiorówObsługa zbiorów sortowanychProtokół Publish / Subscribe

Serwer struktury danych

,

piątek, 31 sierpnia 2012

Page 24: No sql mariusz g-il

RedisPrzyklad

redis>  SADD  myset  "Hello"(integer)  1redis>  SADD  myset  "World"(integer)  1redis>  SADD  myset  "World"(integer)  0redis>  SMEMBERS  myset1)  "World"2)  "Hello"redis>  

redis>  LPUSH  mylist  "world"(integer)  1redis>  LPUSH  mylist  "hello"(integer)  2redis>  LRANGE  mylist  0  -­‐11)  "hello"2)  "world"redis>  

redis>  ZADD  myzset  1  "one"(integer)  1redis>  ZADD  myzset  2  "two"(integer)  1redis>  ZADD  myzset  3  "three"(integer)  1redis>  ZRANGEBYSCORE  myzset  -­‐inf  +inf1)  "one"2)  "two"3)  "three"redis>  ZRANGEBYSCORE  myzset  1  21)  "one"2)  "two"redis>

-

piątek, 31 sierpnia 2012

Page 25: No sql mariusz g-il

Problem

Cena

Producent

Matryca

Typ pamieci

Cena

Producent

Monitor

Dysk HDD

Cena

Wykonawca

Utwory

Cena

Producent

Szybkosc

Kolor

Problem

` `

,

piątek, 31 sierpnia 2012

Page 26: No sql mariusz g-il

Jak efektywnieOPISAC PRODUKTY ROZNEGO RODZAJU`

.`

piątek, 31 sierpnia 2012

Page 27: No sql mariusz g-il

MongoDB

http://mongodb.org/

Dowolnosc schematu danychIndeksyMapReduceSkalowalnosc horyzontalnaReplikacja danych

Dokumentowa baza danych

` `

` `

piątek, 31 sierpnia 2012

Page 28: No sql mariusz g-il

{      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'  }

   ]}

MongoDBPrzyklad

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;

-

piątek, 31 sierpnia 2012

Page 29: No sql mariusz g-il

alternative.topiątek, 31 sierpnia 2012

Page 30: No sql mariusz g-il

Czy na pewnoPOTRZEBUJE ROZWIAZANIA NOSQL

` `

piątek, 31 sierpnia 2012

Page 31: No sql mariusz g-il

APLIKACJE TYPU FACEBOOK

NIE KORZYSTAJA Z JOIN-OW``

piątek, 31 sierpnia 2012

Page 32: No sql mariusz g-il

A TAKZE NIE WYKORZYSTUJA

INDEKSOW KLUCZY OBCYCH`

.

piątek, 31 sierpnia 2012

Page 33: No sql mariusz g-il

A SKALOWANIE BAZY DANYCH ZACZYNA SIE

NA POZIOMIE SCHEMATU DANYCH`

piątek, 31 sierpnia 2012

Page 34: No sql mariusz g-il

DeNA HandlerSocket

750.000qps

piątek, 31 sierpnia 2012

Page 35: No sql mariusz g-il

MySQL API dla złozonychzapytan

HandlerSocketdla zapytanszybkich lubindex scan

watek workera

watek na polaczenie

Akceptacja protokoluParsowanie SQLOptymalizacja SQLOtwarcie tabelQuery PlanQuery CacheDostep do danychZamkniecie tabelZwrócenie wyników

Akceptacja protokołuDostep do danychZwrócenie wyników

StorageEngine

3306

9998 9999

InnoDBMyISAM...

.

`

`,

piątek, 31 sierpnia 2012

Page 36: No sql mariusz g-il

MySQL Clusterhigh performance database

Auto-shardingSkalowalnosc horyzontalna onlineReal-time performanceDostep do danych SQL i NoSQLACID

` `

,

http://www.mysql.com/products/cluster

piątek, 31 sierpnia 2012

Page 37: No sql mariusz g-il

big bang theorypiątek, 31 sierpnia 2012

Page 38: No sql mariusz g-il

PROUDLY SPONSORED BY CASSANDRA*

*oraz developerow

piątek, 31 sierpnia 2012

Page 39: No sql mariusz g-il

PROUDLY SPONSORED BY MONGODB*

*oraz developerów

piątek, 31 sierpnia 2012

Page 40: No sql mariusz g-il

dobre praktyki

piątek, 31 sierpnia 2012

Page 41: No sql mariusz g-il

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

piątek, 31 sierpnia 2012

Page 42: No sql mariusz g-il

DOBOR TECHNOLOGIIuzasadniony pot#ebami

piątek, 31 sierpnia 2012

Page 43: No sql mariusz g-il

plan backupudzialajacy w praktyce`-

piątek, 31 sierpnia 2012

Page 44: No sql mariusz g-il

monitoringzanim bedzie zbyt pozno``

`

piątek, 31 sierpnia 2012

Page 45: No sql mariusz g-il

Pytania?Email: [email protected] ✯ Twitter: @mariuszgil

piątek, 31 sierpnia 2012