From 156d000a6a112bb4df30afe85ed0791b75b89d36 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 9 Sep 2021 17:01:23 +0800 Subject: [PATCH 1/6] improve query by tag index --- .../improve-query-by-tag-index.md | 58 +++++++++++++++++++ mkdocs.yml | 1 + 2 files changed, 59 insertions(+) create mode 100644 docs-2.0/8.service-tuning/improve-query-by-tag-index.md diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md new file mode 100644 index 00000000000..14ab7ffac9f --- /dev/null +++ b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md @@ -0,0 +1,58 @@ +# 使用Tag索引提高查询效率 + +如果需要根据Tag进行查询,Nebula Graph支持为Tag创建索引,提高查询效率。 + +## 原理 + +在Neo4j中,可以为点添加label,通过label可以快速筛选需要的点。 + +Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找相关的信息,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 + +!!! caution + + 请确保点上已经有另一个Tag,否则删除点上最后一个Tag时,会导致点也被删除。 + +## 示例 + +例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东Tag。 + +示例: + +```ngql +//创建股东Tag和索引,插入测试数据 +nebula> CREATE TAG shareholder (); +nebula> CREATE TAG INDEX shareholder_tag on shareholder(); +nebula> INSERT VERTEX shareholder() VALUES "player100":(); +nebula> INSERT VERTEX shareholder() VALUES "player101":(); + +//快速查询所有股东 +nebula> MATCH (v:shareholder) RETURN v; ++---------------------------------------------------------------------+ +| v | ++---------------------------------------------------------------------+ +| ("player100" :player{age: 42, name: "Tim Duncan"} :shareholder{}) | ++---------------------------------------------------------------------+ +| ("player101" :player{age: 36, name: "Tony Parker"} :shareholder{}) | ++---------------------------------------------------------------------+ +nebula> LOOKUP ON shareholder; ++-------------+ +| VertexID | ++-------------+ +| "player100" | ++-------------+ +| "player101" | ++-------------+ + +//如果player100不再是股东 +nebula> DELETE TAG shareholder FROM "player100"; +nebula> LOOKUP ON shareholder; ++-------------+ +| VertexID | ++-------------+ +| "player101" | ++-------------+ +``` + +!!! note + + 如果插入测试数据后才创建索引,请用`REBUILD TAG INDEX ;`语句重建索引。 \ No newline at end of file diff --git a/mkdocs.yml b/mkdocs.yml index 0fd75798a80..8dbaceb480b 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -310,6 +310,7 @@ nav: - 系统建模: 8.service-tuning/3.system-design.md - 执行计划: 8.service-tuning/4.plan.md - 超级节点(稠密点): 8.service-tuning/super-node.md + - 使用Tag索引提高查询效率: 8.service-tuning/improve-query-by-tag-index.md - 客户端: - 客户端介绍: 14.client/1.nebula-client.md From e3c904cf5cd7160eba3e47577b2261a360f7d706 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 9 Sep 2021 17:02:30 +0800 Subject: [PATCH 2/6] update --- docs-2.0/8.service-tuning/improve-query-by-tag-index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md index 14ab7ffac9f..a7726615562 100644 --- a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md +++ b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md @@ -6,7 +6,7 @@ 在Neo4j中,可以为点添加label,通过label可以快速筛选需要的点。 -Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找相关的信息,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 +Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 !!! caution From d7c1b6661d2854262886072da4ccda9426c4cfe0 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 9 Sep 2021 17:04:45 +0800 Subject: [PATCH 3/6] Update improve-query-by-tag-index.md --- docs-2.0/8.service-tuning/improve-query-by-tag-index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md index a7726615562..5c839185fd8 100644 --- a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md +++ b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md @@ -20,7 +20,7 @@ Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到 ```ngql //创建股东Tag和索引,插入测试数据 -nebula> CREATE TAG shareholder (); +nebula> CREATE TAG shareholder(); nebula> CREATE TAG INDEX shareholder_tag on shareholder(); nebula> INSERT VERTEX shareholder() VALUES "player100":(); nebula> INSERT VERTEX shareholder() VALUES "player101":(); @@ -55,4 +55,4 @@ nebula> LOOKUP ON shareholder; !!! note - 如果插入测试数据后才创建索引,请用`REBUILD TAG INDEX ;`语句重建索引。 \ No newline at end of file + 如果插入测试数据后才创建索引,请用`REBUILD TAG INDEX ;`语句重建索引。 From e0f9fba6924cabb26ea11b611968186e20579baa Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 9 Sep 2021 17:52:11 +0800 Subject: [PATCH 4/6] update --- .../8.service-tuning/improve-query-by-tag-index.md | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md index a7726615562..5a7f884bea4 100644 --- a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md +++ b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md @@ -1,12 +1,8 @@ -# 使用Tag索引提高查询效率 +# 增加和删除标签 -如果需要根据Tag进行查询,Nebula Graph支持为Tag创建索引,提高查询效率。 +在openCypher中,有增加标签(`SET label`)和移除标签(`REMOVE label`)的功能,可以用于加速查询或者标记过程。 -## 原理 - -在Neo4j中,可以为点添加label,通过label可以快速筛选需要的点。 - -Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 +在Nebula Graph中,可以通过Tag变相实现相同操作,创建Tag并将Tag插入到已有的点上,就可以根据Tag名称快速查找点,也可以通过`DELETE TAG`删除某些点上不再需要的Tag。 !!! caution @@ -16,8 +12,6 @@ Nebula Graph支持通过Tag实现相同的操作,创建Tag并将Tag插入到 例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东Tag。 -示例: - ```ngql //创建股东Tag和索引,插入测试数据 nebula> CREATE TAG shareholder (); From e684f4e2398338e9f9f96a637f92c0a196f5515d Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Thu, 9 Sep 2021 17:52:53 +0800 Subject: [PATCH 5/6] update --- mkdocs.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/mkdocs.yml b/mkdocs.yml index 8dbaceb480b..cb4452d740a 100755 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -310,7 +310,7 @@ nav: - 系统建模: 8.service-tuning/3.system-design.md - 执行计划: 8.service-tuning/4.plan.md - 超级节点(稠密点): 8.service-tuning/super-node.md - - 使用Tag索引提高查询效率: 8.service-tuning/improve-query-by-tag-index.md + - 增加和删除标签: 8.service-tuning/improve-query-by-tag-index.md - 客户端: - 客户端介绍: 14.client/1.nebula-client.md From ad60450b720c666fc38e404a87b3fb9f3601dad7 Mon Sep 17 00:00:00 2001 From: cooper-lzy <78672629+cooper-lzy@users.noreply.github.com> Date: Fri, 10 Sep 2021 08:54:35 +0800 Subject: [PATCH 6/6] update --- docs-2.0/8.service-tuning/improve-query-by-tag-index.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md index fb6906e3e72..be7e730d597 100644 --- a/docs-2.0/8.service-tuning/improve-query-by-tag-index.md +++ b/docs-2.0/8.service-tuning/improve-query-by-tag-index.md @@ -13,9 +13,11 @@ 例如在basketballplayer数据集中,部分篮球运动员同时也是球队股东,可以为股东Tag`shareholder`创建索引,方便快速查找。如果不再是股东,可以通过`DELETE TAG`语句删除相应运动员的股东Tag。 ```ngql -//创建股东Tag和索引,插入测试数据 +//创建股东Tag和索引 nebula> CREATE TAG shareholder(); nebula> CREATE TAG INDEX shareholder_tag on shareholder(); + +//为点添加Tag nebula> INSERT VERTEX shareholder() VALUES "player100":(); nebula> INSERT VERTEX shareholder() VALUES "player101":();