Dgraph简介
Dgraph是由Google公司开发的一款开源、分布式图数据库系统,为了满足其自身海量的网络搜索查询的需求,其前身是GraphD。截止目前(2020-11-24)最新版本为v20.07。
- 编写语言:Go编写
- 不支持SQL
- 查询语言:DQL
- 支持分布式
- 完全开源免费
- 副本:强一致性
- 自动数据均衡
- 支持全文检索
- 支持正则表达式
- 支持地理位置检索
- 支持可视化
- 维护成本低
- 写入性能高
- 查询速度快
Dgraph有一些缺点:
- 目前还不支持多重边
- 一个集群只支持一个图
- 与大数据生态兼容性不足。
Dgraph 架构图
- ratel:提供用户界面来执行数据查询,数据修改及元数据管理。
- alpha:用于管理数据(谓词和索引),外部用户主要都是和 alpha 进行数据交互。
- group:多个 alpha 组成一个 group,group 中的多个 alpha 通过 raft 协议保证数据一致性。
- zero:用于管理集群,并在 group 之间按照指定频率去均衡数据。
Dgraph 数据类型
Dgraph 中所有属性都被称为 predicate,即谓词;每个 predicate 都有确定的数据类型。
- default:默认类型
- int:64位有符号整数
- float:64位双精度浮点数
- bool:布尔
- geo:地理位置,目前支持 Point、Polygon、MultiPolygon
- datetime:时间类型
- string:字符串
- uid:边的类型,64 位整形,以 16 进制形式表示,如 0x1,系统默认分配
Dgraph 索引及分词器
Dgraph 基于每种数据类型,提供了不同的索引及其分词器。目前,建立索引及分词器的意义在于,建立以后可以使用相应的系统函数。
需要注意的是
1.count 需要和 list 配合使用,即选用 list 后,才可选用 count
2.upsert 需要和 index 配合使用,即选用 index 后,才可选用 upsert
3.对于 string 类型使用 tokenizer 时,exact、hash、term 只能任选其一