Úvod do Java API OrientDB

1. Prehľad

OrientDB je open source databázová technológia Multi-Model NoSQL určená na prácu s modelmi Graph, Document, Key-Value, GeoSpatial a Reactive pri správe dotazov pomocou syntaxe SQL.

V tomto článku sa budeme zaoberať nastavením a používaním rozhraní API OrientDB Java.

2. Inštalácia

Najskôr musíme nainštalovať binárny balík.

Stiahnime si najnovšiu stabilnú verziu OrientDB (2.2.x v čase písania tohto článku).

Po druhé, musíme ho rozbaliť a presunúť jeho obsah do pohodlného adresára (pomocou ORIENTDB_HOME). Nezabudnite pridať kôš priečinok do premenných prostredia pre akékoľvek jednoduché použitie príkazového riadku.

Nakoniec musíme upraviť orientdb.sh súbor nachádzajúci sa v $ ORIENTDB_HOME / bin vyplnením miesta (ORIENTDB_HOME) adresára OrientDB namiesto ORIENTDB_DIR a tiež používateľa systému, ktorého by sme chceli použiť namiesto USER_YOU_WANT_ORIENTDB_RUN_WITH.

Teraz máme plne funkčný OrientDB. Môžeme použiť orientdb.sh skript s možnosťami:

  • začať: na spustenie servera
  • postavenie : skontrolovať stav

  • zastav : zastavenie servera

Upozorňujeme, že oboje začať a zastav akcie vyžadujú heslo používateľa (heslo, ktoré sme nastavili v orientdb.sh spis).

Akonáhle je server spustený, obsadí port 2480. Preto k nemu môžeme pristupovať lokálne pomocou tohto URL:

Viac podrobností o manuálnej inštalácii nájdete tu.

Poznámka: OrientDB vyžaduje Javu verzie 1.7 alebo vyššej.

Predchádzajúce verzie sú k dispozícii tu.

3. Nastavenie API rozhrania OrientDB Java

OrientDB umožňuje vývojárom Java pracovať s tromi rôznymi API, ako sú:

  • Graph API - databázy grafov
  • Document API - dokumentárne databázy
  • Object API - objekty, ktoré sú naviazané priamo na dokument OrientDB

Všetky tieto typy môžeme použiť v rámci jednej kódovej základne iba integráciou a použitím OrientDB.

Pozrime sa na niekoľko dostupných téglikov, ktoré môžeme zahrnúť do triedy projektu:

  • orientdb-core - *. jar: prináša základnú knižnicu
  • plány-jadro - *. jar: priniesť základné komponenty adaptérov
  • orientdb-graphdb - *. jar: dáva API databázy Graph
  • orientdb-objekt - *. jar: poskytuje API databázy objektov
  • orientdb-distribuované - *. jar: poskytuje doplnok distribuovanej databázy na prácu so serverovým klastrom
  • orientdb-tools - *. jar: odovzdá príkaz konzoly
  • orientdb-client - *. jar: poskytuje vzdialeného klienta
  • orientdb-enterprise - *. jar: umožňuje protokol a sieťové triedy zdieľané klientom a serverom

Posledné dve sú povinné, iba ak spravujeme naše údaje na vzdialenom serveri.

Začnime s projektom Maven a používajme nasledujúce závislosti:

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

Skontrolujte prosím repozitár Maven Central, kde nájdete najnovšie verzie Core, GraphDB, Object API a Blueprints-Core v OrientDB.

4. Použitie

OrientDB používa na prácu s grafmi implementáciu TinkerPop Blueprints.

TinkerPop je grafický výpočtový rámec, ktorý poskytuje mnoho spôsobov budovania databáz grafov, kde každý z nich má svoje implementácie:

  • Plány
  • Rúry
  • Gremlin
  • Rexster
  • Zdvojnásobenie plachiet

Okrem toho OrientDB umožňuje pracovať s tromi druhmi schém bez ohľadu na typ API:

  • Schema-Full - prísny režim je povolený, takže všetky polia sú zadané počas vytvárania triedy
  • Schema-Less - triedy sú vytvárané bez konkrétnej vlastnosti, takže ich môžeme pridávať, ako chceme; je to predvolený režim
  • Schema-Hybrid - je to zmes schém a úplných a bez schém, kde môžeme vytvoriť triedu s preddefinovanými poľami, ale nechať záznam definovať ďalšie vlastné

4.1. Graph API

Pretože sa jedná o databázu založenú na grafoch, dáta sú reprezentované ako sieť obsahujúca vrcholy (uzly) prepojené hranami (oblúky).

Ako prvý krok použijeme UI na vytvorenie databázy Graph s názvom BaeldungDB s používateľom admin a heslo admin.

Ako vidíme na nasledujúcom obrázku, graf bol vybraný ako typ databázy, takže jeho údaje budú následne prístupné v GRAF tab:

Poďme sa teraz pripojiť k požadovanej databáze s vedomím, že ORIENTDB_HOME je premenná prostredia, ktorá zodpovedá inštalačnému priečinku systému Windows OrientDB:

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

Začnime Článok, Autora Editor triedy - zatiaľ čo ukazuje, ako pridať overenie do svojich polí:

@BeforeClass public static void init () {graph.createVertexType ("článok"); OrientVertexType writerType = graph.createVertexType ("Spisovateľ"); writerType.setStrictMode (true); writerType.createProperty ("meno", OType.STRING); // ... OrientVertexType authorType = graph.createVertexType ("Autor", "Spisovateľ"); authorType.createProperty ("level", OType.INTEGER) .setMax ("3"); OrientVertexType editorType = graph.createVertexType ("Editor", "Spisovateľ"); editorType.createProperty ("level", OType.INTEGER) .setMin ("3"); Vrchol vEditor = graph.addVertex ("trieda: editor"); vEditor.setProperty ("meno", "Maxim"); // ... Vertex vAuthor = graph.addVertex ("class: Author"); vAuthor.setProperty ("meno", "Jerome"); // ... Vertex vArticle = graph.addVertex ("class: Article"); vArticle.setProperty ("title", "Úvod do ..."); // ... graph.addEdge (null, vAuthor, vEditor, "has"); graph.addEdge (null, vAuthor, vArticle, "napísal"); }

V úryvku kódu vyššie sme vytvorili jednoduchú reprezentáciu našej jednoduchej databázy, kde:

  • Článok je trieda bez schémy, ktorá obsahuje články
  • Spisovateľ je super-trieda plná schémy, ktorá obsahuje potrebné informácie o pisateľovi
  • Spisovateľ je podtyp Autor ktorý drží svoje detaily
  • Editor je podtyp bez schémy Spisovateľ ktorý obsahuje podrobnosti editora
  • priezvisko pole nebolo vyplnené uloženým autorom, ale stále sa zobrazuje v nasledujúcom grafe
  • medzi všetkými triedami máme vzťah: an Autor môže písať Článok a musí mať Editor
  • Vrchol predstavuje entitu s niektorými poľami
  • Hrana je subjekt, ktorý spája dva Vrcholy

Vezmite prosím na vedomie, že pri pokuse o pridanie ďalšej vlastnosti k objektu celej triedy skončíme s OValidationException.

Po pripojení k našej databáze pomocou štúdia OrientDB sa zobrazí grafická reprezentácia našich údajov:

Pozrime sa, ako mať počet všetkých záznamov (vrcholov) databázy:

dlha velkost = graph.countVertices ();

Teraz si ukážeme iba počet Spisovateľ (autor a redaktor) objekty:

@Test public void givenBaeldungDB_checkWeHaveTwoWriters () {long size = graph.countVertices ("Writer"); assertEquals (2, veľkosť); }

V ďalšom kroku môžeme nájsť všetky SpisovateľÚdajov pomocou tohto vyhlásenia:

Iterovateľní autori = graph.getVerticesOfClass ("Writer");

Na záver sa poďme dopytovať za všetkých EditorJe s úrovni 7; tu máme iba jednu, ktorá sa zhoduje:

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

Názov triedy je vždy zadaný, aby sa pri vyžiadaní vyhľadal konkrétny vrchol. Viac podrobností nájdete tu.

4.2. Document API

Ďalšou možnosťou je použitie modelu dokumentu OrientDB. To vystavuje manipuláciu s dátami prostredníctvom jednoduchého záznamu s informáciami uloženými v poliach, kde by typom mohol byť text, obrázok alebo binárna forma.

Poďme znova použiť UI na vytvorenie databázy s názvom BaeldungDBTwo, ale teraz s dokument ako typ:

Poznámka: Rovnako je možné toto API tiež použiť v režime úplnej schémy, schémy bez schémy alebo hybridnej schémy.

Pripojenie k databáze zostáva priame, pretože potrebujeme iba vytvoriť inštanciu ODatabaseDocumentTx objekt, zadajte adresu URL databázy a poverenia používateľa databázy:

@BeforeClass public static void setup () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = new ODatabaseDocumentTx ("plocal:" + orientDBFolder + "/ databases / BaeldungDBTwo") .open ("admin", "admin"); }

Začnime ukladaním jednoduchého dokumentu, ktorý obsahuje Autor informácie.

Tu vidíme, že trieda bola vytvorená automaticky:

@Test public void givenDB_whenSavingDocument_thenClassIsAutoCreated () {ODocument doc = nový ODocument ("autor"); doc.field ("meno", "Paul"); doc.save (); assertEquals ("Autor", doc.getSchemaClass (). getName ()); }

Podľa toho počítať počet Autori, môžeme použiť:

long size = db.countClass ("Autor");

Poďme znova vyhľadať dokumenty pomocou hodnoty poľa a vyhľadať AutorObjekty s úrovni 7:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (ODocument author: db.browseClass ("Author")) author.delete (); ODocument authorOne = nový ODocument ("Autor"); authorOne.field ("meno", "Lev"); authorOne.field ("úroveň", 7); authorOne.save (); ODocument authorTwo = nový ODocument („autor“); authorTwo.field ("meno", "Lucien"); authorTwo.field ("úroveň", 9); authorTwo.save (); Zoznam výsledkov = db.query (nový OSQLSynchQuery ("vyberte * od autora, kde úroveň = 7")); assertEquals (1, result.size ()); }

Rovnako tak sa odstránia všetky záznamy o Autor triedy, môžeme použiť:

pre (ODocument autor: db.browseClass ("Autor")) {author.delete (); }

V štúdiu OrientDB PREHLIADAŤ tab môžeme urobiť dotaz, aby sme dostali všetky naše Autor 's objekty:

4.3. Object API

OrientDB nemá objektový typ databázy. Object API sa teda spolieha na databázu dokumentov.

V type Object API zostávajú všetky ostatné koncepty rovnaké, len s jedným doplnkom - väzbou na POJO.

Začnime pripojením k BaeldungDBThree pomocou OObjectDatabaseTx trieda:

@BeforeClass public static void setup () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = new OObjectDatabaseTx ("plocal:" + orientDBFolder + "/ databases / BaeldungDBThree") .open ("admin", "admin"); }

Ďalej za predpokladu, že Autor je POJO používaný na držanie Autor údaje, musíme ich zaregistrovať:

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

Autor má vyhľadávače a nastavovače pre nasledujúce polia:

  • krstné meno
  • priezvisko
  • úrovni

Vytvorme Autor s viacriadkovými pokynmi, ak sme uznali konštruktora no-arg:

Autor autor = db.newInstance (Author.class); author.setFirstName ("Lukáš"); author.setLastName ("Sky"); autor.setLevel (9); db.save (autor);

Na druhej strane, ak máme iného konštruktora, ktorý vezme krstné meno, priezviskoa úrovni z Autor inštancia je iba jeden riadok:

Autor autor = db.newInstance (Author.class, "Luke", "Sky", 9); db.save (autor);

Nasledujúce riadky slúžia na prehliadanie a mazanie všetkých záznamov triedy Author:

pre (Autor autor: db.browseClass (Author.class)) {db.delete (autor); }

Aby sme mohli spočítať všetkých autorov, stačí zadať triedu a inštanciu databázy bez nutnosti písať dotaz SQL:

dlhý autorCount = db.countClass (Author.class);

Podobne dopytujeme autorov pomocou úrovni Takto 7:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (Author author: db.browseClass (Author.class)) {db.delete (author); } Autor authorOne = db.newInstance (Author.class, "Lev", "Marta", 7); db.save (authorOne); Autor authorTwo = db.newInstance (Author.class, "Lucien", "Aurelien", 9); db.save (authorTwo); Zoznam výsledkov = db.query (nový OSQLSynchQuery ("vyberte * od autora, kde úroveň = 7")); assertEquals (1, result.size ()); }

Nakoniec je to oficiálny sprievodca, ktorý predstavuje niektoré pokročilé použitia rozhrania Object API.

5. Záver

V tomto článku sme videli, ako používať OrientDB ako systém správy databáz s jeho Java API. Tiež sme sa naučili, ako pridať overenie na polia a napísať niekoľko jednoduchých otázok.

Zdrojový kód tohto článku nájdete ako vždy na serveri GitHub.


$config[zx-auto] not found$config[zx-overlay] not found