ArangoDB: Succes Behalen Met een Multivalue Database

Het omgaan met diverse databasestructuren introduceert vaak aanzienlijke complexiteit in de systeemarchitectuur, vooral wanneer meerdere database-instanties vereist zijn. Deze fragmentatie kan de operaties compliceren, kosten verhogen en de efficiëntie verminderen. Multimodel databases zoals ArangoDB bieden een eenduidige oplossing om deze uitdagingen aan te pakken. Ze vereenvoudigen de architectuur en stroomlijnen het gegevensbeheer door meerdere gegevensmodellen — sleutel-waarde, document en grafiek — te ondersteunen binnen één database-instantie.

In tegenstelling tot relationele databases, NoSQL-databases houden zich niet aan een universele standaard zoals SQL. In plaats daarvan worden ze gecategoriseerd op basis van hun opslagstructuur. Onder de populaire typen zijn:

  • Sleutel-waarde: Vergelijkbaar met een Java Map of een Python-dictionary, haalt deze structuur volledige waarden op als BLOBs met behulp van een sleutel.
  • Brede kolom: Vergelijkbaar met sleutel-waarde maar splitst waarden in kolommen, waardoor meer gedetailleerde gegevensopvraging mogelijk is.
  • Document: Gestructureerd als JSON of XML, biedt dit type meer queryflexibiliteit.
  • Grafiek: Maakt complexe relatiemodellering en query’s mogelijk door entiteiten en hun verbindingen voor te stellen.

Een multimodel database combineert deze mogelijkheden in één systeem. Zo ondersteunt ArangoDB bijvoorbeeld sleutel-waarde, document en grafiekmodellen, waardoor de noodzaak voor afzonderlijke databases verdwijnt.

Dit artikel demonstreert hoe ArangoDB te gebruiken om sleutel-waarde en documentmodellen te verkennen in Java-toepassingen met behulp van Jakarta NoSQL.

ArangoDB Instellen

Om te beginnen met ArangoDB, biedt Docker een eenvoudige manier om services van derden te beheren. Door de volgende opdracht uit te voeren, kun je eenvoudig een ArangoDB-instantie opzetten:

Shell

 

Verkenning van Sleutel-Waarde Gegevens

Sleutel-waarde databases zijn ideaal voor eenvoudige datamodellen. Laten we een voorbeeldapplicatie maken om luchthavengegevens te beheren met behulp van de sleutel-waarde mogelijkheden van ArangoDB. De Luchthaven entiteit zal twee velden bevatten: code (ID) en naam.

Java

 

Met de entiteit gedefinieerd, kun je KeyValueTemplate gebruiken om met de database te communiceren. In deze tutorial zullen we meer van de Jakarta NoSQL-mogelijkheden verkennen, naast de annotaties met behulp van Eclipse JNoSQL; je kunt de repository aanmaken zodra Eclipse JNoSQL Jakarta Data implementeert en ondersteunt.

Java

 

Dit programma genereert een willekeurige luchthavenregistratie, voegt deze toe aan de database en haalt deze op. Als je lokaal werkt, kun je de waarden in de database controleren met je browser via de URL: 

http://localhost:8529/_db/airport/_admin/aardvark/index.html#collections

Werken met Documentgegevens

Jakarta NoSQL biedt rijke functies voor het werken met documentdatabases, waaronder ondersteuning voor overerving en hiërarchische datamodellering. Hoewel NoSQL-databases over het algemeen deze functies niet van nature ondersteunen, overbrugt Jakarta NoSQL deze kloof met zijn API. Laten we Jakarta NoSQL gebruiken met ArangoDB om gegevens van cloudproviders te beheren, inclusief twee specialisaties: Amazon Web Services (AWS) en Azure.

Jakarta NoSQL gebruikt de @DiscriminatorColumn, @DiscriminatorValue en @Inheritance annotaties om overerving in documentdatabases te beheren.

  • De @DiscriminatorColumn annotatie specificeert het veld dat wordt gebruikt om een entiteitstype in het database-document te identificeren.
  • De @DiscriminatorValue annotatie definieert de specifieke waarde voor elke subklasse, waardoor ze correct worden geïdentificeerd.
  • De @Inheritance annotatie geeft aan dat de klassenhiërarchie in de database zal worden gemapt.

Eerst definiëren we de basisclass voor cloudproviders:

Java

 

Vervolgens introduceren we de gespecialiseerde cloudproviderklassen. Deze voorbeelden tonen aan hoe Jakarta NoSQL annotaties @DiscriminatorValue gebruikt om te onderscheiden tussen verschillende documenttypen. Elke specialisatie — AWS en Azure — erft van de basis CloudProvider klasse, terwijl ook unieke attributen voor elke provider worden gedefinieerd. Bovendien worden fabrieksmethoden (of) aangeboden om voorbeeldgegevens te genereren voor demonstratiedoeleinden.

AWSCloudProvider

Java

 

AzureCloudProvider

Java

 

Tenslotte, laten we zien hoe we de DocumentTemplate kunnen gebruiken om te communiceren met de database. Deze code toont het aanmaken van instanties van AWS en Azure providers, deze invoegen in de database en ze ophalen. De implementatie maakt gebruik van de API van Jakarta NoSQL om dataperistentie te beheren, zodat overerving en discriminatorlogica naadloos worden toegepast tijdens opslag en ophalen.

Java

 

Conclusie

De multimodelmogelijkheden van ArangoDB maken het een veelzijdige keuze voor moderne toepassingen. Door key-value en documentmodellen te combineren in een enkele database wordt de data-architectuur vereenvoudigd terwijl de flexibiliteit behouden blijft. Met Jakarta NoSQL wordt het integreren van ArangoDB in Java-toepassingen naadloos, waarbij vertrouwde annotaties en programmeerparadigma’s worden benut.

Voor de volledige code, bezoek de GitHub Repository.

Source:
https://dzone.com/articles/arangodb-success-through-multivalue-database