Uvod u OrientDB Java API-je

1. Pregled

OrientDB je tehnologija višestrukih modela NoSQL baze podataka otvorenog koda dizajnirana za rad s modelima Graf, Dokument, Ključ / Vrijednost, GeoSpatial i Reaktivni, dok upravlja upitima sa sintaksom SQL.

U ovom ćemo članku pokriti postavljanje i koristiti OrientDB Java API-je.

2. Instalacija

Prvo, moramo instalirati binarni paket.

Preuzmimo najnoviju stabilnu verziju OrientDB (2.2.x na mjestu pisanja ovog članka).

Drugo, moramo ga raspakirati i premjestiti njegov sadržaj u prikladan direktorij (pomoću ORIENTDB_HOME). Svakako dodajte kanta za smeće mapu na varijable okruženja za bilo kakvu jednostavnu upotrebu naredbenog retka.

Napokon, moramo urediti orijentdb.sh datoteka smještena u $ ORIENTDB_HOME / bin popunjavanjem mjesta (ORIENTDB_HOME) OrientDB direktorija u mjestu ORIENTDB_DIR a također i korisnika sustava kojeg bismo željeli koristiti umjesto USER_YOU_WANT_ORIENTDB_RUN_WITH.

Sad imamo potpuno radni OrientDB. Možemo koristiti orijentdb.sh skripta s opcijama:

  • početak: za pokretanje poslužitelja
  • status : za provjeru statusa

  • Stop : za zaustavljanje poslužitelja

Imajte na umu da oboje početak i Stop za radnje je potrebna korisnička lozinka (ona koju smo postavili u orijentdb.sh datoteka).

Jednom kada se poslužitelj pokrene, zauzet će port 2480. Stoga mu možemo pristupiti lokalno pomoću ovog URL:

Više detalja o ručnoj instalaciji možete pronaći ovdje.

Napomena: OrientDB zahtijeva Javu verzije 1.7 ili noviju.

Prethodne verzije dostupne su ovdje.

3. Postavljanje OrientDB Java API-ja

OrientDB omogućuje programerima Java rad s tri različita API-ja, kao što su:

  • Graph API - grafičke baze podataka
  • Document API - baze podataka orijentirane na dokument
  • Object API - objekti koji su izravno vezani uz OrientDB dokument

Sve te tipove možemo koristiti unutar jedne baze koda samo integriranjem i upotrebom OrientDB-a.

Pogledajmo neke dostupne staklenke koje možemo uključiti u stazu projekta:

  • orientdb-core - *. jar: donosi osnovnu knjižnicu
  • nacrti-jezgra - *. tegla: donijeti osnovne komponente adaptera
  • orientdb-graphdb - *. jar: daje API baze podataka Graph
  • orientdb-object - *. jar: isporučuje API baze podataka objekata
  • orientdb-distribuirano - *. jar: pruža dodatak distribuirane baze podataka za rad s klasterom poslužitelja
  • orientdb-tools - *. jar: predaje naredbu konzole
  • orientdb-client - *. jar: pruža udaljeni klijent
  • orientdb-enterprise - *. jar: omogućuje protokol i mrežne klase koje dijele klijent i poslužitelj

Dvije posljednje potrebne su samo ako upravljamo podacima na udaljenom poslužitelju.

Počnimo s Mavenovim projektom i poslužimo se sljedećim ovisnostima:

 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 

Molimo provjerite u spremištu Maven Central najnovije verzije OrientDB-ovih Core, GraphDB, Object API-ja i Blueprints-Core.

4. Upotreba

OrientDB koristi implementaciju TinkerPop Blueprints za rad s grafikonima.

TinkerPop je Graph Computing Framework koji pruža mnoge načine izgradnje baza podataka grafova, gdje svaka od njih ima svoje implementacije:

  • Nacrti
  • Cijevi
  • Gremlin
  • Rexster
  • Nadopunjavanje jedra

Štoviše, OrientDB omogućuje rad s tri vrste shema, bez obzira na vrstu API-ja:

  • Shema-puna - omogućen je strogi način rada, tako da su sva polja navedena tijekom stvaranja klase
  • Bez sheme - klase se kreiraju bez određenog svojstva, tako da ih možemo dodavati kako želimo; to je zadani način
  • Shema-hibrid - kombinacija sheme pune i sheme bez nje možemo stvoriti klasu s unaprijed definiranim poljima, ali dopustiti zapisu da definira i druga prilagođena

4.1. Grafički API

Budući da se radi o bazi podataka zasnovanoj na grafikonima, podaci su predstavljeni kao mreža koja sadrži Vertices (čvorove) međusobno povezane Edgesima (lukovima).

Kao prvi korak, upotrijebimo korisničko sučelje za stvaranje baze podataka Graph, koja se zove BaeldungDB s korisnikom admin i lozinku admin.

Kao što vidimo na sljedećoj slici, graf je odabran kao tip baze podataka, pa će stoga njegovi podaci biti dostupni u Kartica GRAF:

Povežimo se sada sa željenom bazom podataka, znajući da je ORIENTDB_HOME je varijabla okruženja koja odgovara instalacijskoj mapi programa OrientDB:

@BeforeClass javna statička void postavka () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); graf = novi OrientGraphNoTx ("plocal:" + orientDBFolder + "/ baze podataka / BaeldungDB", "admin", "admin"); }

Pokrenimo Članak, Autor, i Urednik klase - dok pokazuju kako dodati provjeru valjanosti u njihova polja:

@BeforeClass javna statička void init () {graph.createVertexType ("Članak"); OrientVertexType writerType = graph.createVertexType ("Writer"); writerType.setStrictMode (true); writerType.createProperty ("firstName", OType.STRING); // ... OrientVertexType authorType = graph.createVertexType ("Autor", "Writer"); authorType.createProperty ("razina", OType.INTEGER) .setMax ("3"); OrientVertexType editorType = graph.createVertexType ("Editor", "Writer"); editorType.createProperty ("razina", OType.INTEGER) .setMin ("3"); Vertex vEditor = graph.addVertex ("klasa: Editor"); vEditor.setProperty ("firstName", "Maxim"); // ... Vertex vAuthor = graph.addVertex ("klasa: Autor"); vAuthor.setProperty ("firstName", "Jerome"); // ... Vertex vArticle = graph.addVertex ("class: Article"); vArticle.setProperty ("naslov", "Uvod u ..."); // ... graph.addEdge (null, vAuthor, vEditor, "has"); graph.addEdge (null, vAuthor, vArticle, "napisao"); }

U gornjem isječku koda napravili smo jednostavan prikaz naše jednostavne baze podataka gdje:

  • Članak je klasa bez sheme koja sadrži članke
  • Pisac je super-klasa puna sheme koja sadrži potrebne podatke o piscu
  • Pisac je podvrsta Autor koji sadrži svoje detalje
  • Urednik je podvrsta bez sheme Pisac koji sadrži detalje o uredniku
  • prezime polje nije popunjeno u spremljenom autoru, ali se i dalje pojavljuje na sljedećem grafikonu
  • imamo vezu između svih razreda: an Autor može pisati Članak i treba imati Urednik
  • Vrh predstavlja entitet s nekim poljima
  • Rub je entitet koji povezuje dva Vrhovi

Imajte na umu da ćemo pokušajem dodavanja drugog svojstva objektu pune klase na kraju dobiti OValidationException.

Nakon povezivanja s našom bazom podataka pomoću OrientDB studija, vidjet ćemo grafički prikaz naših podataka:

Pogledajmo kako imati broj svih zapisa (vrhova) baze podataka:

duga veličina = graph.countVertices ();

Pokažimo sada samo broj Pisac (autor i urednik) objekti:

@Test javna praznina givenBaeldungDB_checkWeHaveTwoWriters () {long size = graph.countVertices ("Writer"); assertEquals (2, veličina); }

U sljedećem koraku možemo pronaći sve PisacPodaci, koristeći sljedeću izjavu:

Izvodljivi pisci = graph.getVerticesOfClass ("Writer");

Napokon, upitajmo za sve Urednik‘S s nivo 7; ovdje imamo samo jedan koji se podudara:

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

Ime klase je uvijek navedeno kako bi se tražio određeni vrh kad se traži. Više detalja možemo pronaći ovdje.

4.2. API dokumenta

Sljedeća je opcija korištenje OrientDB-ovog modela dokumenta. Ovo izlaže manipulaciju podacima putem jednostavnog zapisa s informacijama pohranjenim u poljima gdje bi vrsta mogla biti tekst, slika ili binarni oblik.

Upotrijebimo ponovno korisničko sučelje za stvaranje baze podataka s imenom BaeldungDBTwo, ali sada s a dokument kao tip:

Napomena: također se ovaj API također može koristiti bilo u shemi punoj, bez sheme ili u shemi-hibridnom načinu.

Veza s bazom podataka ostaje jednostavna jer samo trebamo instancirati ODatabaseDocumentTx objekt, navedite URL baze podataka i vjerodajnice korisnika baze podataka:

@BeforeClass javna statička void postavka () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = novi ODatabaseDocumentTx ("plocal:" + orientDBFolder + "/ databases / BaeldungDBTwo") .open ("admin", "admin"); }

Počnimo sa spremanjem jednostavnog dokumenta koji sadrži Autor informacija.

Ovdje možemo vidjeti da je klasa automatski kreirana:

@Test javna praznina danaDB_whenSavingDocument_thenClassIsAutoCreated () {ODocument doc = novi ODocument ("Autor"); doc.field ("ime", "Paul"); doc.save (); assertEquals ("Autor", doc.getSchemaClass (). getName ()); }

Sukladno tome, za brojanje broja Autori, možemo koristiti:

duga veličina = db.countClass ("Autor");

Ponovno pretražujmo dokumente pomoću vrijednosti polja kako bismo pretražili Autor‘S predmeti s nivo 7:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (ODocument author: db.browseClass ("Autor")) author.delete (); ODocument authorOne = novi ODocument ("Autor"); authorOne.field ("firstName", "Leo"); authorOne.field ("razina", 7); authorOne.save (); ODocument authorTwo = novi ODocument ("Autor"); authorTwo.field ("firstName", "Lucien"); authorTwo.field ("razina", 9); authorTwo.save (); Rezultat popisa = db.query (novi OSQLSynchQuery ("odaberi * od autora gdje je razina = 7")); assertEquals (1, result.size ()); }

Isto tako, izbrisati sve zapise Autor klase, možemo koristiti:

za (ODocument author: db.browseClass ("Author")) {author.delete (); }

U studiju OrientDB Kartica PREGLED možemo postaviti upit da dobijemo sve svoje Autor's objekti:

4.3. API objekta

OrientDB nema objektnu vrstu baze podataka. Dakle, Object API se oslanja na bazu podataka Document.

U tipu Object API, svi ostali koncepti ostaju isti sa samo jednim dodatkom - vezanje za POJO.

Krenimo od spajanja na BaeldungDBThree pomoću OObjectDatabaseTx razred:

@BeforeClass javna statička void postavka () {String orientDBFolder = System.getenv ("ORIENTDB_HOME"); db = novi OObjectDatabaseTx ("plocal:" + orientDBFolder + "/ databases / BaeldungDBThree") .open ("admin", "admin"); }

Dalje, pretpostavljajući da Autor je POJO koji se koristi za držanje Autor podatke, trebamo ih registrirati:

db.getEntityManager (). registerEntityClass (Autor.klasa);

Autor ima getere i postavljače za sljedeća polja:

  • ime
  • prezime
  • nivo

Stvorimo Autor s višerednim uputama ako smo prepoznali konstruktor bez argumenata:

Autor autor = db.newInstance (Autor.klasa); author.setFirstName ("Luka"); author.setLastName ("Nebo"); autor.setLevel (9); db.save (autor);

S druge strane, ako imamo još jedan konstruktor koji uzima ime, prezime, i nivo od Autor odnosno instancija je samo jedan redak:

Autor autor = db.newInstance (Autor.razred, "Luka", "Nebo", 9); db.save (autor);

Sljedeći se retci koriste za pregledavanje i brisanje svih zapisa klase Autor:

za (Autor autora: db.browseClass (Autor.klasa)) {db.delete (autor); }

Da bismo pobrojali sve autore, jednostavno moramo navesti klasu i instancu baze podataka bez potrebe za pisanjem SQL upita:

long authorCount = db.countClass (Autor.klasa);

Slično tome, autore upitamo s nivo 7 sviđa mi se tako:

@Test public void givenDB_whenSavingAuthors_thenWeGetOnesWithLevelSeven () {for (Autor autor: db.browseClass (Autor.class)) {db.delete (autor); } Autor authorOne = db.newInstance (Autor.klasa, "Lav", "Marta", 7); db.save (authorOne); Autor authorTwo = db.newInstance (Autor.klasa, "Lucien", "Aurelien", 9); db.save (authorTwo); Rezultat popisa = db.query (novi OSQLSynchQuery ("odaberi * od autora gdje je razina = 7")); assertEquals (1, result.size ()); }

Konačno, ovo je službeni vodič koji uvodi neke napredne Object API upotrebe.

5. Zaključak

U ovom smo članku vidjeli kako koristiti OrientDB kao sustav za upravljanje bazom podataka sa svojim Java API-ima. Također smo naučili kako dodati provjeru valjanosti na polja i napisati neke jednostavne upite.

Kao i uvijek, izvorni kod za ovaj članak možete pronaći na GitHubu.


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