Bevezetés az OrientDB Java API-kba

1. Áttekintés

Az OrientDB egy nyílt forráskódú, több modellből álló NoSQL adatbázis-technológia, amelyet úgy terveztek, hogy a Graph, a Document, a Key-Value, a GeoSpatial és a Reactive modellekkel működjön együtt, miközben SQL szintaxissal kezeli a lekérdezéseket.

Ebben a cikkben kitérünk a beállításra és az OrientDB Java API-k használatára.

2. Telepítés

Először telepítenünk kell a bináris csomagot.

Töltsük le az OrientDB legújabb stabil verzióját (2.2.x a cikk írásakor).

Másodsorban kicsomagolnunk kell, és a tartalmát egy kényelmes könyvtárba kell helyeznünk (a ORIENTDB_HOME). Kérjük, feltétlenül adja hozzá a kuka mappát a környezeti változókba bármilyen egyszerű parancssori használat érdekében.

Végül szerkesztenünk kell a orientdb.sh fájl található $ ORIENTDB_HOME / bin a hely kitöltésével (ORIENTDB_HOMEhelyén az OrientDB könyvtár ORIENTDB_DIR és azt a rendszerhasználót is, amelyet használni szeretnénk USER_YOU_WANT_ORIENTDB_RUN_WITH.

Most egy teljesen működő OrientDB van. Használhatjuk a orientdb.sh szkript opciókkal:

  • Rajt: a szerver indításához
  • állapot : az állapot ellenőrzéséhez

  • álljon meg : a szerver leállításához

Felhívjuk figyelmét, hogy mindkettő Rajt és álljon meg a műveletekhez felhasználói jelszó szükséges (az, amelyet a orientdb.sh fájl).

Amint a szerver elindul, elfoglalja a 2480-as portot. Ezért ennek segítségével lokálisan is elérhetjük URL:

A kézi telepítés további részletei itt találhatók.

Megjegyzés: Az OrientDB Java 1.7-es vagy újabb verziót igényel.

A korábbi verziók itt érhetők el.

3. OrientDB Java API-k beállítása

Az OrientDB lehetővé teszi a Java fejlesztők számára, hogy három különböző API-val dolgozzanak, például:

  • Graph API - grafikon adatbázisok
  • Document API - dokumentum-orientált adatbázisok
  • Object API - objektumok, amelyek közvetlenül az OrientDB dokumentumhoz vannak kötve

Használhatjuk ezeket a típusokat egyetlen kódbázisban, csak az OrientDB integrálásával és használatával.

Vessünk egy pillantást néhány elérhető üvegre, amelyeket felvehetünk a projekt osztályútjába:

  • orientdb-mag - *. üveg: hozza az alapkönyvtárat
  • tervrajzmag - *. üveg: az adapterek alapkomponenseinek elhozása
  • orientdb-graphdb - *. üveg: megadja a Graph adatbázis API-t
  • orientdb-object - *. üveg: biztosítja az Object database API-t
  • orientdb terjesztésű - *. üveg: biztosítja az elosztott adatbázis beépülő modult egy kiszolgálófürttel való együttműködéshez
  • orientdb-eszközök - *. üveg: átadja a konzol parancsot
  • orientdb-kliens - *. jar: biztosítja a távoli klienst
  • orientdb-vállalkozás - *. jar: engedélyezi az ügyfél és a szerver által megosztott protokoll- és hálózati osztályokat

A két utolsóra csak akkor van szükség, ha távoli szerveren kezeljük az adatainkat.

Kezdjük egy Maven projekttel, és használjuk a következő függőségeket:

 com.orientechnologies orientdb-core 2.2.31 com.orientechnologies orientdb-graphdb 2.2.31 com.orientechnologies orientdb-object 2.2.31 com.tinkerpop.blueprints blueprints-core 2.6.0 

Kérjük, ellenőrizze a Maven Central adattárban az OrientDB Core, GraphDB, Object API-k és a Blueprints-Core legújabb verzióit.

4. Használat

Az OrientDB a TinkerPop Blueprints megvalósítást használja a grafikonokkal való munkához.

A TinkerPop egy Graph Computing Framework, amely számos módszert kínál a gráf adatbázisok felépítésére, ahol mindegyik megvalósítással rendelkezik:

  • Tervrajzok
  • Cső
  • Gonosz szellem
  • Rexster
  • Vitorla kiegészítés

Ezenkívül az OrientDB lehetővé teszi a háromféle séma használatát, függetlenül az API típusától:

  • Séma-Teljes - a szigorú mód engedélyezve van, ezért az összes mezőt megadják az osztály létrehozása során
  • Schema-Less - osztályok külön tulajdonság nélkül jönnek létre, így tetszés szerint hozzáadhatjuk őket; ez az alapértelmezett mód
  • Séma-Hibrid - ez a séma-teljes és a séma nélküli keverék, ahol létrehozhatunk osztályt előre definiált mezőkkel, de hagyhatjuk, hogy a rekord meghatározzon más egyedi elemeket

4.1. Graph API

Mivel ez egy grafikonon alapuló adatbázis, az adatokat hálózatként ábrázolják, amelyek az Élekkel (ívekkel) összekapcsolt csúcsokat (csomópontokat) tartalmazzák.

Első lépésként az UI segítségével hozzunk létre egy Graph adatbázist BaeldungDB egy felhasználóval admin és jelszóval admin.

Amint a következő képen látjuk, a grafikon adatbázis-típusként lett kiválasztva, így következésképpen adatai hozzáférhetőek lesznek az GRAPH Tab:

Csatlakozzunk most a kívánt adatbázishoz, tudva, hogy a ORIENTDB_HOME egy környezeti változó, amely megfelel a OrientDB:

@BeforeClass public static void setup () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); graph = new OrientGraphNoTx ("plokális:" + orientDBFolder + "/ adatbázisok / BaeldungDB", "admin", "admin"); }

Kezdjük meg a Cikk, Szerző, és Szerkesztő osztályok - miközben bemutatja, hogyan adható hozzá az érvényesítés a mezőkhöz:

@BeforeClass public static void init () {graph.createVertexType ("Cikk"); OrientVertexType writerType = graph.createVertexType ("Író"); writerType.setStrictMode (true); writerType.createProperty ("keresztnév", OType.STRING); // ... OrientVertexType authorType = graph.createVertexType ("Szerző", "Író"); authorType.createProperty ("szint", OType.INTEGER) .setMax ("3"); OrientVertexType editorType = graph.createVertexType ("Szerkesztő", "Író"); editorType.createProperty ("szint", OType.INTEGER) .setMin ("3"); Vertex vEditor = graph.addVertex ("osztály: Szerkesztő"); vEditor.setProperty ("keresztnév", "Maxim"); // ... Vertex vAuthor = graph.addVertex ("osztály: Szerző"); vAuthor.setProperty ("keresztnév", "Jerome"); // ... Vertex vArticle = graph.addVertex ("osztály: cikk"); vArticle.setProperty ("title", "Introduction to ..."); // ... graph.addEdge (null, vAuthor, vEditor, "van"); graph.addEdge (null, vAuthor, vArticle, "írt"); }

A fenti kódrészletben egyszerű ábrázolást készítettünk egyszerű adatbázisunkról, ahol:

  • Cikk az a séma nélküli osztály, amely cikkeket tartalmaz
  • Író egy séma-teljes szuperosztály, amely a szükséges írói információkat tárolja
  • Író altípusa Szerző hogy megtartja a részleteit
  • Szerkesztő séma nélküli altípusa Író amely tartalmazza a szerkesztő részleteit
  • vezetéknév A mező nem lett kitöltve a mentett szerzővel, de mégis megjelenik a következő grafikonon
  • kapcsolatunk van az összes osztály között: an Szerző tud írni Cikk és rendelkeznie kell egy Szerkesztő
  • Csúcs egy entitást képvisel néhány mezővel
  • Él olyan entitás, amely kettőt összekapcsol Csúcspontok

Felhívjuk figyelmét, hogy ha megpróbálunk újabb tulajdonságot hozzáadni egy teljes osztályú objektumhoz, akkor az OValidationException lesz a vége.

Miután csatlakozott az adatbázisunkhoz az OrientDB stúdió használatával, meglátjuk adataink grafikonos ábrázolását:

Nézzük meg, hogyan lehet az adatbázis összes rekordjának (csúcsának) a száma:

hosszú méret = graph.countVertices ();

Most mutassuk meg csak a számukat Író (Szerző és Szerkesztő) tárgyak:

@Test public void givenBaeldungDB_checkWeHaveTwoWriters () {long size = graph.countVertices ("Writer"); assertEquals (2, méret); }

A következő lépésben mindet megtalálhatjuk ÍróAdatai a következő állítással:

Iterálható írók = graph.getVerticesOfClass ("Writer");

Végül kérdezzünk mindenkit Szerkesztő’S vele szint 7; itt csak egy megfelel:

@Test public void givenBaeldungDB_getEditorWithLevelSeven () {String onlyEditor = ""; for (Vertex v: graph.getVertices ("Editor.level", 7)) {onlyEditor = v.getProperty ("keresztnév"). toString (); } assertEquals ("Maxim", csakEditor); }

Az osztálynév mindig meg van adva, hogy kérjen egy adott csúcsot. További részletek itt találhatók.

4.2. Document API

A következő lehetőség az OrientDB Dokumentum modelljének használata. Ez egy egyszerű rekordon keresztül teszi lehetővé az adatkezelést, olyan mezőkben tárolt információkkal, amelyek típusa lehet szöveg, kép vagy bináris forma.

Újra használjuk a felhasználói felületet egy névre keresztelt adatbázis létrehozásához BaeldungDBTwo, de most egy dokumentum típusként:

Megjegyzés: Hasonlóképpen, ez az API használható séma-teljes, séma nélküli vagy séma-hibrid módban is.

Az adatbázis-kapcsolat továbbra is egyszerű, mivel csak egy példányt kell létrehoznunk ODatabaseDocumentTx objektum, adja meg az adatbázis URL-jét és az adatbázis felhasználó hitelesítő adatait:

@BeforeClass public static void setup () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = új ODatabaseDocumentTx ("hely:" + orientDBFolder + "/ adatbázisok / BaeldungDBTwo"). open ("admin", "admin"); }

Kezdjük egy egyszerű dokumentum mentésével, amely egy Szerző információ.

Itt láthatjuk, hogy az osztály automatikusan létrejött:

@Test public void givenDB_whenSavingDocument_thenClassIsAutoCreated () {ODocument doc = new ODocument ("Author"); doc.field ("név", "Paul"); doc.save (); assertEquals ("Szerző", doc.getSchemaClass (). getName ()); }

Ennek megfelelően számolni Szerzői, tudjuk használni:

hosszú méret = db.countClass ("Szerző");

Lekérdezzük újra a dokumentumokat egy mezőérték segítségével, hogy megkeresjük a Szerző’S tárgyakat szint 7:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (ODocument author: db.browseClass ("Author")) author.delete (); ODocument authorOne = új ODocument ("Szerző"); authorOne.field ("keresztnév", "Oroszlán"); authorOne.field ("szint", 7); authorOne.save (); ODocument authorTwo = új ODocument ("Szerző"); authorTwo.field ("keresztnév", "Lucien"); authorTwo.field ("szint", 9); authorTwo.save (); Lista eredménye = db.query (új OSQLSynchQuery ("válasszon * a Szerzőből, ahol szint = 7")); assertEquals (1, eredmény.méret ()); }

Hasonlóképpen törölje a Szerző osztályban használhatjuk:

for (ODocument szerző: db.browseClass ("Szerző")) {author.delete (); }

Az OrientDB stúdiójában Böngészés fül lekérdezést tehetünk, hogy megkapjuk az összes Szerző'tárgyai:

4.3. Object API

Az OrientDB nem rendelkezik az adatbázis objektumtípusával. Így az Object API egy Document adatbázisra támaszkodik.

Az Object API típusban az összes többi fogalom ugyanaz marad, csak egy kiegészítéssel - a POJO-hoz kötve.

Kezdjük azzal, hogy csatlakozunk a BaeldungDBThree a OObjectDatabaseTx osztály:

@BeforeClass public static void setup () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = új OObjectDatabaseTx ("hely:" + orientDBFolder + "/ adatbázisok / BaeldungDBThree"). nyitott ("admin", "admin"); }

Ezután feltételezve, hogy a Szerző a POJO, amelyet egy Szerző adatokat, regisztrálnunk kell:

db.getEntityManager (). registerEntityClass (Author.class);

Szerző a következő mezőkhöz van mérő- és beállítója:

  • keresztnév
  • vezetéknév
  • szint

Hozzunk létre egy Szerző többsoros utasításokkal, ha elismertünk egy no-arg konstruktort:

Szerző szerző = db.newInstance (Szerző.osztály); author.setFirstName ("Lukács"); author.setLastName ("Ég"); author.setLevel (9); db.save (szerző);

Másrészt, ha van még egy kivitelezőnk, aki átveszi a keresztnév, vezetéknév, és szint a Szerző illetve a példányosítás csak egy sor:

Szerző szerző = db.newInstance (Szerző: osztály, "Luke", "Sky", 9); db.save (szerző);

A következő sorok a Szerző osztály összes rekordjának böngészésére és törlésére szolgálnak:

for (Szerző szerző: db.browseClass (Szerző.osztály)) {db.delete (szerző); }

Az összes szerző megszámolásához csak meg kell adnunk az osztályt és az adatbázis példányt anélkül, hogy SQL lekérdezést kellene írni:

hosszú szerzőkCount = db.countClass (Szerző.osztály);

Hasonlóképpen megkérdezzük a szerzőket a szint 7 ilyen:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (Szerző szerző: db.browseClass (Szerző.osztály)) {db.delete (szerző); } Szerző authorOne = db.newInstance (Szerző.osztály, "Oroszlán", "Marta", 7); db.save (authorOne); Szerző authorTwo = db.newInstance (Szerző: osztály, "Lucien", "Aurelien", 9); db.save (authorTwo); Lista eredménye = db.query (új OSQLSynchQuery ("válassza ki * a Szerzőből, ahol szint = 7")); assertEquals (1, eredmény.méret ()); }

Végül ez a hivatalos útmutató, amely bemutatja az Advanced Object API néhány speciális használatát.

5. Következtetés

Ebben a cikkben azt láttuk, hogyan lehet az OrientDB-t adatbázis-kezelő rendszerként használni Java API -ival. Megtanultuk azt is, hogyan adjunk hozzá validációt a mezőkhöz és írjunk néhány egyszerű kérdést.

Mint mindig, a cikk forráskódja a GitHub oldalon található.