暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

大数据时代建模之图数据库建模——创邻科技GALAXYBASE

原创 创邻科技 2021-11-19
1765

【导读】

云计算环境下,传统关系型数据库在海量数据存储方面存在瓶颈,对树形结构与半结构化数据的建模比较困难。本文介绍一种全新的建模方式——图数据库建模。应用图数据库模型更具扩展性、灵活性、高可靠性和高性能,能建立高细粒度的数据模型,非常适合复杂关系的建模和推理,有较高的实用价值。

本文以图数据库Galaxybase为例,详细描述了图数据库的建模过程,并应用Cypher语言实现了该模型的增加、删除、更改、查询及统计功能。实践结果表明,图数据库建模技术能使构造的模型语义表达更丰富,更具简易性和可扩展性等优点。

图模型表示方式

图模型GM可以用一个三元组描述, GM: = <N,R,L> 其中N={n1, n2, … nt} 为非空有限数量的结点集(node set),N中的t个元素称为t个结点。

R={r1, r2, … rs} 为顶点集N中的有序结点偶对(ni, nj)组成的关系集(relationship set),R中的s个元素称为s个关系,且满足 [公式] N × NL是结点属性、关系属性的集合。

结点及关系可以有多个属性,每种不同类型的结点或关系用ID来区分。结点之间可以有多个不同的关系,方向既可以单向,也可以双向,其属性个数也可以动态扩展。如工厂与原材料两个节点,既有工厂供应原材料的关系,也有工厂购买原材料的关系,因此图模型具有丰富的语义表达能力。

图模型建模规则

规则1 单实体集建模规则

单实体集建模为单结点。

以创建单实体”学生“为例,点类型和点属性如下表所示。

点类型点属性
学生外部唯一标识(ID)、姓名、年龄、班级

建模后如下图所示。



规则2 两个实体集具有1:N联系的建模规则

两个实体集分别按照规则1建模为两个单结点,联系集建模为图模型中结点的关系。结点间用带箭头的线段连接,方向可以是双向,也可以是单向。根据需要可以为关系添加若干属性。

以创建实体“学生”、“学校”,联系“就读”为例,点类型和点属性如下表所示。

点类型点属性
学生外部唯一标识(ID)、姓名、年龄、班级
学校外部唯一标识(ID)、名称、地址、规模

边类型、边属性如下表所示。

边类型起始点类型终止点类型边属性
就读学生学校入学时间、入学方式

建模后如下图所示。



规则3 两个实体集具有M:N联系的建模规则

两个实体集分别按照规则1建模为两个单结点,联系集建模为图模型中结点的关系。结点间用两条带箭头的线段连接,线段方向相反。

以创建实体”学生“、“学校”,联系“就读”、“管理”为例,点类型和点属性如下表所示。

点类型点属性
学生外部唯一标识(ID)、姓名、年龄、班级
学校外部唯一标识(ID)、名称、地址、规模

边类型、起始点类型、终止点类型、边属性如下表所示。

边类型起始点类型终止点类型边属性
就读学生学校入学时间、入学方式
管理学校学生学籍状态、毕业去向

建模后如下图所示。


规则4 两个或多个实体集之间存在整体与部分包含关系的建模规则

整体实体集与部分实体集之间符合1:1或1:N的联系,遵守规则2的建模规则。在图模型中,关系的方向从整体结点到部分结点(关系名可用HasParts[包含]、Contains[由···组成]等语义描述)或从部分结点到整体结点(关系名可用PartOf[属于]、ConsistOf[组成]等语义描述)。

示例模型中,学校可以有多个社团,结点”社团“与结点”学校“有部分结点到整体结点的包含关系。


规则5 两个或多个实体集之间存在父与子实体集的继承关系的建模规则

父子继承关系符合1:1或1:N的联系,遵守规则2的建模规则。在图模型中,关系的方向从父结点到子结点(关系名可用SubClass[有···子集]语义描述)或从子结点到父结点(关系名可用ISA[是···的指令集]、SubClassOf[是···的子集]等语义描述)。

示例模型中,结点”职位“与结点”社团“存在继承关系。


图数据库建模应用示例

某大型制造企业制造某系列轻型摩托车产品,需要采购毛坯及零部件等物料进行制造、装配,物料到货经过质检部门验收合格后,需要入库存储。由于该企业的采购、制造、装配的零部件(含物料)多达两万件,涉及国内外的供应商多大三千多家,每天约380个采购入库单,导致该企业每月新增数据约16~20GB。

接下来使用Galaxybase分布式图数据库来实现物料入库的管理模型。

以创建实体”员工“、“物料入库单”、”供应商“、”物料信息“、”入库单明细“、”货位信息“,联系”经手“、“供应”、”包含“、”分配“、”由···构成“为例,点类型和点属性如下表所示。

点类型点属性
员工外部唯一标识(ID)、工号、姓名、性别、部门
物料入库单外部唯一标识(ID)、入库单号、入库时间、状态
供应商外部唯一标识(ID)、编号、名称、信誉等级
物料信息外部唯一标识(ID)、物料编号、名称、价格
入库单明细外部唯一标识(ID)、数量
货位信息外部唯一标识(ID)、货位号、容量

边类型、起始点类型、终止点类型如下表所示。

边类型起始点类型终止点类型
经手(一对多)员工物料入库单
供应(一对多)供应商物料信息
包含(一对多)物料入库单入库单明细
分配(一对一)入库单明细货位信息
由···构成(多对一)入库单明细物料信息

建模后如下图所示。


更多图模型构建方式请参考图构建

图数据库实现与检索技术

Galaxybase是一个高性能的NoSQL图形数据库,具有ACID事务、高可用性、高扩展性及高性能等特点,非常适合大数据库的图形数据建模、管理、快速查找。

将上面建立的图数据库模型实例化,可以得到数据库实例图。


Galaxybase使用Cypher或Gremlin语言对图数据进行查找操作,不需要编写代码就可以进行高效率的查询。

操作示例Cypher图数据库操作语言
创建结点“员工”并添加类型和属性CREATE (n:员工{工号:'102',姓名:'张三',性别:'男',部门:'仓管部'})
在结点“员工”的属性“姓名”上创建单属性索引CREATE INDEX ON :员工(姓名)
精确查询性别为男的员工,并返回姓名和性别MATCH (n:员工{性别:男}) RETURN n.姓名,n.性别
查询姓张的员工,并返回员工姓名MATCH (n:员工) WHERE n.姓名 STARTS WITH '张' RETURN n.姓名
范围查询容量在90~100之间的货位信息,并返回货位号和容量MATCH (n:货位信息) WHERE n.容量>90 AND n.容量<100 RETURN n.货位号,n.容量
查询供应商的数量MATCH (n:供应商) RETURN count(n)
修改属性,例如:修改编号为”M329“的物料的价格MATCH (n:物料信息{物料编号:'M329' }) SET n.价格='230' RETURN n.价格
删除结点,例如:删除入库单号为”2013120271“的入库单MATCH (n:入库单明细) WHERE n.入库单编号 = '2013120271' DELETE n
查询结点的关系数量,例如:查询编号为“S01”的供应商有哪些语义关系及关系数量,并返回关系类型及其个数MATCH (n:供应商{供应商编号: 'S01' })-[r]->() RETURN type(r) as type, count(*) as count

更多Cypher/Gremlin语言使用方式请参考Cypher文档

相关资源

-END-

原文来自CSDN同名账号【创邻科技

想了解更多图数据库相关知识请在微信搜索【创邻科技】关注该公众号!

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论