Skip to content

Commit

Permalink
Update data type docs (#743)
Browse files Browse the repository at this point in the history
* Updated studio docs

* Create st-ug-limitations.md

* Delete st-ug-limitations.md

* Revert "Delete st-ug-limitations.md"

This reverts commit 16dacaf.

* Delete docs-2.0/nebula-docs directory

* keep consistency

* Updated studio docs

* Create st-ug-limitations.md

* Delete st-ug-limitations.md

* Revert "Delete st-ug-limitations.md"

This reverts commit 16dacaf.

* Delete docs-2.0/nebula-docs directory

* keep consistency

* Updated studio docs

* Create st-ug-limitations.md

* Delete st-ug-limitations.md

* Revert "Delete st-ug-limitations.md"

This reverts commit 16dacaf.

* Delete docs-2.0/nebula-docs directory

* keep consistency

* Update data type docs
  • Loading branch information
randomJoe211 authored Jul 21, 2021
1 parent 2b96054 commit 57b2d2b
Show file tree
Hide file tree
Showing 4 changed files with 81 additions and 16 deletions.
7 changes: 5 additions & 2 deletions docs-2.0/1.introduction/3.vid.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

在Nebula Graph中,一个点由点的ID唯一标识,即VID或Vertex ID。

## VID有如下特点
## VID的特点

- VID数据类型只可以为定长字符串`FIXED_STRING(<N>)``INT64`;一个图空间只能选用其中一种VID类型。

Expand Down Expand Up @@ -30,7 +30,7 @@

- 性能上,直接通过VID找到点的语句性能最高,例如`DELETE xxx WHERE id(xxx) == "player100"`, 或者`GO FROM "player100"`等语句。通过属性先查找VID,再进行图操作的性能会变差,例如`LOOKUP | GO FROM $-.ids`等语句,相比前者多了一次内存或硬盘的随机读(`LOOKUP`)以及一次序列化(`|`)。

## VID生成建议
## VID生成建议

VID的生成工作完全交给应用端,有一些通用的建议:

Expand All @@ -44,3 +44,6 @@ VID的生成工作完全交给应用端,有一些通用的建议:

- 如果用hash方式生成int64 VID,在有10亿个点的情况下,发生碰撞的概率大约是1/10。边的数量与碰撞的概率无关。

## 定义和修改VID的数据类型

VID的数据类型必须在[创建图空间](../3.ngql-guide/9.space-statements/1.create-space.md)时定义,且一旦定义无法修改。
52 changes: 46 additions & 6 deletions docs-2.0/3.ngql-guide/3.data-types/1.numeric.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,54 @@
# 数值类型
# 数值

## int
nGQL支持整数和浮点数。

Nebula Graph使用关键字`int`声明64位带符号整数,支持的范围是[-9223372036854775808, 9223372036854775807]。整数支持多种进制表示:
## 整数

nGQL支持带符号的64位整数(INT64)、32位整数(INT32)、16位整数(INT16)和8位整数(INT8)。

| 类型 | 声明关键字 | 范围 |
|-|-|-|
| INT64 | `INT64``INT` | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
| INT32 | `INT32` | -2,147,483,648 ~ 2,147,483,647 |
| INT16 | `INT16` | -32,768 ~ 32,767 |
| INT8 | `INT8` | -128 ~ 127 |

## 浮点数

nGQL支持单精度浮点(FLOAT)和双精度浮点(DOUBLE)。

| 类型 | 声明关键字 | 范围 | 精度 |
|-|-|-|-|
| FLOAT | `FLOAT` | 3.4E +/- 38 | 6~7位 |
| DOUBLE | `DOUBLE` | 1.7E +/- 308 | 15~16位 |

nGQL支持科学计数法,例如`1e2``1.1e2``.3e4``1.e4``-1234E-10`

!!! note

不支持MySQL中的DECIMAL数据类型。

## 数值的读写

在写入和读取不同类型的数据时,nGQL的行为遵守以下规则:

| 数值类型 | 设置为VID | 设置为属性类型 | 读取该类型的属性值得到的类型 |
|-|-|-|-|
| INT64 | 支持 | 支持 | INT64 |
| INT32 | 不支持 | 支持 | INT64 |
| INT16 | 不支持 | 支持 | INT64 |
| INT8 | 不支持 | 支持 | INT64 |
| FLOAT | 不支持 | 支持 | DOUBLE |
| DOUBLE | 不支持 | 支持 | DOUBLE |

例如,nGQL不支持设置INT8类型的[VID](../../1.introduction/3.vid.md),但支持将[TAG](../10.tag-statements/1.create-tag.md)[Edge type](../11.edge-type-statements/1.create-edge.md)的某个属性类型设置为INT8。当使用nGQL语句读取INT8类型的属性时,获取到的值的类型为INT64。

同时,Nebula Graph支持写入多种进制的数值:

- 十进制,例如`123456`
- 十六进制,例如`0x1e240`
- 八进制,例如`0361100`

## double

Nebula Graph使用关键字`double`声明双精度浮点数,例如`1.2``-3.0000001`。同时支持科学计数法,例如`1e2``1.1e2``.3e4``1.e4``-1234E-10`
但Nebula Graph会将写入的非十进制数值解析为十进制的值保存。读取到的值为十进制。

例如,属性`score`的类型为`INT`,通过INSERT语句为其赋值`0xb`,使用FETCH等语句查询该属性值获取到的结果是`11`,即将十六进制的`0xb`转换为十进制后的值。
7 changes: 6 additions & 1 deletion docs-2.0/3.ngql-guide/3.data-types/2.boolean.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
# 布尔

Nebula Graph使用关键字`bool`声明布尔数据类型,可选值为`true``false`
Nebula Graph使用关键字`BOOL`声明布尔数据类型,可选值为`true``false`

nGQL支持以如下方式使用布尔值:

* 将属性值的数据类型定义为布尔。
*`WHERE`子句中用布尔值作为判断条件。
31 changes: 24 additions & 7 deletions docs-2.0/3.ngql-guide/3.data-types/3.string.md
Original file line number Diff line number Diff line change
@@ -1,23 +1,40 @@
# 字符串

Nebula Graph使用关键字`string`(变长)或`fixed_string(<length>)`(定长)声明字符串类型数据,格式为双引号或单引号包裹的任意长度的字符串,例如`"Shaquille O'Neal"``'This is a double-quoted literal string'`
Nebula Graph支持定长字符串和变长字符串

## 字符串类型
## 声明与表示方式

Nebula Graph支持定长字符串和变长字符串。示例如下
nGQL中的字符串声明方式如下

- 定长字符串
- 使用关键字`STRING`声明变长字符串。
- 使用关键字`FIXED_STRING(<length>)`声明定长字符串,`<length>`为字符串长度,例如`FIXED_STRING(32)`

字符串的表示方式为用双引号或单引号包裹,例如`"Hello, Cooper"``'Hello, Cooper'`

## 字符串读写

nGQL支持以如下方式使用字符串:

-[VID](../../1.introduction/3.vid.md)的数据类型定义为定长字符串。
- 将变长字符串设置为Schema名称,包括图空间、Tag、Edge type和属性的名称。
- 将属性值的数据类型定义为定长或变长字符串。

例如:

- 将属性值的类型定义为定长字符串

```ngql
nebula> CREATE TAG t1 (p1 fixed_string(10));
nebula> CREATE TAG t1 (p1 FIXED_STRING(10));
```
- 变长字符串
- 将属性值的类型定义为变长字符串
```ngql
nebula> CREATE TAG t2 (p2 string);
nebula> CREATE TAG t2 (p2 STRING);
```
在写入定长字符串时,如果尝试写入的字符串超出长度限制,Nebula Graph将截断字符串,仅存入符合长度限制的部分。例如,当一个图空间的VID类型为`FIXED_STRING(8)`时,如果尝试将`A_string_with_27_characters`设置为VID,然后使用nGQL命令查询该VID,获取到的只有`A_string`。
## 转义字符
字符串中不支持直接换行,可以使用转义字符实现,例如:
Expand Down

0 comments on commit 57b2d2b

Please sign in to comment.