你在处理海量数据的时候遇到过这些问题吗?数据大量关联,需要很复杂的SQL语句才能取得想要的结果;数据规模不断扩大,导致关联数据的响应速度越来越慢……数易轩致力于图数据库技术服务,为您介绍图数据库平台及其应用场景,也许能通过NoSQL数据库——图数据库解决您的烦恼。
一、图数据库平台简介
图数据库平台是基于SpringCloud、Dgraph进行服务构建,允许用户可以自主进行图数据查询及变更的平台。
图数据库平台对外提供一套完整API服务,屏蔽图数据库内部复杂难懂的操作,降低用户使用图数据库的门槛,让用户可以方便快捷的管理自身图数据。
以下为图数据库平台当前架构:
目前平台主要分为3大部分,初始化模块、写入模块、查询模块。接下来的内容,我们将对每个模块做一个相对详细的描述及使用介绍。
二、初始化模块
初始化模块位于图中虚线分割的右侧部分,主要面向服务提供方,通过graph-init的Go服务模块,实现了对官方原生服务及Docker服务的融合,从而达到Dgraph集群的自动化构建,还可根据业务方需求提供带数据及不带数据的服务拉取(大数据量推荐使用带数据导入)。
示例
创建一个集群规模为3节点并初始化指定数据的Dgraph集群:
1 graph-init --zero 3
2 --alpha 3
3 --alphaPerNode 1
4 --replicas 3
5 --files {path_data}
6 --schema {path_schema}
7 --mapShards 20
8 --k8sUrl {k8sUrl}
9 --k8sUser {k8sUser}
10 --k8sPassword {k8sPassword}
11 --version ${version}
12 --bulk
13 --newUids
以下为grapn-init常用参数:
对于graph-ninit的完整功能,可使用–help查看更多具体参数说明及使用方式。
三、写入模块
写入模块位于图中虚线分割的左下方部分,屏蔽了原生复杂难懂的操作语句,并开放两部分功能:面向业务方的推送服务及面向服务提供方的元数据管理。
推送功能
此部分面向业务方,支持其按照既定格式(json)自主向图数据库平台推送数据,实现图数据库中数据的CURD等相关操作。针对当前业务数据大多存储于Hive的情况,我们支持通过写Spark脚本将数据写入底层图数据库中。
推送消息格式
示例
管理功能
此功能面向服务提供方,实现了对Dgraph元数据的CURD等操作。我们用一个添加schema的操作来进行简单展示。
示例
此示例表示创建一个叫做name的谓词(即属性),其为string类型,并为这个谓词建立hash的分词索引。
四、查询模块
查询模块位于图中虚线分割的左上方部分,其基于原生查询基础上,扩展出类SQL查询。用于支持业务方对自身存储在图数据库平台的数据进行相关查询。
类SQL
此类型查询允许业务方以SQL查询思想进行数据获取,需要根据业务使用场景提供定制的类SQL查询。
示例
GraphQL
此类型查询为Dgrpah原生GraphQL查询,更符合关联数据获取的常规思维逻辑,并提供完整功能。
示例
以上示例中的{serviceId}及{token}等占位符需要根据具体业务方进行替换。
示例只做相关内容的展示,如果要了解完整功能,可查看详细的wiki文档。
对于GraphQL的使用,在这不做赘述,可以查看Dgraph简介篇进行详细了解。
五、写在最后
通过上述内容的介绍,相信大家已经基本了解图数据库平台的功能。在当前版本中,我们将整个图数据库的基本功能开放使用。保证当前大家对于图数据库的使用需求。而在后续版本的迭代中,我们将对当前图数据库的分析能力以及数据的可视化进行探索及推进。期望平台能通过简单易用的方式来帮助使用者降低使用图数据库的门槛。