Orient DB on the Cloud
Un approccio pratico
Gabriele De Carli - @Gabber_84 Luigi Dell’Aquila - @ldellaquila
Cos’è Orient DB?
• NoSQL*
• Document/Graph Database
• REST/JSON
• Scalable
• Multi Platform
• ACID Transaction
Il modello dei dati
• Database
• Cluster
• Class - Inheritance• Vertex/Edge• Document
• Schema• Schemaful• Schemaless• Schema-mixed
Interfacce di interrogazione
• HTTP REST
• Native• Java• Scala• JavaScript• PHP• C• Ruby• .NET• Python• Node.js• Clojure
• Tinkerpop Blueprints compliant
NoSQL ma…
SQL!
Esempi
CREATE CLASS PERSON;
INSERT INTO PERSON (NAME, SURNAME) VALUES (“MARIO”, “ROSSI”);
SELECT * FROM PERSON WHERE SURNAME = “ROSSI”;
SELECT NAME, SURNAME, ADDRESS.CITY.REGION.COUNTRY FROM PERSON WHERE SURNAME = “ROSSI” AND ADDRESS.CITY.REGION.COUTRY.CONTINENT.NAME = “EUROPE”;
CREATE CLASS PERSON EXTENDS V;
CREATE CLASS FRIEND EXTENDS E;
CREATE VERTEX PERSON SET NAME = “MARIO”, SURNAME = “ROSSI”
CREATE VERTEX PERSON SET NAME = “MARCO”, SURNAME = “VERDI”
CREATE EDGE FRIEND FROM #10:1 TO #10:2
CREATE EDGE FRIEND FROM (SELECT FROM PERSON WHERE SURNAME = “ROSSI”) TO (SELECT FROM PERSON WHERE SURNAME = “VERDI”)
Esempi
SELECT FROM CITY WHERE COUNTRY.NAME.substring(1,3).toUpperCase() = “TAL”
SELECT FROM AGENDA WHERE EMAIL MATCHES '\bA-Z0-9._%[email protected]?+\.A-Z?{2,4}\b’
SELECT MAX(INCOMING) AS MAX_INCOMING, MAX(COST) AS MAX_COST FROM BALANCE
In più (in ordine sparso)
• Supporto Transazionale
• Javascript nativo
• Funzioni
• TinkerPop - Gremlin
• Java Object API
• Local/remote/embedded mode
• Veloce! 150.000 record/secondo (flat, no index)
Replication (high availability)
Replication
HAZELCAST
Replication
HAZELCAST HAZELCASTmulticast
Replication
HAZELCAST HAZELCAST
HAZELCAST
Multi Master
Replication
HAZELCAST HAZELCASTmulticast
AWS
Replication
HAZELCAST HAZELCAST
HAZELCAST
Amazon
Elastic Load
Balancing+
Auto Scaling
Replication
• ~ 0 config
• Multi Master
• Load Balancing, Auto Scaling
• Fault Tolerant
HOW-TO 1/7
• Orient DB >= 1.6.0-SNAPSHOT
• Istanziare una macchina su EC2 (Micro è OK)
• Installare Orient DB (distributed) sulla macchina come servizio e configurare Hazelcast per usare AWS
• Creare una AMI dall’istanza
HOW-TO 2/7
Amazon key pairs
HOW-TO 3/7
Amazon security group
HOW-TO 4/7
Amazon New Instance (T1 Micro)
HOW-TO 5/7
Amazon New Instance (T1 Micro)
HOW-TO 6/7
Orient/bin/orientdb.sh (+ link simbolico in /etc/rcX.d/)
HOW-TO 7/7
Orient/config/hazelcast.xml
DEMO
Java (Graph API)
Java (Graph API)
JavaScript
Risorse
Web
http://www.orientdb.org/
http://www.orientechnologies.com/
https://github.com/orientechnologies/orientdb/
Libri
Training & Certification
http://www.orientechnologies.com/training.htm