J'ai examiné le mappage de données entre ArangoDB et Java

introduction

Certains fans d'Oak utilisent ArangoDB. ArangoDB est une base de données NoSQL hybride qui tire parti de DocumentDB et GraphDB.

** Je vais laisser DocumentDB et GraphDB de côté. *

Chez Oak Fan, nous créons des services qui utilisent des données telles que les informations sur les produits et les ventes.

Dans l'équipe à laquelle j'appartiens, je pense qu'une base de données comme ArangoDB convient lorsque vous souhaitez gérer des informations (spécifications, etc.) avec des propriétés différentes pour chaque produit et des données compte tenu de la relation entre les données telles que le fabricant et la catégorie. ,J'utilise.

D'autre part, Java ou Kotlin est utilisé pour créer un logiciel qui se réfère à ces données et les agrège. Par conséquent, lors de l'accès à ArangoDB par programme, utilisez l'API Java fournie par ArangoDB.

ArangoDB n'est pas Java. Les données à traiter sont essentiellement au format JSON. Évidemment, la définition du type de données sera différente de celle du programme.

Lorsque je mets le type de données qui est naturellement utilisé en Java dans ArangoDB, il change pour le type qu'ArangoDB peut gérer (format JSON), et je l'ai testé pour ne pas être dérangé par une conversion de type involontaire lors de l'utilisation de données. ..

supposition

Les différentes versions sont les suivantes.

Java → ArangoDB Pour stocker dans ArangoDB, utilisez la classe BaseDocument et définissez les données avec la méthode ʻaddAttribute ()`.

Vérifiez les données stockées avec l'interface utilisateur Web ArangoDB et vérifiez l'état stocké.

Type Java → Type de base de données Arango Remarques
int Valeur numérique(entier)
Integer Valeur numérique(entier)
long Valeur numérique(entier)
Long Valeur numérique(entier)
float Valeur numérique(Fraction) * Les données sont corrompues
Float Valeur numérique(Fraction) * Les données sont corrompues
double Valeur numérique(Fraction)
Double Valeur numérique(Fraction)
BigDecimal Chaîne
boolean Valeur booléenne(true/false)
Boolean Valeur booléenne(true/false)
LocalDate Chaîne Format ISO8601
LocalDateTime Chaîne Format ISO8601
OffsetDateTime Chaîne Format ISO8601
ZonedDateTime Chaîne ISO8601(Expansion)format
List Tableau
Map objet Le type de l'objet est le même que le mappage ci-dessus

ArangoDB → Java Le type de données lorsque les données sont stockées dans ArangoDB à partir de WebUI et acquises par Java est le suivant.

Type ArangoDB → Type Java Remarques
Chaîne String
Valeur numérique(entier) Long
Valeur numérique(Fraction) Double
Valeur booléenne(true/false) Boolean
Tableau ArrayList Le type intérieur est le même que les autres
objet HashMap Le type intérieur est le même que les autres

Java → ArangoDB → Java Le flux de changement de type de données lorsque les données stockées dans ArangoDB en Java sont acquises en Java est le suivant.

Type Java → Type de base de données Arango → Type Java Remarques
int Valeur numérique(entier) Long
Integer Valeur numérique(entier) Long
long Valeur numérique(entier) Long
Long Valeur numérique(entier) Long
float Valeur numérique(Fraction) Double * Les données sont corrompues
Float Valeur numérique(Fraction) Double * Les données sont corrompues
double Valeur numérique(Fraction) Double
Double Valeur numérique(Fraction) Double
BigDecimal Chaîne String
boolean Valeur booléenne(true/false) Boolean
Boolean Valeur booléenne(true/false) Boolean
LocalDate Chaîne String Format ISO8601
LocalDateTime Chaîne String Format ISO8601
OffsetDateTime Chaîne String Format ISO8601
ZonedDateTime Chaîne String ISO8601(Expansion)format
List Tableau ArrayList Le type intérieur est le même que les autres
Map objet HashMap Le type de l'objet est le même que le mappage ci-dessus

Résumé

J'ai trouvé que je devais être un peu prudent lors de l'utilisation d'ArangoDB avec l'API Java.

Vous pouvez l'utiliser sans vous en soucier

--L'entier est de type Long --La fraction est de type Double

Je veux m'étendre un peu

--Si vous voulez gérer avec Big Decimal --Si vous le mettez dans ArangoDB, il sera sérialisé en une chaîne de caractères. --Lors de la récupération depuis ArangoDB, elle est récupérée sous forme de chaîne de caractères, désérialisez donc la chaîne de caractères.

En fait, le calcul des fractions est plus compliqué. .. .. Si vous êtes intéressé ( ̄ ー  ̄)

Recommended Posts

J'ai examiné le mappage de données entre ArangoDB et Java
J'ai essayé d'énumérer les différences entre java et python
J'ai examiné l'arborescence des appareils
J'ai comparé Java et Python!
J'ai essayé de programmer le test du chi carré en Python et Java.
J'ai personnellement comparé Java et Ruby
J'ai étudié le comportement de la différence entre lien dur et lien symbolique
J'ai étudié la relation entre le LSTM avec état de Keras et l'état caché
Échangez facilement des données entre Python, R et Julia à l'aide du format Feather
Différences entre la syntaxe Python et Java
J'ai essayé de sauvegarder les données récupérées au format CSV!
La relation subtile entre Gentoo et pip
À propos de la relation entre Git et GitHub
J'ai touché à l'outil de préparation de données Paxata
Communication de données chiffrées entre Python et C #
Visualisons la relation entre le salaire moyen et l'industrie avec des données XBRL et seaborn! (7/10)
J'ai essayé de traiter et de transformer l'image et d'élargir les données pour l'apprentissage automatique
Quelle est la différence entre «pip» et «conda»?
Relation entre la conversion des types de données Firestore et Go
J'ai recherché Railway Kawayanagi à partir des données
La réponse de "1/2" est différente entre python2 et 3
J'ai essayé de sauvegarder les données avec discorde
J'ai écrit une classe en Python3 et Java
[Python] Mémo de conversion entre les données temporelles et les données numériques
À propos de la différence entre "==" et "is" en python
[Analyse des données] Dois-je acheter le drapeau Harumi?
J'ai lu et implémenté les variantes de UKR
À propos de la différence entre PostgreSQL su et sudo
Quelle est la différence entre Unix et Linux?
[Challenger à la recherche] Le chargement et l'augmentation des données les plus rapides (bloc-notes Kaggle) je pense
Je voulais juste extraire les données de la date et de l'heure souhaitées avec Django