Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Introduction to NoSQL
Nicolas TraversCNAM – France
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Schedule&Organization• IntroductiontoNoSQL databases▫ 3V,ACIDvsBASE,families,CAPtheorem,JSon• PresentationofMongoDB▫ Language,distribution,replication,application• PracticeWorks onMongoDB▫ Queries:find+aggregate
• Materialavailableat:http://www.chewbii.com/ESSEC
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
DBMSvsNoSQL
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Context• ApplicationsandWebplatforms▫ ExponentialgrowthoftheamountofData(x2/2years)▫ Unprecedent managementofthisvolume
� Needtodistributebothcomputationanddata� Hugenumberofservers� Heterogeneousdata,maybecomplexandoftenlinked
• Ex:▫ Google,Amazon,Facebook▫ GoogleDataCenter :
� 5000servers/datacenter,~1Mdeservers▫ Facebook:
� 1PetaBytes ofdata
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo 8
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
BI:Traditional methods
9
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Decisional vs3VIncompatibleclassical approach with the3V ofBigData :
• Volume:Designed tostoreGB/TBofdata,butneedsPB(maybe EB).
• Variety:Heterogeneous andvariabletypesofdata,text,semi-structured
• Velocity:Dataareproduced moreandmorequickly
10
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
DBMS:Limitations• Standarddatabases▫ Functionalities� Joinsbetweentables� Complexqueries� Strongcoherencyofdata
ØRequirementsinadistributedcontext▫ Linksbetweenentities=>sameserver▫ ++links=>difficultiesfordataorganization
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
RDBMSvsDistribution
• ACID propertiesfortransactions• Atomicity:integralcompletionornone• Consistency:consistentatstartandend• Isolation:nocommunicationbetweenthem
Durability:anoperationcannotbereversed
• Systèmesdistribués:modèleBASE• Basically Available :
� Anyrequest=>Ananswer� Eveninachangingstate
• Soft-state :
� OppositetoDurability.� System’sstate(serversordata)couldchangeovertime(withoutanyupdate)
• Eventually consistent :� Withtime,datacanbeconsistent� Updateshavetobepropagated
12
• ACIDvsBASE
0 141 2 3 4 5 6 7 8 9 10 11 12 13
ACID BASEAtomicityConsistencyIsolationDurability
Basically AvailableSoft-StateEventually Consistent
NoSQLSGBDR VS
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Solution:NoSQL• NoSQL :NotOnly SQL▫ Newdatastorage/managementapproach▫ Scalesupthesystem(throughdistribution)▫ Complexmetadatamanagement� Noschema
Ø DonotsubstituteDBMS,dedicatedto:▫ Veryhugevolumeofdata(PetaBytes)▫ Veryshortresponsetime▫ Consistencyisnotmandatory
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
DatabasesandNoSQL
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
NoSQL DB:Characteristics• Norelations=>Collections▫ Nofixstructures(naynone)• Complexdata(e.g.documents)▫ Objects,nesting,arrays• Datadistribution▫ Highparallelization(Map/Reduce)• Datareplication▫ Disponibility vsConsistency(notransactions)▫ Fewwrites,manyreads
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Sharding :Scalability• Datablocks aredistributedinaclusterofservers• Horizontalpartitioning• 3typesoftechnics:
1. Resourceallocationbased:HDFS� ++Faulttoleranceandmassivecomputations
2. Tree-basedstructure:Clusteredindex(sort)� ++Physicaldataclusteringanddynamicity
3. Hash-basedstructure:ConsistentHashing� ++elasticityandself-management
16
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
SeveralNoSQL systemstype lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Key-Valuestores Column oriented
DocumentOriented Graphoriented
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
I- NoSQL&Key-Valuestore• Similartoadistributed“HashMap”• Key+Value▫ Nofixedschemaonvalues(strings,object,integer,binaries…)• Drawbacks:▫ Nostructuresnortyping▫ Nostructured-basedqueries
Ø DynamoDB (Amazon),Redis (VMWare),Voldemort (LinkedIn)
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
I- NoSQL&Key-Valuestore
19
Example
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Relationnel
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
I- NoSQL&Key-Valuestore
• CRUD▫ CREATE(clé,valeur)
� CREATE("Nicolas","type:'prof',lieu:'CNAM',spec:'BDD,NoSQL',interets:'BZH,Star Wars'")à OK▫ READ(clé)
� READ("Nicolas")à "type:'prof',lieu:'CNAM',spec:'BDD,NoSQL',interets:'BZH,Star Wars'"▫ UPDATE(clé,valeur)
� UPDATE("Nicolas","type:'prof',lieu:'CNAM,CS',spec:'BDD,NoSQL'")à OK▫ DELETE(clé)
� DELETE("Nicolas")à OK
20
Queries
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Nicolas Régis Luc Céline
type: proflieu: CNAM
spec: BDD,NoSQLintérêts: BZH, Star Wars
lieu: OCspec: Machine Learning, devintérêts: escalade, nouilles
chinoises
type: resp formation OClieu: OC
spec: formation, audiovisuel
type: proflieu: CentraleSupelec
spec: Ontologie, logique formelle, visualisation
clés
valeurs
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Efficiency Easy tosetup
I- NoSQL&Key-Valuestore
21
solutions
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
II– NoSQL &Columns• Column-basedstorage▫ DBMS:tuples(lines)• Easytoinsertanewcolumn▫ Dynamicschema
ØBigTable/Hbase (Google),Cassandra(Facebook&Apache),SimpleDB(Amazon)
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
II- NoSQL&Columns
23
example
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
II- NoSQL&Columns
• Column-oriented queries▫ Howmany professors (type) areatCentraleSupelec (lieu)
24
Queries
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Aggregates Correlations
II- NoSQL&Columns
25
solutions
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
III– NoSQL &Documents• Basedonthekey-valuestore▫ Addsemi-structureddata(JSon/XML)• HTTPAPI▫ MorecomplexthanCRUD
ØMongoDB,CouchDB (Apache),RavenDB,Terrastore
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
III- NoSQL&Documents
27
example type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
Nicolas Régis Luc Céline
{ "_id": "Nicolas", "type": "prof", "lieu": { "nom": "CNAM", "adresse":"rue saint martin", "ville": "Paris" }, "spec": ["BDD","NoSQL"], "intérêts": ["BZH", "Star Wars"]}
clés
documents
{ "_id": "Régis", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["Machine Learning", "dev"], "intérêts": ["escalade", "nouilles"]}
{ "_id": "Luc", "type": "resp formation OC", "lieu": { "nom": "OC", "adresse":"rue cité Paris", "ville": "Paris" }, "spec": ["formation", "audiovisuelle"]}
{ "_id": "Céline", "type": "prof", "lieu": { "nom": "CentraleSupelec", "adresse":"rue Joliot-Cury", "ville": "Gif-sur-Yvette » }, "spec": ["Ontologie", "Logique formelle", "Visualisation"]}
III- NoSQL&Documents
• Manipulationsondocumentscontent▫ Establishment (lieu.nom) ofprofessors (type) specialized inDB(in spec)
28
Queries
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Richness ofqueries Manageobjects
III- NoSQL&Documents
29
solutions
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
IV– NoSQL &Graph• Storage:nodes,relationsandproperties▫ GraphTheory▫ Pathqueryingonthegraph▫ Dataareloadedondemand▫ Difficultiesformodeling
ØNeo4j,OrientDB (Apache),FlockDB (Twitter)
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
type lieu spec intérêts
prof CNAM BDD, NoSQL BZH, Star Wars
OC Machine Learning, Dev escalade, nouilles chinoises
resp formation OC OC formation, audiovisuel
prof CentraleSupelec Ontologie, logique formelle, visualisation
id
Nicolas
Régis
Luc
Céline
type
prof
resp formation
OC
prof
id
Nicolas
Luc
Céline
lieu
CNAM
OC
OC
CentraleSupelec
id
Nicolas
Régis
Luc
Céline
spec
BDD
Machine Learning
formation
Ontologie
id
Nicolas
Régis
Luc
Céline
NoSQLNicolas
Dev
Régis
audiovisuelLuc
logique formelle
visualisation
Céline
Céline
intérêts
BZH
escalade
id
Nicolas
Régis
Star WarsNicolas
nouilles chinoisesRégis
Stockage orienté lignes Stockage orienté colonnes
Nicolas RégisLuc CélineNicolas
type:profRégis
Luctype:resp formation
Célinetype:prof
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur employeur
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
vacation employeur
vacation
vacation
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
vacation employeur
vacation
vacation
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
IV- NoSQL&Graph
31
example
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Nicolastype:prof
RégisLuc
type:resp formation
Célinetype:prof
CNAMadresse:…
OCadresse:…
CentraleSupélec
employeur
employeur
employeur
vacation
Paris Gif-sur-Yvette
siège social siège social siège social
vacation employeur
vacation
vacation
IV- NoSQL&Graph
• Patternqueries▫ Persons giving vacationsat Parisand Gif-sur-Yvette
32
queries
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
FlockDB
Network Recommandation
IV- NoSQL&Graph
33
solutions
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Brewer’s CAP Theorem (2000)• 3mainpropertiesfordistributedmanagement1. Consistency:
� Adatahavethesamevalueatthesametime(coherency)2. Availability:
� Evenifaserverisdown,dataisavailable3. PartitionTolerance:
� Evenifthesystemispartitioned,aquerymusthaveananswer(unlessforglobalfailures)
Ø Theorem:Adistributed,networkedsystem
canhaveonlytwo ofthesethreeproperties.
ConsistencyCohérence
AvailabilityDisponibilité
PartitionToleranceDistribution
CA AP
CP
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v1 v1 v1 v1v1
écriture
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
v2 v2L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v1 v1 v1v1
L1écriture L2 écriture
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
v2v1 v2v1 v1 v1v1
attenteL1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
attente
ack
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
v2 v2L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
v2v1 v2v1 v2v1 v1v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
écriture
v2v1 v2v1 v2v1 v2v1 v1
L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
v2v1 v2v1 v2v1 v2v1 v1
v2 v1L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
asynchrone
v2v1 v2v1 v2v1 v2v1 v1
v2 v1L1écriture L2 L1écriture L2
CACohérence + Disponibilité
CPCohérence + Distribution
APDisponibilité + Distribution
synchrone
L1écriture L2
asynchrone
v2v1 v2v1 v2v1 v2v1 v2v1
v2 v1
“CAPTheorem”
36
illustration
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
RedisMemcached
CosmosDB
SimpleDB OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase DynamoDB
Cassandra
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB
RedisMemcached
CosmosDB
SimpleDB
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase DynamoDB
Cassandra
Neo4jOrientDBFlockDB
Modèle
Availability(Disponibilité)
Consistency(Cohérence)
Partition tolerance(Distribution)
RelationnelOrienté Clé-ValeurOrienté ColonneOrienté DocumentOrienté Graphe
MongoDB*
RedisMemcached*
CosmosDB*
SimpleDB*
BigTableHBase
ElasticsearchSpark
OracleMySQL
SQLServer
DB2PostgreSQL
CouchBase*DynamoDB*
Cassandra*
Neo4jOrientDBFlockDB
* Possibilité de changer le mode de cohérence
Cohérence <-> Disponibilité
Modèle
“CAPTheorem”
37
TriangleofCAP
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
• InitiallyXMLusedforcomplexinternetcommunications(WebServices)▫ Tooverbose• JSON (JavaScript Object Notation)▫ Lightweight, text-oriented, language independent▫ Used for several Web services (Google API, Twitter API)
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
JSon : Structures• Key + Value▫ “lastname” : “Travers”▫ Keys with quotations• Objects/documents▫ Collection of key/values▫ { “lastname” : “Travers”,
“firstname” : “Nicolas”,“kind” : 1}
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Data types• Scalar : String, Integer, float, boolean, null…• List : arrays [ … ]• Documents : objetcs {…}
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
Arrays• No typing inside arrays▫ “lessons” : [“SQL”, 1, 4.2, null, “NoSQL”]• Can nest documents▫ “doc” : [ {“test” : 1},
{“test” : {“nesting” : 1.0}},{“key” : “text”, “value” : null}]
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
JSon : Identifiers• Key « _id » commonly used to identify documents▫ Overwrite already stored ids▫ Can be automaticaly generated
� Ex MongoDB : "_id" : ObjectId(1234567890)
Introduction to NoSQL
N. TraversCEDRIC Lab - Vertigo
JSon : complete example{
“_id” : 1234,“lastname” : “Travers”, “firstname” : “Nicolas”,“work” : {
“company” : “Cnam”,“location” : {
“street” : “2 rue conté”,“city” : “Paris”,“zip” : 75141
},},“fields” : [ “DB” , “DB tuning”, “XML”, “NoSQL”, “IR” ]
}