yes,%sql!% - qcon · 2014. 9. 16. ·...
TRANSCRIPT
Yes, SQL!
Uri Cohen
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
> SELECT * FROM qcon.speakers WHERE name=‘Uri Cohen’
+-----------------------------------------------------+ | Name | Company | Role | Twitter | +-----------------------------------------------------+ | Uri Cohen | GigaSpaces | Product Manager | @uri1803 | +-----------------------------------------------------+
2
> db.speakers.find({name:”Uri Cohen”}) { “name”:”Uri Cohen”, “company”: { name:”GigaSpaces”, products:[“XAP”, “IMDG”] domain: “In memory data grids” } “role”:”product manager”, “twitter”:”@uri1803” }
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Agenda
3
• SQL – What it is and isn’t good for
• NoSQL – Mo;va;on & Main Concepts of Modern Distributed Data Stores
– Common interac;on models
• Key/Value, Column, Document
• NOT consistency and distribu;on algorithms
• One Data Store, Mul;ple APIs – (Really) brief intro to GigaSpaces
– SQL challenges: Add-‐hoc querying, Rela;onships (JPA)
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A FEW (MORE) WORDS ABOUT SQL
4
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL
(Usually) Centralized à TransacAonal, consistent à Hard to Scale
5
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL
Sta;c, normalized data schema • Don’t duplicate, use FKs
6
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL
Add hoc query support à Model first, query later
7
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL
Standard à Well known à Rich ecosystem
8
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
(BRIEF) NOSQL RECAP
9
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
NoSql (or a Naive AYempt to Define It)
A loosely coupled collecAon of non-‐rela;onal data stores
10
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
NoSql (or a Naive AYempt to Define It)
(Mostly) d i s t r i b u t e d
11
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
NoSql (or a Naive AYempt to Define It)
scalable (Up & Out)
12
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
NoSql (or a Naive AYempt to Define It)
Not (always) ACID • BASE anyone?
13
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Why Now?
Timing is everything… • ExponenAal Increase in data & throughput • Non or semi structured data that changes frequently
14
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A Universe of Data Models
15
Key / Value Column { “name”:”uri”, “ssn”:”213445”, “hobbies”:[”…”,“…”], “…”: { “…”:”…” “…”:”…” } }
{ { ... } }
{ { ... } }
Document
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Key/Value
• Have the key? Get the value – That’s about it when it comes to querying
– Map/Reduce (someAmes)
– Good for • cache aside (e.g. Hibernate 2nd level cache)
• Simple, id based interacAons (e.g. user profiles)
• In most cases, values are Opaque
16
K1 V1 K2 V2 K3 V3 K4 V1
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Key/Value
Scaling out is rela;vely easy (just hash the keys) • Some will do that automaAcally for you • Fixed vs. consistent hashing
17
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Key/Value
• Implementa;ons: – Memcached, Redis, Riak
– In memory data grids (mostly Java-‐based) started this way
• GigaSpaces, Oracle Coherence, WebSphere XS, JBoss Infinispan, etc.
18
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Column Based
19
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Column Based
• Mostly derived from Google’s BigTable / Amazon Dynamo papers
• One giant table of rows and columns – Column == pair (name and a value, someAmes Amestamp)
– Each row can have a different number of columns
– Table is sparse: (#rows) × (#columns) ≥ (#values)
20
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Column Based
• Query on row key – Or column value (aka secondary index)
• Good for a constantly changing, (albeit flat) domain model
21
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Document
Think JSON (or BSON, or XML)
22
_id:1
_id:2
_id:3
{ “name”:”Lady Gaga”, “ssn”:”213445”, “hobbies”:[”Dressing up”,“Singing”], “albums”: [{“name”:”The fame” “release_year”:”2008”}, {“name”:”Born this way” “release_year”:”2011”}] }
{ { ... } }
{ { ... } }
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Document
• Model is not flat, data store is aware of it – Arrays, nested documents
• Beler support for ad hoc queries – MongoDB excels at this
• Very intuiAve model • Flexible schema
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
What if you didn’t have to choose?
24
JPA
JDBC
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A Brief Intro to GigaSpaces
In Memory Data Grid • With op;onal write behind to a secondary storage
25
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A Brief Intro to GigaSpaces
Tuple based • Aware of nested tuples (and soon collec;ons)
– Document like
• Rich querying and map/reduce seman;cs
26
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A Brief Intro to GigaSpaces
Transparent par;;oning & HA • Fixed hashing based on a chosen property
27
JAVA Virtual MachineJAVA Virtual Machine JAVA Virtual MachineJAVA Virtual Machine
Replication
Primary 1Backup 1
Replication
Backup 2Primary 2
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
A Brief Intro to GigaSpaces
Transac;onal (Like, ACID) • Local (single par;;on) • Distributed (mul;ple par;;ons)
28
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Use the Right API for the Job
29
• Even for the same data… – POJO & JPA for Java apps with complex domain model
– Document for a more dynamic view
– Memcached for simple, language neutral data access
– JDBC for: • InteracAon with legacy apps • Flexible ad-‐hoc querying (e.g. projecAons)
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Memcached (the Daemon is in the Details)
Memcached Client
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Memcached Client
Memcached (the Daemon is in the Details)
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL/JDBC – Query Them All
32
Query may involve Map/Reduce • Reduce phase includes merging and sorAng
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
SQL/JDBC – Things to Consider
• Unique and FK constraints are not prac;cally enforceable
• Sor;ng and aggrega;on may be expensive • Distributed transac;ons are evil
– Stay local…
33
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
JPA
It’s all about rela;onships…
34
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
JPA Rela;onships
To embed or not to embed, that is the ques;on….
ü Easy to par;;on and scale ü Easy to query: user.accounts[*].type = ‘checking’
× Owned rela;onships only
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
JPA Rela;onships
To embed or not to embed, that is the ques;on….
ü Any type of rela;onship × Par;;oning is hard × Querying involves joining
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
Summary
• One API doesn’t fit all – Use the right API for the job
• Know the tradeoffs – Always ask what you’re giving up, not just what you’re gaining
37
® Copyright 2010 Gigaspaces Ltd. All Rights Reserved
THANK YOU!
@uri1803
hYp://blog.gigaspaces.com
38