SlideShare ist ein Scribd-Unternehmen logo
1 von 104
Downloaden Sie, um offline zu lesen
www.orientechnologies.com




The database for the Web
Why do I need another
       DBMS?

                 www.orientechnologies.com
But the question is:
are DBMSs ready for
   the Web age?
                 www.orientechnologies.com
Web means:
 Hundreds of users today,
      thousands or
   millions tomorrow

                            www.orientechnologies.com
Web means:
 Idea → Demo in few weeks


                       www.orientechnologies.com
Web means:
     Fast and frequent
 changes of requirements and
      data structures

                         www.orientechnologies.com
Web means:
  + social + relationships
    + interconnections
         = graph

                             www.orientechnologies.com
Web means:
 Low usage of resources
  run on cheap hardware


                          www.orientechnologies.com
Web means:
 Speak HTTP, REST and JSON
          please


                       www.orientechnologies.com
Why is the database
     so important
in modern applications?

                  www.orientechnologies.com
Because
modern applications
are mostly I/O Bound
        not
     CPU bound
                www.orientechnologies.com
NoSQL
       = “Not Only SQL”
= make the best choice for your
           use case

                           www.orientechnologies.com
Can I trust
new DBMSs?
           www.orientechnologies.com
www.orientechnologies.com
Non exhaustive list of NoSQL products:

    AllegroGraph, Amazon SimpleDB, Amazon
 Dynamo, Dynomite, BerkleyDB, Google BigTable,
 Cassandra, CouchDB, DB4O, Hbase, Hipertable,
    Hive, Jackrabbit, InfiniteGraph, InfoGrid,
 Memcached, MemcacheDB, Mnesia, M/DB/DT.M,
    MongoDB, Neo4J, OrientDB, Pig, Project
   Voldemort, RavenDB, Redis, Riak, Scalaris,
Sesame, Sones, Terrastore, Tokyo Cabinet/Tyrant,
              Yahoo! Pnuts/Sherpa
                                        www.orientechnologies.com
“NoSQL container” groups so
    very-very-very
    different products,
        no standard,
    difficult to choice,
  difficult to learn them

                            www.orientechnologies.com
Can I have a
Fast, scalable, flexible
          storage
with ACID Tx, SQL, Security
 easy to use and maintain?

                       www.orientechnologies.com
The fastest NoSQL document-graph dbms



                                 www.orientechnologies.com
+12 years
  of research

                www.orientechnologies.com
+1 year
of design and develop

                    www.orientechnologies.com
=
best features of newest NoSQL solutions
                   +
   best features of Relational DBMS
                   +
      new ideas and concepts
                               www.orientechnologies.com
Ø config
 download, unzip, run!
  cut & paste the db
                     www.orientechnologies.com
No dependencies
          rd
     with 3 parties software
no conflicts with other software
 just 1 Mb of run-time libraries


                           www.orientechnologies.com
150,000
 records per second

                      www.orientechnologies.com
Schema-less
 schema is not mandatory, relaxed model,
collect heterogeneous documents all together



                                    www.orientechnologies.com
Schema-full
schema with    constraints on fields and validation rules
Customer.age > 17
Customer.address not null
Customer.surname is mandatory
Customer.email matches 'b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b'


                                                         www.orientechnologies.com
Schema-mixed
schema with mandatory and optional fields + constraints
    the best of schema-less and schema-full modes




                                             www.orientechnologies.com
ACID Transactions
db.begin();

try{
  // your code
  ...
  db.commit();

} catch( Exception e ) {
  db.rollback();
}

                           www.orientechnologies.com
Complex types
                 collections, maps (key/value)
native support for
            and embedded documents
      no more additional tables to handle them



                                          www.orientechnologies.com
Relationships
              are direct links
no Relational JOINS to connect multiple tables
    Load trees and   graphs in few ms!


                                       www.orientechnologies.com
SQL
select * from employee where name like '%Jay%' and status=0




                                                www.orientechnologies.com
For the most of the queries
everyday a programmer needs
    SQL is simpler,
   more readable and
     compact then
   Scripting (Map/Reduce)

                            www.orientechnologies.com
SELECT SUM(price) as prices, SUM(cost) as costs, prices-costs, margin/price
  FROM Balance

                                          VS
function (key, values) {
   var price = 0.0, cost = 0.0, margin = 0.0, marginPercent = 0.0;
   for (var i = 0; i < values.length; i++) {
      price += values[i].price;
      cost += values[i].cost;
   }
   margin = price - cost;
   marginPercent = margin / price;
   return {
      price:        price,
      cost:        cost,
      margin:        margin,
      marginPercent: marginPercent
   };
}
                                                                     www.orientechnologies.com
Asynchronous Query
invoke callback when a record matches the condition
             doesn't collect the result set
           perfect for immediate results
            useful to compute aggregates




                                           www.orientechnologies.com
®
runs
        Java
       everywhere is available JRE1.5+
            robust engine

                                www.orientechnologies.com
Language bindings
        Java as native
JRuby, Scala and Javascript ready
C, C++, Ruby, Node.js in progress

                           www.orientechnologies.com
Your language is
not supported (yet)?
 Write an adapter using the
   C, Java or HTTP binding

                        www.orientechnologies.com
HTTP RESTful
      firewall friendly
use it from the webbrowser
  use it from the ESB (SOA)

                          www.orientechnologies.com
Native JSON
{
    '@rid' = '26:10',
    '@class' = 'Developer',
    'name' : 'Luca',
    'surname' : 'Garulli',
    'company' : '19:76'
}

                              www.orientechnologies.com
Import/Export
            uses JSON format
online operations (don't stop the database)




                                      www.orientechnologies.com
Binary protocol
Fast compressed JSON over tcp/ip
         available for Java
     and soon C, C++ and Ruby

                          www.orientechnologies.com
RB+Tree                       index
   the best of B+Tree and RB-Tree
fast on browsing, low insertion cost
 It's a new algorithm (soon public)

                              www.orientechnologies.com
OO Inheritance
 Definition of Classes of documents
 Classes can extend others classes
    Queries are polymorphics
                     Contact
                  name : string
                 surname : string




      Customer                     Provider
 orders : List<Order>       products : List<Product>
                                               www.orientechnologies.com
Hooks
               similar to   triggers
catch events against records, database and transactions
  implement   custom cascade deletion algorithm
              enforce constraints


                                              www.orientechnologies.com
Fetch plans
 Choose what to fetch on query and document loading
Documents not fetched will be lazy-loaded on request
Invoice
 3:100
   |
   | customer
   +---------> Customer
   |            5:233
   | city             country
   +---------> City ---------> Country
   |           11:2              12:3
   | orders
   +--------->* [OrderItem OrderItem OrderItem]
                [ 8:12        8:19     8:23   ]
                                                  www.orientechnologies.com
Security
users and roles, encrypted passwords
        fine grain privileges


                             www.orientechnologies.com
4 storage modes
     embedded
    client/server
     distributed
     in-memory

                    www.orientechnologies.com
Embedded mode
                really fast
runs in the same JVM of the application,
      less resources, no tcp/ip used


                                www.orientechnologies.com
Client/server mode
client and server are separated JVMs
thousands of clients concurrently
   remote tcp/ip binary transport


                              www.orientechnologies.com
Distributed mode
 distribute database clusters on
multiple servers (in alpha status)


                             www.orientechnologies.com
In-memory mode
Database lives only in memory
       No disk is used
   Destroyed at shutdown


                          www.orientechnologies.com
User API
            Document Database




Key/Value Database       Graph Database

             Object Database

                                    www.orientechnologies.com
Document Database
   the base of all DB implementations
   documents have dynamic structure
something like a smart Map<String,Object>



                                 www.orientechnologies.com
Open the database
ODatabaseDocumentTx db = new ODatabaseDocumentTx( "remote:localhost/demo" );

db.open("admin", "admin");

try{

 …

} finally {                                Open the database 'demo'
  db.close();                               from a remote server
}



                                                               www.orientechnologies.com
Create a document
ODocument doc = new ODocument( db, "Person" );

doc.field( "name", "Luke" );                               Relationship
doc.field( "surname", "Skywalker" );

doc.field( "city", new ODocument("City" ).fields("name","Rome") );

doc.save();



                                                                www.orientechnologies.com
SQL Query
List<ODocument> result = db.query(
 new OSQLSynchQuery( "select * from person where city.name = 'Rome'" ) );

for( ODocument d : result ) {
  System.out.println( "Person: " + d.field( "name" ) + d.field( "surname" ) );
}




                                                                    www.orientechnologies.com
Native Query
List<ODocument> result = new ONativeSynchQuery<ODocument,
                              OQueryContextNativeSchema<ODocument>>(
             db, "Profile", new OQueryContextNativeSchema<ODocument>()) {

 @Override
 public boolean filter(OQueryContextNativeSchema<ODocument> iRecord) {
   return iRecord.field("city").field("name").eq("Rome").and().field("name").like("G%").go();
 };

}.setLimit(20).execute();



                                                                           www.orientechnologies.com
Update a document
List<ODocument> result = db.query(
 new OSQLSynchQuery( "select * from person where city.name = 'Rome'"));

for( ODocument d : result ) {
  d.field( "local", true );
  d.save();
}

// IT'S THE SAME OF:
int changed = db.command(
  new OSQLCommand( "update person set local = true where city.name = 'Rome'"))
        .execute();


                                                              www.orientechnologies.com
Delete a document
List<ODocument> result = db.query(
 new OSQLSynchQuery( "select * from person where city.name = 'Rome'" ) );

for( ODocument d : result ) {
 d.delete();

// IT'S THE SAME OF:
int deleted = db.command(
    new OSQLCommand( "delete person where city.name = 'Rome'")).execute();




                                                             www.orientechnologies.com
from/to JSON
// EXPORT JSON
System.out.println( document.toJSON() );


// IMPORT JSON
document.fromJSON( “{ '@class' = 'Developer',
                      'name' : 'Luca',
                      'surname' : 'Garulli' }” );
document.save();



                                                    www.orientechnologies.com
Use hooks (triggers)
public class HookTest extends ORecordHookAbstract {
 public saveProfile(){
  ODatabaseObjectTx database = new ODatabaseObjectTx("remote:localhost/demo");
  database.open("writer", "writer");

        database.registerHook(this);

        ...
    }

    @Override
    public void onRecordAfterCreate(ORecord<?> iRecord){
      System.out.println("Record created successfully");
    }
}


                                                                www.orientechnologies.com
Key/Value Database
          bucket / key / value
         HTTP RESTful protocol
Hazelcast plug-in to   distribute database


                                   www.orientechnologies.com
Key/Value = RB+Tree
works mainly using RB+Tree   custom indexes
 sort of Map<String,Map<String,Record>>



                                     www.orientechnologies.com
Object Database
wrapper on top of Document Database
 binds POJO from/to the database
     no OR-Mapping complexity
   no enhancement, no Java Proxies


                               www.orientechnologies.com
POJO mapping
Uses the reflection to bind POJO fields
at start-up caches reflection meta-data
             1-to-1 binding
 configurable options by @annotations

                               www.orientechnologies.com
Open the database
ODatabaseObjectTx db = new ODatabaseObjectTx( "remote:localhost/demo" );

db.open("admin", "admin");

try{

 …                                           Same usage of Document
                                              Database, but the class
} finally {                                        is different
  db.close();
}



                                                                www.orientechnologies.com
Create a persistent POJO
Person person = new Person();

person.setName( "Luke" );
                                        Relationship
person.setSurname( "Skywalker" );

person.setCity( new City( "Rome" ) );

db.save( person );




                                            www.orientechnologies.com
Polymorphics SQL Query
List<Person> result = database.query(
 new OSQLSynchQuery("select from person where city.name = 'Rome'"));


                             Queries are polymorphics
                           and subclasses of Person can be
                                  part of result set
for( Person p : result ) {
  if( p instanceof Customer )
    System.out.println("Customer: " + p.getName() + “ “ + p.getSurname() );
}


                                                             www.orientechnologies.com
Graph Database
 wrapper on top of Document Database
Few simple concepts: Vertex, Edge,
       Property and Index

                             www.orientechnologies.com
Example of a Graph




               www.orientechnologies.com
TinkerPop technologies
  sort of “standard” for GraphDB
 a lot of free open-source projects

      http://tinkerpop.com


                              www.orientechnologies.com
TinkerPop Blueprints
basic API to interact with GraphDB
   implements transactional and
 indexable property graph model
        bidirectional edges


                             www.orientechnologies.com
GraphDB                            & Blueprints API

OrientGraph graph = new OrientGraph("local:/tmp/db/graph”);

Vertex actor = graph.addVertex(null);
actor.setProperty("name", "Leonardo");
actor.setProperty("surname", "Di Caprio");

Vertex movie = graph.addVertex(null);
movie.setProperty("name", "Inception");

Edge edge = graph.addEdge(null, actor, movie, "StarredIn");

graph.shutdown();

                                                        www.orientechnologies.com
TinkerPop
     scripting language
 easy to learn and understand
Used for operations against graphs


                             www.orientechnologies.com
Graph example
  graph-example-1.xml




                        www.orientechnologies.com
Load graph
Run the console, open the database and load a graph in xml format


marko:~/software/gremlin$ ./gremlin.sh

         ,,,/
         (o o)
-----oOOo-(_)-oOOo-----

gremlin> $_g := orientdb:open('/tmp/graph/test')
==>orientgraph[/tmp/graph/test]

gremlin> g:load('data/graph-example-1.xml')
==>true

gremlin> $_g
==>orientgraph[/tmp/graph/test]
                                                        www.orientechnologies.com
Search
Displays outgoing edges of vertices with name equals to 'marko',
               then the name of inbound vertices


gremlin> g:key-v('name','marko')/outE
==>e[6:0][5:2-knows->5:1]
==>e[6:1][5:2-knows->5:4]
==>e[6:4][5:2-created->5:0]

gremlin> g:key-v('name','marko')/outE/inV/@name
==>vadas
==>josh
==>lop

gremlin> g:close()
==>true
                                                         www.orientechnologies.com
API resume
object, key/value and graph elements all work on top of Document

    you can always access to the underlying document

       changes to the document are reflected to the
          object, key/value and graph elements
                       and viceversa


                                                     www.orientechnologies.com
High-Availability
Cluster of distributed server nodes
 Synchronous, Asynchronous and Read-Only
                replication
Load-balancing between client ↔ servers and
             Servers ↔ Servers



                                        www.orientechnologies.com
Synchronous scenario
     Server #1 owns all the data, used for reads/writes
   Server #2 is the backup replica, can be used for reads
      Clients receive ack only when both are updated
           Server #1 and #2 are Always   Consistent

Client A         Client B            Client A        Client B



    Server #1                              Server #2
    (Leader+Owner)                         (Synchronous)



            DB                                  DB



                                                           www.orientechnologies.com
Asynchronous scenario
                     As for synchronous, but:
          Server #2 is Eventually Consistent
     Clients receive ack just when Server #1 is updated


Client A        Client B                    Client A        Client B



    Server #1                                   Server #2
    (Leader+Owner)                             (Asynchronous)
                           update-delay=x



           DB                                          DB



                                                                www.orientechnologies.com
Fail-over
 Server #1 logs changes while Server #2 is disconnected
 Transparent client switch to good servers (alpha status)
Running transactions will be repeated transparently (v0.9.26)


Client A        Client B             Client A        Client B



     Server #1                           Server #2
    (Leader+Owner)                       (Asynchronous)
                             Log
                           changes


           DB                                   DB



                                                          www.orientechnologies.com
Mixed scenario
                                  Strict Consistency is acceptable
Use Server #1 and #2 for cases when
Use Server #3 for cases when Eventually Consistency is acceptable




                             Server #1
                            (Leader+Owner)
 Server #2                                                    Server #3
 (Synchronous)                               update-delay=0   (Asynchronous)
                                  DB


      DB                                                           DB



                                                                www.orientechnologies.com
Partitioning
                Cluster level granularity
Place the “owner” close to the clients to reduce latency

Server main                                          Server USA
  (Leader)


  Customers
                                                       Customers
   Europe
                     Asynchronous (update-delay=0)      Europe
   (owner)

                                                       Customers
  Customers
                  Asynchronous (update-delay=0)           USA
    USA
                                                        (owner)




                                                       www.orientechnologies.com
Real world scenario I
           Distribute data across multiple sites
               Play with sync/asynch+delay
  Keep synchronous copies close and propagate in asynch
                                                                       Customers
    Server Farm Europe                                                   USA
                                             Server China
                                                (Owner)                Customers
Customers                                                                Asia
  USA        Server Main                     China Copy
                                              (Synchronous)            Customers
                (Owner)       Asynchronous                              Europe
Customers
  Asia                         propagation
             Main Copy
Customers     (Synchronous)
 Europe                                                                Customers
                                             Server USA                  USA
                                                (Owner)
                                                                       Customers
                                                                         Asia
                                              USA Copy
                                              (Synchronous)            Customers
                                                                        Europe

                                                              www.orientechnologies.com
Real world scenario II
                     Put server nodes in              chain
                     Load-balance requests
                                                                  China East
Server Copy                                                         Read-only
(Synchronous)
                                                                 China West
                                                                    Read-only


                                 Server China                   China North
                                     (Asynchronous)                 Read-only
Server   Main
(Leader-Owner)
                                 Server USA                       USA South
                                     (Asynchronous)                 Read-only

                                                                    Canada
         Update European Customer:                                  Read-only
           Propagate the change
                                                              www.orientechnologies.com
Choose the best strategy
                    for your use-case

Server Copy            Client B
 (Synchronous)
                    consistent reads,                       Client D
                    delegated writes                    ev. consistent reads,
                                                              no writes



 Server   Main                    Server China            China North
(Leader-Owner)                     (Asynchronous)             Read-only



   Client A                             Client C
consistent reads,               ev. consistent reads,
  direct writes                   delegates writes


                                                        www.orientechnologies.com
Enhanced SQL
SQL is not enough for collections, maps, trees and graphs
              need to enhance SQL syntax
      Easy syntax derived from JDO/JPA standards




                                               www.orientechnologies.com
SQL & relationships
select from Account where address.city.country.name = 'Italy'

select from Account where addresses contains (city.country.name = 'Italy')




                                                                www.orientechnologies.com
SQL & trees/graphs
select from Profile where friends traverse(0,7) ( sex = 'female' )

        (Soon new specific operators for trees and graphs)




                                                             www.orientechnologies.com
SQL & strings
select from Profile where name.toUpperCase() = 'LUCA'

select from City where country.name.substring(1,3).toUpperCase() = 'TAL'

select from Agenda where phones contains ( number.indexOf( '+39' ) > -1 )

select from Agenda where email matches 'bA-Z0-9._%+-?+@A-Z0-9.-?+.A-Z?{2,4}b'




                                                                   www.orientechnologies.com
SQL & conversions
select from Shapes where area.toFloat() > 3.14

select from Agenda where birthDate.toDateTime() > '1976-10-26 07:00:00'

select from Workflow where completed.toBoolean() = true




                                                           www.orientechnologies.com
SQL & schema-less
select from Profile where any() like '%Jay%'

select from Stock where all() is not null




                                               www.orientechnologies.com
SQL & collections
select from Tree where children contains ( married = true )

select from Tree where children containsAll ( married = true )

select from User where roles containsKey 'shutdown'

select from Graph where edges.size() > 0




                                                        www.orientechnologies.com
SQL & documents
select from Vehicle where @class = 'Car'

select from Friend where @version > 100

select from File where @size > 1000000




                                           www.orientechnologies.com
Console
ORIENT database v.0.9.23 www.orientechnologies.com
Type 'help' to display all the commands supported.

> connect remote:localhost/demo admin admin
Connecting to database [remote:localhost/demo] with user 'admin'...OK

> select from profile where nick.startsWith('L')
---+--------+--------------------+--------------------+--------------------+
  #| REC ID |NICK                |SEX                 |AGE                 |
---+--------+--------------------+--------------------+--------------------+
  0|    10:0|Lvca                |male                |34
  1|    10:3|Leo                 |male                |22
  2|    10:7|Luisa               |female              |27
3 item(s) found. Query executed in 0.013 sec(s).

> close
Disconnecting from the database [demo]...OK

> quit
                                                               www.orientechnologies.com
OrientDB Studio/SQL query




                 Resultset is editable and
                 changes are immediately
                        persistent!

                            www.orientechnologies.com
OrientDB Studio/db structure

                      Physical structure
                         of database




                           www.orientechnologies.com
OrientDB Studio/server profiler




                     Statistics and timing are
                      collected in real-time




                                www.orientechnologies.com
Always        Free
Open Source Apache 2 license
     free for any purposes,
       even commercials

                              www.orientechnologies.com
Prof€$$ional
          $€rvic€$
     by a network of companies through
             Orient Technologies
support, training, consulting, mentoring

                                     www.orientechnologies.com
OrientDB             OrientDB
for Java developers   Master Development
      8 hours                14 hours


     OrientDB               OrientDB
      for SOA         and the power of graphs
      6 hours                 6 hours


     OrientDB             OrientPlanet
      for DBA          for Web Developers
      6 hours                 6 hours

                                        www.orientechnologies.com
Certification Program
        to be part of the network
               do courses
       share revenues for support
            work as consultant

           Contact
commercial@orientechnologies.com

                                   www.orientechnologies.com
Luca Garulli
                              Author of OrientDB and
                             Roma <Meta> Framework
                               Open Source projects,

                           Member of JSR#12 (jdo 1.0) and
                                JSR#243 (jdo 2.0)

                            CTO at Asset Data and Orient
www.twitter.com/lgarulli            Technologies

       @Rome, Italy             Technical Manager at
                                Romulus consortium
                                               www.orientechnologies.com

Weitere ähnliche Inhalte

Was ist angesagt?

A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarArangoDB Database
 
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Luigi Dell'Aquila
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Codemotion
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...jaxLondonConference
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDBMongoDB
 
Graph Databases & OrientDB
Graph Databases & OrientDBGraph Databases & OrientDB
Graph Databases & OrientDBArpit Poladia
 
ArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB Database
 
Rupy2012 ArangoDB Workshop Part1
Rupy2012 ArangoDB Workshop Part1Rupy2012 ArangoDB Workshop Part1
Rupy2012 ArangoDB Workshop Part1ArangoDB Database
 
Scaling MongoDB
Scaling MongoDBScaling MongoDB
Scaling MongoDBMongoDB
 
MySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMorgan Tocker
 
Using Apache Spark as ETL engine. Pros and Cons
Using Apache Spark as ETL engine. Pros and Cons          Using Apache Spark as ETL engine. Pros and Cons
Using Apache Spark as ETL engine. Pros and Cons Provectus
 
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UK
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UKIntroduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UK
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UKSkills Matter
 
Power JSON with PostgreSQL
Power JSON with PostgreSQLPower JSON with PostgreSQL
Power JSON with PostgreSQLEDB
 
Hw09 Sqoop Database Import For Hadoop
Hw09   Sqoop Database Import For HadoopHw09   Sqoop Database Import For Hadoop
Hw09 Sqoop Database Import For HadoopCloudera, Inc.
 
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Аліна Шепшелей
 
Scaling ArangoDB on Mesosphere DCOS
Scaling ArangoDB on Mesosphere DCOSScaling ArangoDB on Mesosphere DCOS
Scaling ArangoDB on Mesosphere DCOSMax Neunhöffer
 

Was ist angesagt? (20)

A Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release WebinarA Graph Database That Scales - ArangoDB 3.7 Release Webinar
A Graph Database That Scales - ArangoDB 3.7 Release Webinar
 
CouchDB
CouchDBCouchDB
CouchDB
 
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
Geospatial Graphs made easy with OrientDB - Codemotion Warsaw 2016
 
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
Perchè potresti aver bisogno di un database NoSQL anche se non sei Google o F...
 
Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...Large scale, interactive ad-hoc queries over different datastores with Apache...
Large scale, interactive ad-hoc queries over different datastores with Apache...
 
CouchDB
CouchDBCouchDB
CouchDB
 
Transitioning from SQL to MongoDB
Transitioning from SQL to MongoDBTransitioning from SQL to MongoDB
Transitioning from SQL to MongoDB
 
Graph Databases & OrientDB
Graph Databases & OrientDBGraph Databases & OrientDB
Graph Databases & OrientDB
 
ArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQLArangoDB – A different approach to NoSQL
ArangoDB – A different approach to NoSQL
 
Rupy2012 ArangoDB Workshop Part1
Rupy2012 ArangoDB Workshop Part1Rupy2012 ArangoDB Workshop Part1
Rupy2012 ArangoDB Workshop Part1
 
Scaling MongoDB
Scaling MongoDBScaling MongoDB
Scaling MongoDB
 
MySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer GuideMySQL 8.0 Optimizer Guide
MySQL 8.0 Optimizer Guide
 
Software + Babies
Software + BabiesSoftware + Babies
Software + Babies
 
Using Apache Spark as ETL engine. Pros and Cons
Using Apache Spark as ETL engine. Pros and Cons          Using Apache Spark as ETL engine. Pros and Cons
Using Apache Spark as ETL engine. Pros and Cons
 
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UK
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UKIntroduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UK
Introduction to Sqoop Aaron Kimball Cloudera Hadoop User Group UK
 
Power JSON with PostgreSQL
Power JSON with PostgreSQLPower JSON with PostgreSQL
Power JSON with PostgreSQL
 
ArangoDB
ArangoDBArangoDB
ArangoDB
 
Hw09 Sqoop Database Import For Hadoop
Hw09   Sqoop Database Import For HadoopHw09   Sqoop Database Import For Hadoop
Hw09 Sqoop Database Import For Hadoop
 
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
Vitalii Bondarenko HDinsight: spark. advanced in memory big-data analytics wi...
 
Scaling ArangoDB on Mesosphere DCOS
Scaling ArangoDB on Mesosphere DCOSScaling ArangoDB on Mesosphere DCOS
Scaling ArangoDB on Mesosphere DCOS
 

Ähnlich wie OrientDB the database for the web 1.1

OrientDB for real & Web App development
OrientDB for real & Web App developmentOrientDB for real & Web App development
OrientDB for real & Web App developmentLuca Garulli
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesUdita Plaha
 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application developmentzonathen
 
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...javier ramirez
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftSerhat Dirik
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web appsyoavrubin
 
Using MongoDB to Build a Fast and Scalable Content Repository
Using MongoDB to Build a Fast and Scalable Content RepositoryUsing MongoDB to Build a Fast and Scalable Content Repository
Using MongoDB to Build a Fast and Scalable Content RepositoryMongoDB
 
Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack DiscussionZaiyang Li
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1Mohammad Qureshi
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudMicrosoft ArcReady
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbonezonathen
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development Shean McManus
 
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...Precisely
 
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...Olivier DASINI
 
The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentMike Taylor
 
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at Provectus
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at ProvectusHow I fell in love with Serverless, Yevhen Duma, DevOps Engineer at Provectus
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at ProvectusProvectus
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesComunidade NetPonto
 
Basic Application Performance Optimization Techniques (Backend)
Basic Application Performance Optimization Techniques (Backend)Basic Application Performance Optimization Techniques (Backend)
Basic Application Performance Optimization Techniques (Backend)Klas Berlič Fras
 

Ähnlich wie OrientDB the database for the web 1.1 (20)

OrientDB for real & Web App development
OrientDB for real & Web App developmentOrientDB for real & Web App development
OrientDB for real & Web App development
 
Crash Course HTML/Rails Slides
Crash Course HTML/Rails SlidesCrash Course HTML/Rails Slides
Crash Course HTML/Rails Slides
 
Intro to mobile web application development
Intro to mobile web application developmentIntro to mobile web application development
Intro to mobile web application development
 
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...
Big Data analytics with Nginx, Logstash, Redis, Google Bigquery and Neo4j, ja...
 
L19 Application Architecture
L19 Application ArchitectureL19 Application Architecture
L19 Application Architecture
 
Cloud Native Applications on OpenShift
Cloud Native Applications on OpenShiftCloud Native Applications on OpenShift
Cloud Native Applications on OpenShift
 
Dojo - from web page to web apps
Dojo - from web page to web appsDojo - from web page to web apps
Dojo - from web page to web apps
 
Using Data Lakes
Using Data LakesUsing Data Lakes
Using Data Lakes
 
Using MongoDB to Build a Fast and Scalable Content Repository
Using MongoDB to Build a Fast and Scalable Content RepositoryUsing MongoDB to Build a Fast and Scalable Content Repository
Using MongoDB to Build a Fast and Scalable Content Repository
 
Technology Stack Discussion
Technology Stack DiscussionTechnology Stack Discussion
Technology Stack Discussion
 
Intro to node and mongodb 1
Intro to node and mongodb   1Intro to node and mongodb   1
Intro to node and mongodb 1
 
ArcReady - Architecting For The Cloud
ArcReady - Architecting For The CloudArcReady - Architecting For The Cloud
ArcReady - Architecting For The Cloud
 
Intro to-html-backbone
Intro to-html-backboneIntro to-html-backbone
Intro to-html-backbone
 
Normalizing x pages web development
Normalizing x pages web development Normalizing x pages web development
Normalizing x pages web development
 
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
Big Data Goes Airborne. Propelling Your Big Data Initiative with Ironcluster ...
 
MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...MySQL Document Store - A Document Store with all the benefts of a Transactona...
MySQL Document Store - A Document Store with all the benefts of a Transactona...
 
The Importance Things of Full Stack Development
The Importance Things of Full Stack DevelopmentThe Importance Things of Full Stack Development
The Importance Things of Full Stack Development
 
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at Provectus
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at ProvectusHow I fell in love with Serverless, Yevhen Duma, DevOps Engineer at Provectus
How I fell in love with Serverless, Yevhen Duma, DevOps Engineer at Provectus
 
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de AplicaçõesWindows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
Windows Azure - Uma Plataforma para o Desenvolvimento de Aplicações
 
Basic Application Performance Optimization Techniques (Backend)
Basic Application Performance Optimization Techniques (Backend)Basic Application Performance Optimization Techniques (Backend)
Basic Application Performance Optimization Techniques (Backend)
 

Mehr von Luca Garulli

Scale Out Your Graph Across Servers and Clouds with OrientDB
Scale Out Your Graph Across Servers and Clouds  with OrientDBScale Out Your Graph Across Servers and Clouds  with OrientDB
Scale Out Your Graph Across Servers and Clouds with OrientDBLuca Garulli
 
Polyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesPolyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesLuca Garulli
 
How Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionHow Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionLuca Garulli
 
OrientDB and Hazelcast
OrientDB and HazelcastOrientDB and Hazelcast
OrientDB and HazelcastLuca Garulli
 
Why relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeWhy relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeLuca Garulli
 
Why relationships are cool but "join" sucks
Why relationships are cool but "join" sucksWhy relationships are cool but "join" sucks
Why relationships are cool but "join" sucksLuca Garulli
 
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Luca Garulli
 
Switching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itSwitching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itLuca Garulli
 
Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Luca Garulli
 
Switching from relational to the graph model
Switching from relational to the graph modelSwitching from relational to the graph model
Switching from relational to the graph modelLuca Garulli
 
Internet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptInternet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptLuca Garulli
 
Switching from the Relational to the Graph model
Switching from the Relational to the Graph modelSwitching from the Relational to the Graph model
Switching from the Relational to the Graph modelLuca Garulli
 
OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)Luca Garulli
 
Design your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBDesign your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBLuca Garulli
 
No sql matters_2012_keynote
No sql matters_2012_keynoteNo sql matters_2012_keynote
No sql matters_2012_keynoteLuca Garulli
 
OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1Luca Garulli
 
Roma introduction and concepts
Roma introduction and conceptsRoma introduction and concepts
Roma introduction and conceptsLuca Garulli
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQLLuca Garulli
 
RomaFramework Tutorial Basics
RomaFramework Tutorial BasicsRomaFramework Tutorial Basics
RomaFramework Tutorial BasicsLuca Garulli
 
Roma Meta Framework Concepts @JavaDay Rome 2007
Roma Meta Framework Concepts @JavaDay Rome 2007Roma Meta Framework Concepts @JavaDay Rome 2007
Roma Meta Framework Concepts @JavaDay Rome 2007Luca Garulli
 

Mehr von Luca Garulli (20)

Scale Out Your Graph Across Servers and Clouds with OrientDB
Scale Out Your Graph Across Servers and Clouds  with OrientDBScale Out Your Graph Across Servers and Clouds  with OrientDB
Scale Out Your Graph Across Servers and Clouds with OrientDB
 
Polyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model DatabasesPolyglot Persistence vs Multi-Model Databases
Polyglot Persistence vs Multi-Model Databases
 
How Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolutionHow Graph Databases started the Multi Model revolution
How Graph Databases started the Multi Model revolution
 
OrientDB and Hazelcast
OrientDB and HazelcastOrientDB and Hazelcast
OrientDB and Hazelcast
 
Why relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in RomeWhy relationships are cool but join sucks - Big Data & Graphs in Rome
Why relationships are cool but join sucks - Big Data & Graphs in Rome
 
Why relationships are cool but "join" sucks
Why relationships are cool but "join" sucksWhy relationships are cool but "join" sucks
Why relationships are cool but "join" sucks
 
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
Soffri di patologie da "domini complessi con tante relazioni"? C'è una nuova ...
 
Switching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.itSwitching from Relational 2 Graph - CloudConf.it
Switching from Relational 2 Graph - CloudConf.it
 
Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3Switching from Relational to the Graph model v1.3
Switching from Relational to the Graph model v1.3
 
Switching from relational to the graph model
Switching from relational to the graph modelSwitching from relational to the graph model
Switching from relational to the graph model
 
Internet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScriptInternet Apps powered by NoSQL and JavaScript
Internet Apps powered by NoSQL and JavaScript
 
Switching from the Relational to the Graph model
Switching from the Relational to the Graph modelSwitching from the Relational to the Graph model
Switching from the Relational to the Graph model
 
OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)OrientDB document or graph? Select the right model (old presentation)
OrientDB document or graph? Select the right model (old presentation)
 
Design your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDBDesign your application using Persistent Graphs and OrientDB
Design your application using Persistent Graphs and OrientDB
 
No sql matters_2012_keynote
No sql matters_2012_keynoteNo sql matters_2012_keynote
No sql matters_2012_keynote
 
OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1OrientDB distributed architecture 1.1
OrientDB distributed architecture 1.1
 
Roma introduction and concepts
Roma introduction and conceptsRoma introduction and concepts
Roma introduction and concepts
 
OrientDB introduction - NoSQL
OrientDB introduction - NoSQLOrientDB introduction - NoSQL
OrientDB introduction - NoSQL
 
RomaFramework Tutorial Basics
RomaFramework Tutorial BasicsRomaFramework Tutorial Basics
RomaFramework Tutorial Basics
 
Roma Meta Framework Concepts @JavaDay Rome 2007
Roma Meta Framework Concepts @JavaDay Rome 2007Roma Meta Framework Concepts @JavaDay Rome 2007
Roma Meta Framework Concepts @JavaDay Rome 2007
 

Kürzlich hochgeladen

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsMark Billinghurst
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationMichael W. Hawkins
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerThousandEyes
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationRidwan Fadjar
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphNeo4j
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdfhans926745
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Kürzlich hochgeladen (20)

Human Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR SystemsHuman Factors of XR: Using Human Factors to Design XR Systems
Human Factors of XR: Using Human Factors to Design XR Systems
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
My Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 PresentationMy Hashitalk Indonesia April 2024 Presentation
My Hashitalk Indonesia April 2024 Presentation
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge GraphSIEMENS: RAPUNZEL – A Tale About Knowledge Graph
SIEMENS: RAPUNZEL – A Tale About Knowledge Graph
 
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

OrientDB the database for the web 1.1

  • 2. Why do I need another DBMS? www.orientechnologies.com
  • 3. But the question is: are DBMSs ready for the Web age? www.orientechnologies.com
  • 4. Web means: Hundreds of users today, thousands or millions tomorrow www.orientechnologies.com
  • 5. Web means: Idea → Demo in few weeks www.orientechnologies.com
  • 6. Web means: Fast and frequent changes of requirements and data structures www.orientechnologies.com
  • 7. Web means: + social + relationships + interconnections = graph www.orientechnologies.com
  • 8. Web means: Low usage of resources run on cheap hardware www.orientechnologies.com
  • 9. Web means: Speak HTTP, REST and JSON please www.orientechnologies.com
  • 10. Why is the database so important in modern applications? www.orientechnologies.com
  • 11. Because modern applications are mostly I/O Bound not CPU bound www.orientechnologies.com
  • 12. NoSQL = “Not Only SQL” = make the best choice for your use case www.orientechnologies.com
  • 13. Can I trust new DBMSs? www.orientechnologies.com
  • 15. Non exhaustive list of NoSQL products: AllegroGraph, Amazon SimpleDB, Amazon Dynamo, Dynomite, BerkleyDB, Google BigTable, Cassandra, CouchDB, DB4O, Hbase, Hipertable, Hive, Jackrabbit, InfiniteGraph, InfoGrid, Memcached, MemcacheDB, Mnesia, M/DB/DT.M, MongoDB, Neo4J, OrientDB, Pig, Project Voldemort, RavenDB, Redis, Riak, Scalaris, Sesame, Sones, Terrastore, Tokyo Cabinet/Tyrant, Yahoo! Pnuts/Sherpa www.orientechnologies.com
  • 16. “NoSQL container” groups so very-very-very different products, no standard, difficult to choice, difficult to learn them www.orientechnologies.com
  • 17. Can I have a Fast, scalable, flexible storage with ACID Tx, SQL, Security easy to use and maintain? www.orientechnologies.com
  • 18. The fastest NoSQL document-graph dbms www.orientechnologies.com
  • 19. +12 years of research www.orientechnologies.com
  • 20. +1 year of design and develop www.orientechnologies.com
  • 21. = best features of newest NoSQL solutions + best features of Relational DBMS + new ideas and concepts www.orientechnologies.com
  • 22. Ø config download, unzip, run! cut & paste the db www.orientechnologies.com
  • 23. No dependencies rd with 3 parties software no conflicts with other software just 1 Mb of run-time libraries www.orientechnologies.com
  • 24. 150,000 records per second www.orientechnologies.com
  • 25. Schema-less schema is not mandatory, relaxed model, collect heterogeneous documents all together www.orientechnologies.com
  • 26. Schema-full schema with constraints on fields and validation rules Customer.age > 17 Customer.address not null Customer.surname is mandatory Customer.email matches 'b[A-Z0-9._%+-]+@[A-Z0-9.-]+.[A-Z]{2,4}b' www.orientechnologies.com
  • 27. Schema-mixed schema with mandatory and optional fields + constraints the best of schema-less and schema-full modes www.orientechnologies.com
  • 28. ACID Transactions db.begin(); try{ // your code ... db.commit(); } catch( Exception e ) { db.rollback(); } www.orientechnologies.com
  • 29. Complex types collections, maps (key/value) native support for and embedded documents no more additional tables to handle them www.orientechnologies.com
  • 30. Relationships are direct links no Relational JOINS to connect multiple tables Load trees and graphs in few ms! www.orientechnologies.com
  • 31. SQL select * from employee where name like '%Jay%' and status=0 www.orientechnologies.com
  • 32. For the most of the queries everyday a programmer needs SQL is simpler, more readable and compact then Scripting (Map/Reduce) www.orientechnologies.com
  • 33. SELECT SUM(price) as prices, SUM(cost) as costs, prices-costs, margin/price FROM Balance VS function (key, values) { var price = 0.0, cost = 0.0, margin = 0.0, marginPercent = 0.0; for (var i = 0; i < values.length; i++) { price += values[i].price; cost += values[i].cost; } margin = price - cost; marginPercent = margin / price; return { price: price, cost: cost, margin: margin, marginPercent: marginPercent }; } www.orientechnologies.com
  • 34. Asynchronous Query invoke callback when a record matches the condition doesn't collect the result set perfect for immediate results useful to compute aggregates www.orientechnologies.com
  • 35. ® runs Java everywhere is available JRE1.5+ robust engine www.orientechnologies.com
  • 36. Language bindings Java as native JRuby, Scala and Javascript ready C, C++, Ruby, Node.js in progress www.orientechnologies.com
  • 37. Your language is not supported (yet)? Write an adapter using the C, Java or HTTP binding www.orientechnologies.com
  • 38. HTTP RESTful firewall friendly use it from the webbrowser use it from the ESB (SOA) www.orientechnologies.com
  • 39. Native JSON { '@rid' = '26:10', '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli', 'company' : '19:76' } www.orientechnologies.com
  • 40. Import/Export uses JSON format online operations (don't stop the database) www.orientechnologies.com
  • 41. Binary protocol Fast compressed JSON over tcp/ip available for Java and soon C, C++ and Ruby www.orientechnologies.com
  • 42. RB+Tree index the best of B+Tree and RB-Tree fast on browsing, low insertion cost It's a new algorithm (soon public) www.orientechnologies.com
  • 43. OO Inheritance Definition of Classes of documents Classes can extend others classes Queries are polymorphics Contact name : string surname : string Customer Provider orders : List<Order> products : List<Product> www.orientechnologies.com
  • 44. Hooks similar to triggers catch events against records, database and transactions implement custom cascade deletion algorithm enforce constraints www.orientechnologies.com
  • 45. Fetch plans Choose what to fetch on query and document loading Documents not fetched will be lazy-loaded on request Invoice 3:100 | | customer +---------> Customer | 5:233 | city country +---------> City ---------> Country | 11:2 12:3 | orders +--------->* [OrderItem OrderItem OrderItem] [ 8:12 8:19 8:23 ] www.orientechnologies.com
  • 46. Security users and roles, encrypted passwords fine grain privileges www.orientechnologies.com
  • 47. 4 storage modes embedded client/server distributed in-memory www.orientechnologies.com
  • 48. Embedded mode really fast runs in the same JVM of the application, less resources, no tcp/ip used www.orientechnologies.com
  • 49. Client/server mode client and server are separated JVMs thousands of clients concurrently remote tcp/ip binary transport www.orientechnologies.com
  • 50. Distributed mode distribute database clusters on multiple servers (in alpha status) www.orientechnologies.com
  • 51. In-memory mode Database lives only in memory No disk is used Destroyed at shutdown www.orientechnologies.com
  • 52. User API Document Database Key/Value Database Graph Database Object Database www.orientechnologies.com
  • 53. Document Database the base of all DB implementations documents have dynamic structure something like a smart Map<String,Object> www.orientechnologies.com
  • 54. Open the database ODatabaseDocumentTx db = new ODatabaseDocumentTx( "remote:localhost/demo" ); db.open("admin", "admin"); try{ … } finally { Open the database 'demo' db.close(); from a remote server } www.orientechnologies.com
  • 55. Create a document ODocument doc = new ODocument( db, "Person" ); doc.field( "name", "Luke" ); Relationship doc.field( "surname", "Skywalker" ); doc.field( "city", new ODocument("City" ).fields("name","Rome") ); doc.save(); www.orientechnologies.com
  • 56. SQL Query List<ODocument> result = db.query( new OSQLSynchQuery( "select * from person where city.name = 'Rome'" ) ); for( ODocument d : result ) { System.out.println( "Person: " + d.field( "name" ) + d.field( "surname" ) ); } www.orientechnologies.com
  • 57. Native Query List<ODocument> result = new ONativeSynchQuery<ODocument, OQueryContextNativeSchema<ODocument>>( db, "Profile", new OQueryContextNativeSchema<ODocument>()) { @Override public boolean filter(OQueryContextNativeSchema<ODocument> iRecord) { return iRecord.field("city").field("name").eq("Rome").and().field("name").like("G%").go(); }; }.setLimit(20).execute(); www.orientechnologies.com
  • 58. Update a document List<ODocument> result = db.query( new OSQLSynchQuery( "select * from person where city.name = 'Rome'")); for( ODocument d : result ) { d.field( "local", true ); d.save(); } // IT'S THE SAME OF: int changed = db.command( new OSQLCommand( "update person set local = true where city.name = 'Rome'")) .execute(); www.orientechnologies.com
  • 59. Delete a document List<ODocument> result = db.query( new OSQLSynchQuery( "select * from person where city.name = 'Rome'" ) ); for( ODocument d : result ) { d.delete(); // IT'S THE SAME OF: int deleted = db.command( new OSQLCommand( "delete person where city.name = 'Rome'")).execute(); www.orientechnologies.com
  • 60. from/to JSON // EXPORT JSON System.out.println( document.toJSON() ); // IMPORT JSON document.fromJSON( “{ '@class' = 'Developer', 'name' : 'Luca', 'surname' : 'Garulli' }” ); document.save(); www.orientechnologies.com
  • 61. Use hooks (triggers) public class HookTest extends ORecordHookAbstract { public saveProfile(){ ODatabaseObjectTx database = new ODatabaseObjectTx("remote:localhost/demo"); database.open("writer", "writer"); database.registerHook(this); ... } @Override public void onRecordAfterCreate(ORecord<?> iRecord){ System.out.println("Record created successfully"); } } www.orientechnologies.com
  • 62. Key/Value Database bucket / key / value HTTP RESTful protocol Hazelcast plug-in to distribute database www.orientechnologies.com
  • 63. Key/Value = RB+Tree works mainly using RB+Tree custom indexes sort of Map<String,Map<String,Record>> www.orientechnologies.com
  • 64. Object Database wrapper on top of Document Database binds POJO from/to the database no OR-Mapping complexity no enhancement, no Java Proxies www.orientechnologies.com
  • 65. POJO mapping Uses the reflection to bind POJO fields at start-up caches reflection meta-data 1-to-1 binding configurable options by @annotations www.orientechnologies.com
  • 66. Open the database ODatabaseObjectTx db = new ODatabaseObjectTx( "remote:localhost/demo" ); db.open("admin", "admin"); try{ … Same usage of Document Database, but the class } finally { is different db.close(); } www.orientechnologies.com
  • 67. Create a persistent POJO Person person = new Person(); person.setName( "Luke" ); Relationship person.setSurname( "Skywalker" ); person.setCity( new City( "Rome" ) ); db.save( person ); www.orientechnologies.com
  • 68. Polymorphics SQL Query List<Person> result = database.query( new OSQLSynchQuery("select from person where city.name = 'Rome'")); Queries are polymorphics and subclasses of Person can be part of result set for( Person p : result ) { if( p instanceof Customer ) System.out.println("Customer: " + p.getName() + “ “ + p.getSurname() ); } www.orientechnologies.com
  • 69. Graph Database wrapper on top of Document Database Few simple concepts: Vertex, Edge, Property and Index www.orientechnologies.com
  • 70. Example of a Graph www.orientechnologies.com
  • 71. TinkerPop technologies sort of “standard” for GraphDB a lot of free open-source projects http://tinkerpop.com www.orientechnologies.com
  • 72. TinkerPop Blueprints basic API to interact with GraphDB implements transactional and indexable property graph model bidirectional edges www.orientechnologies.com
  • 73. GraphDB & Blueprints API OrientGraph graph = new OrientGraph("local:/tmp/db/graph”); Vertex actor = graph.addVertex(null); actor.setProperty("name", "Leonardo"); actor.setProperty("surname", "Di Caprio"); Vertex movie = graph.addVertex(null); movie.setProperty("name", "Inception"); Edge edge = graph.addEdge(null, actor, movie, "StarredIn"); graph.shutdown(); www.orientechnologies.com
  • 74. TinkerPop scripting language easy to learn and understand Used for operations against graphs www.orientechnologies.com
  • 75. Graph example graph-example-1.xml www.orientechnologies.com
  • 76. Load graph Run the console, open the database and load a graph in xml format marko:~/software/gremlin$ ./gremlin.sh ,,,/ (o o) -----oOOo-(_)-oOOo----- gremlin> $_g := orientdb:open('/tmp/graph/test') ==>orientgraph[/tmp/graph/test] gremlin> g:load('data/graph-example-1.xml') ==>true gremlin> $_g ==>orientgraph[/tmp/graph/test] www.orientechnologies.com
  • 77. Search Displays outgoing edges of vertices with name equals to 'marko', then the name of inbound vertices gremlin> g:key-v('name','marko')/outE ==>e[6:0][5:2-knows->5:1] ==>e[6:1][5:2-knows->5:4] ==>e[6:4][5:2-created->5:0] gremlin> g:key-v('name','marko')/outE/inV/@name ==>vadas ==>josh ==>lop gremlin> g:close() ==>true www.orientechnologies.com
  • 78. API resume object, key/value and graph elements all work on top of Document you can always access to the underlying document changes to the document are reflected to the object, key/value and graph elements and viceversa www.orientechnologies.com
  • 79. High-Availability Cluster of distributed server nodes Synchronous, Asynchronous and Read-Only replication Load-balancing between client ↔ servers and Servers ↔ Servers www.orientechnologies.com
  • 80. Synchronous scenario Server #1 owns all the data, used for reads/writes Server #2 is the backup replica, can be used for reads Clients receive ack only when both are updated Server #1 and #2 are Always Consistent Client A Client B Client A Client B Server #1 Server #2 (Leader+Owner) (Synchronous) DB DB www.orientechnologies.com
  • 81. Asynchronous scenario As for synchronous, but: Server #2 is Eventually Consistent Clients receive ack just when Server #1 is updated Client A Client B Client A Client B Server #1 Server #2 (Leader+Owner) (Asynchronous) update-delay=x DB DB www.orientechnologies.com
  • 82. Fail-over Server #1 logs changes while Server #2 is disconnected Transparent client switch to good servers (alpha status) Running transactions will be repeated transparently (v0.9.26) Client A Client B Client A Client B Server #1 Server #2 (Leader+Owner) (Asynchronous) Log changes DB DB www.orientechnologies.com
  • 83. Mixed scenario Strict Consistency is acceptable Use Server #1 and #2 for cases when Use Server #3 for cases when Eventually Consistency is acceptable Server #1 (Leader+Owner) Server #2 Server #3 (Synchronous) update-delay=0 (Asynchronous) DB DB DB www.orientechnologies.com
  • 84. Partitioning Cluster level granularity Place the “owner” close to the clients to reduce latency Server main Server USA (Leader) Customers Customers Europe Asynchronous (update-delay=0) Europe (owner) Customers Customers Asynchronous (update-delay=0) USA USA (owner) www.orientechnologies.com
  • 85. Real world scenario I Distribute data across multiple sites Play with sync/asynch+delay Keep synchronous copies close and propagate in asynch Customers Server Farm Europe USA Server China (Owner) Customers Customers Asia USA Server Main China Copy (Synchronous) Customers (Owner) Asynchronous Europe Customers Asia propagation Main Copy Customers (Synchronous) Europe Customers Server USA USA (Owner) Customers Asia USA Copy (Synchronous) Customers Europe www.orientechnologies.com
  • 86. Real world scenario II Put server nodes in chain Load-balance requests China East Server Copy Read-only (Synchronous) China West Read-only Server China China North (Asynchronous) Read-only Server Main (Leader-Owner) Server USA USA South (Asynchronous) Read-only Canada Update European Customer: Read-only Propagate the change www.orientechnologies.com
  • 87. Choose the best strategy for your use-case Server Copy Client B (Synchronous) consistent reads, Client D delegated writes ev. consistent reads, no writes Server Main Server China China North (Leader-Owner) (Asynchronous) Read-only Client A Client C consistent reads, ev. consistent reads, direct writes delegates writes www.orientechnologies.com
  • 88. Enhanced SQL SQL is not enough for collections, maps, trees and graphs need to enhance SQL syntax Easy syntax derived from JDO/JPA standards www.orientechnologies.com
  • 89. SQL & relationships select from Account where address.city.country.name = 'Italy' select from Account where addresses contains (city.country.name = 'Italy') www.orientechnologies.com
  • 90. SQL & trees/graphs select from Profile where friends traverse(0,7) ( sex = 'female' ) (Soon new specific operators for trees and graphs) www.orientechnologies.com
  • 91. SQL & strings select from Profile where name.toUpperCase() = 'LUCA' select from City where country.name.substring(1,3).toUpperCase() = 'TAL' select from Agenda where phones contains ( number.indexOf( '+39' ) > -1 ) select from Agenda where email matches 'bA-Z0-9._%+-?+@A-Z0-9.-?+.A-Z?{2,4}b' www.orientechnologies.com
  • 92. SQL & conversions select from Shapes where area.toFloat() > 3.14 select from Agenda where birthDate.toDateTime() > '1976-10-26 07:00:00' select from Workflow where completed.toBoolean() = true www.orientechnologies.com
  • 93. SQL & schema-less select from Profile where any() like '%Jay%' select from Stock where all() is not null www.orientechnologies.com
  • 94. SQL & collections select from Tree where children contains ( married = true ) select from Tree where children containsAll ( married = true ) select from User where roles containsKey 'shutdown' select from Graph where edges.size() > 0 www.orientechnologies.com
  • 95. SQL & documents select from Vehicle where @class = 'Car' select from Friend where @version > 100 select from File where @size > 1000000 www.orientechnologies.com
  • 96. Console ORIENT database v.0.9.23 www.orientechnologies.com Type 'help' to display all the commands supported. > connect remote:localhost/demo admin admin Connecting to database [remote:localhost/demo] with user 'admin'...OK > select from profile where nick.startsWith('L') ---+--------+--------------------+--------------------+--------------------+ #| REC ID |NICK |SEX |AGE | ---+--------+--------------------+--------------------+--------------------+ 0| 10:0|Lvca |male |34 1| 10:3|Leo |male |22 2| 10:7|Luisa |female |27 3 item(s) found. Query executed in 0.013 sec(s). > close Disconnecting from the database [demo]...OK > quit www.orientechnologies.com
  • 97. OrientDB Studio/SQL query Resultset is editable and changes are immediately persistent! www.orientechnologies.com
  • 98. OrientDB Studio/db structure Physical structure of database www.orientechnologies.com
  • 99. OrientDB Studio/server profiler Statistics and timing are collected in real-time www.orientechnologies.com
  • 100. Always Free Open Source Apache 2 license free for any purposes, even commercials www.orientechnologies.com
  • 101. Prof€$$ional $€rvic€$ by a network of companies through Orient Technologies support, training, consulting, mentoring www.orientechnologies.com
  • 102. OrientDB OrientDB for Java developers Master Development 8 hours 14 hours OrientDB OrientDB for SOA and the power of graphs 6 hours 6 hours OrientDB OrientPlanet for DBA for Web Developers 6 hours 6 hours www.orientechnologies.com
  • 103. Certification Program to be part of the network do courses share revenues for support work as consultant Contact commercial@orientechnologies.com www.orientechnologies.com
  • 104. Luca Garulli Author of OrientDB and Roma <Meta> Framework Open Source projects, Member of JSR#12 (jdo 1.0) and JSR#243 (jdo 2.0) CTO at Asset Data and Orient www.twitter.com/lgarulli Technologies @Rome, Italy Technical Manager at Romulus consortium www.orientechnologies.com