2015-11-24 9 views
1

J'utilise OrientDB pour stocker des informations sur la location de vidéos. Je représente les membres et les films en tant que nœuds. Et chaque fois qu'un membre emprunte un film, j'ajoute un bord entre eux. L'ensemble de données a un utilisateur qui emprunte un film plusieurs fois. Aussi, je suis obligé de stocker dans quel mois/saison (toujours décider qui conviendra à nos besoins, mais à part le point) était le film loué. Je prévoyais de stocker les détails mentionnés ci-dessus sur le bord.Mais je suis tombé sur ceci: http://orientdb.com/docs/2.1/Performance-Tuning-Graph.htmlConception d'une base de données graphique OrientDB: stockage des propriétés sur les arêtes et les nœuds

Et il est recommandé d'éviter de stocker des propriétés sur les bords. Je voulais savoir si je devais changer d'approche? Si oui, quelle est l'alternative?

Merci d'avance.

Répondre

1

Je pense que dans votre cas, vous pouvez opter pour la création de propriété directement sur le bord. L'alternative à stocker des données liées à la location est de créer un troisième nœud (par exemple RentalData) entre membre et films et utiliser les champs PK et FK, mais il serait similaire à la base de données relationnelle et pas nécessaire.

Je reproduit un petit DB:

create class Member extends V; 
create property Member.id integer; 
create property Member.name string; 
create property Member.surname string; 
create index Member.id unique; 


create class Movie extends V; 
create property Movie.id integer; 
create property Movie.title string; 
create property Movie.minutes integer; 
create index Movie.id unique; 

create class borrows extends E; 
create property borrows.rentaldate Datetime; 

create vertex Member set id = 1, name = "Paul", surname = "Green"; 
create vertex Member set id = 2, name = "John", surname = "Smith"; 
create vertex Member set id = 3, name = "Frank", surname = "Redding"; 

create vertex Movie set id = 1, title = "Interstellar", minutes = 170; 
create vertex Movie set id = 2, title = "The Gladiator", minutes = 176; 

create edge borrows from (select from Member where id = 1) to (select from Movie where id = 1) set rentaldate = sysdate(); 
create edge borrows from (select from Member where id = 1) to (select from Movie where id = 2) set rentaldate = sysdate(); 
create edge borrows from (select from Member where id = 2) to (select from Movie where id = 2) set rentaldate = sysdate(); 
create edge borrows from (select from Member where id = 3) to (select from Movie where id = 1) set rentaldate = sysdate(); 
create edge borrows from (select from Member where id = 3) to (select from Movie where id = 2) set rentaldate = sysdate(); 

J'ai emmagasiné la propriété « rentaldata » directement sur le bord « emprunte » pour associer le membre au film emprunté et je pense que vous pouvez le faire comme moi.

0

Dès le même lien que vous avez fourni:

Utilisez le schéma

A partir de OrientDB 2.0, si les champs sont déclarés dans le schéma, noms de champs ne sont pas stockés dans le document/vertex/bord se. Cette améliore les performances et économise beaucoup d'espace sur le disque.

source