dgraph简单介绍 - Fri, Aug 7, 2020
dgraph简单介绍
1. 概述
dgraph 是基于 golang 开发的开源的分布式图数据库.
2. 基本概念
与其他数据库不同,图库中的数据采用一下方式进行描述:
[subject]->[predicate]->[object]
[主体]->[谓语]->[实体]
<0x01> <name> 'Alice'
<0x01> <age> 13
2. Schema
dgraph使用schema描述谓词(predicate).
2.1 默认类型
| 类型 | go | 举例 | 说明 | 
|---|---|---|---|
| default | string | Alice | |
| int | int64 | 13 | |
| float | float | 13.5 | |
| string | string | Alice | |
| bool | bool | true | |
| dateTime | time.Time | 2006-01-02T15:04:05.999999999 | RFC3339 | 
| geo | go-geom | 参照go-geom | |
| password | string | 加密之后字符串,无法返回,只能判断 | |
| uid | uint64 | 0x1 | 数据库子增ID | 
| [] | [] | [uid] | 数组 | 
2.2 定义谓词(predicate)
使用一下方式定义谓词:
<predicate>: <type> @<attr1>(<tokenizer>) @<attr2> .
<predicate>: 是要定义的谓词
<type>: 谓词的类型
@<attr1>(<tokenizer>): 谓词的属性
.: 结束符
示例:
name: string @index(exact, fulltext) @count .
age: int @index(int) .
friend: uid @count .
dob: dateTime .
location: geo @index(geo) .
occupations: [string] @index(term) .
2.3 自定义类型
可以将定义好的谓词,自由组合成新的类型。
type User {
    name
    age
    friend
    dob
    location
    occupations
}
注意:需要在插入数据时,特别插入数据的类型
{
    "name": "Alice",
    "age": 13,
    "friend": {
        "uid": "0x1345"
    },
    "dgraph.type": "User"
}