【问题标题】:OrientDB graph database design: storing properties on edge vs nodesOrientDB 图数据库设计:在边缘与节点上存储属性
【发布时间】:2015-11-24 19:35:43
【问题描述】:
【问题讨论】:
标签:
orientdb
graph-databases
【解决方案1】:
我认为在您的情况下,您可能会选择直接在边缘创建属性。存储与租赁相关的数据的另一种方法是在 Member 和 Movies 之间创建第三个节点(例如 RentalData)并利用 PK 和 FK 字段,但它类似于关系数据库并且没有必要。
我转载了一个小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();
我将“rentaldata”属性直接存储在“borrows”边缘,以将成员与借用的电影相关联,我认为您可以像我一样做到这一点。
【解决方案2】:
来自您提供的同一个链接:
使用架构
从 OrientDB 2.0 开始,如果在 schema 中声明了字段,
字段名称本身不存储在文档/顶点/边中。这个
提高性能并节省大量磁盘空间。
source