no sql mariusz g-il
TRANSCRIPT
No.SQLDesign ✯ Store ✯ Scale ✯ Search
Mariusz GilCareercon, kariera programisty, lodz 2012- ``
piątek, 31 sierpnia 2012
historiapiątek, 31 sierpnia 2012
„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
piątek, 31 sierpnia 2012
Klasyfikacjapiątek, 31 sierpnia 2012
Wide Column Store
HADOOP / HBASE
CASSANDRA
HYPERTABLE
ACUMULLO
AMAZON SIMPLE DB
CLOUDATA
SCIDB
STRATOSPHERE
piątek, 31 sierpnia 2012
Document Store
MONGODB
COUCHDB
RAVENDB
THRUDB
TERRASTORE
RAPTORDB
SDB
SCHEMA FREE DB
piątek, 31 sierpnia 2012
Key-Value / ToupleStore
DYNAMODB
AZURE TABLE STORAGE
RIAK
SCALARIS
TOKYO CABINET / TYRANT
REDIS
VOLDEMORT
MNESIA
piątek, 31 sierpnia 2012
Graph Database
NEO4J
INFINITE GRAPH
HYPER GRAPH DB
ALLEGRO GRAPH
VERTEXDB
FLOCKDB
DEX
TRYNITY
piątek, 31 sierpnia 2012
Object Database
DB4O
VERSTANT
OBJECTIVITY
PERST
MAGMA
STERLING
EYEDB
NINJA DATABASE PRO
piątek, 31 sierpnia 2012
XML Database
MARK LOGIC SERVER
DOCUMENTUM XDB
EXIST
BASEX
QIZX
BERKELEY DB XML
piątek, 31 sierpnia 2012
BuzzWordsSCHEMA FREE DISTRIBUTED ACID / BASE EVENTUALLY CONSISTENT
FAULT TOLERANT HIGH PERFORMANCE HIGH AVAILABILITY
piątek, 31 sierpnia 2012
case studies
piątek, 31 sierpnia 2012
Problem
A
B
C
piątek, 31 sierpnia 2012
Jak uzupełnic KRAWEDZIE W GRAFIE SPOLECZNYM
``
-
piątek, 31 sierpnia 2012
A
B
C
D
E
F
G
Problempiątek, 31 sierpnia 2012
Które połaczenie JEST NAJLEPSZE LUB NAJTANSZE`
,
piątek, 31 sierpnia 2012
Neo4j
http://neo4j.org/
Algorytm najkrótszych sciezekAlgorytm wszystkich sciezekAlgorytm wszystkich prostych sciezekAlgorytm DijkstyAlgorytm A*
Grafowa baza danych
..
.
piątek, 31 sierpnia 2012
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
A
Problempiątek, 31 sierpnia 2012
Jak znalezcZNAJOMYCH ONLINE
piątek, 31 sierpnia 2012
Problempiątek, 31 sierpnia 2012
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
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
Problem
Cena
Producent
Matryca
Typ pamieci
Cena
Producent
Monitor
Dysk HDD
Cena
Wykonawca
Utwory
Cena
Producent
Szybkosc
Kolor
Problem
` `
,
piątek, 31 sierpnia 2012
Jak efektywnieOPISAC PRODUKTY ROZNEGO RODZAJU`
.`
piątek, 31 sierpnia 2012
MongoDB
http://mongodb.org/
Dowolnosc schematu danychIndeksyMapReduceSkalowalnosc horyzontalnaReplikacja danych
Dokumentowa baza danych
` `
` `
piątek, 31 sierpnia 2012
{ 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
alternative.topiątek, 31 sierpnia 2012
Czy na pewnoPOTRZEBUJE ROZWIAZANIA NOSQL
` `
piątek, 31 sierpnia 2012
APLIKACJE TYPU FACEBOOK
NIE KORZYSTAJA Z JOIN-OW``
piątek, 31 sierpnia 2012
A TAKZE NIE WYKORZYSTUJA
INDEKSOW KLUCZY OBCYCH`
.
piątek, 31 sierpnia 2012
A SKALOWANIE BAZY DANYCH ZACZYNA SIE
NA POZIOMIE SCHEMATU DANYCH`
piątek, 31 sierpnia 2012
DeNA HandlerSocket
750.000qps
piątek, 31 sierpnia 2012
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
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
big bang theorypiątek, 31 sierpnia 2012
PROUDLY SPONSORED BY CASSANDRA*
*oraz developerow
piątek, 31 sierpnia 2012
PROUDLY SPONSORED BY MONGODB*
*oraz developerów
piątek, 31 sierpnia 2012
dobre praktyki
piątek, 31 sierpnia 2012
R.T.F.M.powaznie, rtfm.
piątek, 31 sierpnia 2012
DOBOR TECHNOLOGIIuzasadniony pot#ebami
piątek, 31 sierpnia 2012
plan backupudzialajacy w praktyce`-
piątek, 31 sierpnia 2012
monitoringzanim bedzie zbyt pozno``
`
piątek, 31 sierpnia 2012
Pytania?Email: [email protected] ✯ Twitter: @mariuszgil
piątek, 31 sierpnia 2012