修改密码

请输入密码
请输入密码 请输入8-64长度密码 和 email 地址不相同 至少包括数字、大写字母、小写字母、半角符号中的 3 个
请输入密码
提交

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Blaze (v4)
  • Ultipa Powerhouse (v5)

Standalone

点击

了解 Ultipa Powerhouse (v5)架构中的四大组成部分。

Please complete this required field.

Please complete this required field.

Please complete this required field.

Please complete this required field.

如果不需要 HDC 服务,则此项留空。

Please complete this required field.

如果不需要 HDC 服务,则此项留空。

Please complete this required field.

Please complete this required field.

所有服务器的MAC地址,由换行符或逗号分隔。

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
Shard 服务最大数量
Shard 服务最大总核数
HDC 服务最大数量
HDC 服务最大总核数
申请天数
审批日期
过期日期
MAC地址
申请理由
审核信息
关闭
基础信息
  • 用户昵称:
  • 手机号:
  • 公司名称:
  • 公司邮箱:
修改密码
申请证书

当前未申请证书.

申请证书
Certificate Issued at Valid until Serial No. File
Serial No. Valid until File

Not having one? Apply now! >>>

ProductName CreateTime ID Price File
ProductName CreateTime ID Price File

No Invoice

v5.2
搜索
    v5.2

      概述

      嬴图数据库的一个实例包含一或多个(也称图集),每个图代表一个由相互连接的点、边组成的数据集或域。

      本文介绍如何在数据库中管理图和图类型。

      显示图

      获取数据库中所有图的信息:

      SHOW GRAPH
      

      语句返回以下表格:

      • _graph表包含数据库中的所有图。
      • _graph_shard_<id>表包含存储在Shard<id>上的图。

      嬴图Manager仅展示_graph表。

      各表包含以下字段:

      字段
      描述
      id 图的唯一ID
      name 图的唯一名称
      total_nodes 图中总点数
      total_edges 图中总边数
      description 图的注释
      status 图的当前状态,包括NORMALLOADING_SNAPSHOTCREATINGDROPPINGSCALING
      shards 图数据分布所在Shard的ID
      partition_by 计算分片键哈希值的函数,对图数据分片至关重要
      schema_free 图是否为开放图
      meta_version Meta服务器使用的版本号,用于和Shard服务器同步图上的DDL(数据定义语言)操作

      创建图

      嬴图数据库可创建两类图:

      1. 开放图。开放图无需在插入数据前显式定义Schema。您可直接向图中插入点和边,对应的Schema和属性会自动创建。如何创建开放图

      2. 类型图。图类型定义了所有允许的点、边Schema(类型),由以下部分构成:

      • 点Schema:一个点Schema由Schema名称(也用作点标签)和一组属性组成。每个图包含一个内置的点Schema,名为default
      • 边Schema:一个边Schema由Schema名称(也用作边标签)和一组属性组成。每个图包含一个内置的边Schema,名为default
      • 属性:属性与点或边Schema关联,由属性名称和属性值类型定义。
      • 约束:应用在属性上的额外规则,用于确保数据的准确性、一致性和完整性。如何在创建图时定义约束

      插入到图中的所有数据必须符合其图类型,即不能添加Schema或属性未定义的点或边。虽然图类型可以更改和调整,但它为数据插入设定了严格的框架。如何创建类型图

      以上两种图建模方式既灵活又不失控制力,支持从早期数据探索到严格要求数据完整性的生产级应用工作流。

      图数据物理存储在数据库部署所在Shard服务器上。您可根据部署情况,运行一或多个Shard服务器。对于任意图,均可指定一或多个Shard服务器以分布式方式存储点和边。如何配置图分片

      创建开放图

      创建开放图g1

      CREATE GRAPH g1 ANY
      

      使用关键词ANY来识别开放图。

      创建类型图

      图类型为空

      创建图类型为空的图g2

      CREATE GRAPH g2
      

      虽然g2的图类型为空,但它不是开放图。在插入任何数据前,必须向图中添加点或边Schema。

      自定义图类型

      创建一个带图类型规范的图g3,其定义如下:

      • 点Schema为User,包含属性nameSTRING类型)和ageUINT32类型)
      • 点SchemaClub,没有属性
      • 边SchemaFollows,包含属性createdOnLOCAL DATETIME类型)
      • 边SchemaJoins,没有属性

      CREATE GRAPH g3 { 
        NODE User ({name STRING, age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      

      预定义图类型

      使用预定义图类型gType(详见如何创建图类型)创建图g4

      CREATE GRAPH g4 gType
      

      CREATE GRAPH g4 :: gType
      

      CREATE GRAPH g4 TYPED gType
      

      使用关键词TYPED、操作符::,或省略不用以指定所使用的图类型。

      其他图的图类型

      复用已有图trans的图类型创建图g5

      CREATE GRAPH g5 LIKE trans
      

      使用关键词LIKE指定要复制其图类型的图。

      配置图分片

      您可显式定义图在数据库中Shard服务器之间的分布方式,包括:

      • 哈希函数:哈希函数(Crc32Crc64WECrc64XZCityHash64)计算分片键(点_id)的哈希值,对图数据分片至关重要。了解更多信息,请参阅CrcCityHash
      • 分片ID列表:存储图数据的Shard服务器的ID列表。

      默认情况下,图数据使用Crc32分布到所有分片。

      创建图g6,使用哈希函数CityHash64将图数据分布到分片[1,2,3]

      CREATE GRAPH g6 { 
        NODE User ({name STRING, age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      PARTITION BY HASH(CityHash64) SHARDS [1,2,3]
      

      使用关键词PARTITION BY指定哈希函数,关键词SHARDS指定分片ID列表。它们均可单独使用。

      图创建完成后,可能需要将图数据迁移到不同的分片。详情参见迁移图数据

      定义约束

      创建图时,可以在图类型中包含约束,以确保插入的数据具备完整性和一致性。

      创建图g7,包含如下约束:

      • User点的name属性应用NOT NULL约束,以确保每个User点的name都必须有非NULL值。
      • 对所有边Schema应用EDGE KEY约束。指定属性eIDINT64类型)会自动创建在所有边Schema上,且所有eID的值必须唯一且非NULL

      CREATE GRAPH g7 { 
        NODE User ({name STRING NOT NULL, age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      EDGE KEY eID INT64
      

      NOT NULL约束可用于任意单个属性,而EDGE KEY约束则全局作用于图中的所有边。也可通过指定多个属性创建复合EDGE KEY约束:

      CREATE GRAPH g7 { 
        NODE User ({name STRING NOT NULL, age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      EDGE KEY eID INT64, weight FLOAT
      

      本例中,属性eIDINT64类型)和weightFLOAT类型)自动创建在所有边Schema上;eIDweight均不可包含NULL值,eIDweight的组合不能有重复值。

      有关约束的详细说明和图创建后管理约束的操作,请详见本文

      加密属性

      使用以下支持的加密方法对属性值加密:AES128AES256RSAECC

      创建图g8,对User点的name属性加密:

      CREATE GRAPH g8 { 
        NODE User ({name STRING encrypt("AES128"), age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      

      使用IF NOT EXISTS

      使用IF NOT EXISTS子句可避免在尝试创建已存在的图时报错,从而安全执行语句。

      CREATE GRAPH IF NOT EXISTS g1
      

      仅当不存在同名图时,才会创建图g1。如果g1已存在,该语句将被忽略且不会报错。

      添加注释

      可以为图和属性添加注释,以提高可读性并便于理解。

      创建图g9,为图和Follows边的createdOn属性添加注释:

      CREATE GRAPH g9 { 
        NODE User ({name STRING, age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME COMMENT "When the edge is established"}]->(),
        EDGE Joins ()-[]->()
      }
      COMMENT 'My social graph'
      

      完整示例

      创建图g10并指定图类型:

      CREATE GRAPH IF NOT EXIST g10 { 
        NODE User ({name STRING NOT NULL encrypt("AES128") COMMENT "Username, cannot be null", age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      EDGE KEY eID INT64
      PARTITION BY HASH(CityHash64) SHARDS [1,2,3]
      COMMENT 'My social graph'
      

      修改图名称和注释

      使用ALTER GRAPH语句可以修改数据库中图的名称和注释。

      将图amz重命名为amazon

      ALTER GRAPH amz RENAME TO amazon
      

      更新图amz的注释:

      ALTER GRAPH amz COMMENT 'Amazon dataset'
      

      可以使用单个ALTER GRAPH语句,同时修改图的名称和注释:

      ALTER GRAPH amz RENAME TO amazon COMMENT 'Amazon dataset'
      

      迁移图数据

      由于图数据分布在多个Shard上,数据迁移有时是有必要的。比如,现有Shard过载时需迁移至更多Shard,或需要将数据分布到其他地理区域。将数据迁移至更少的Shard则可以释放未充分利用的资源,降低消耗,简化数据管理。使用ALTER GRAPH语句迁移图数据。

      假设图myGraph当前分布在Shard [1,2]上,将其迁移至Shard [1,4,5]:

      ALTER GRAPH myGraph ON SHARDS [1,4,5]
      

      默认的迁移策略balance,即将所有图数据重新平均分配在新Shard中。除此之外,也可指定以下一种策略:

      • quickly_expand:将部分数据从当前Shard快速迁移至新Shard。新Shard列表必须包含当前所有Shard
      • quickly_shrink:将被移除的Shard上的数据快速迁移至剩余Shard。新Shard列表必须是当前Shard列表的子列表

      将图myGraph从Shard [1,2]快速迁移至Shard [1,2,4]

      ALTER GRAPH myGraph ON SHARDS [1,2,4] PARTITION CONFIG {strategy: "quickly_expand"}
      

      将图myGraph从Shard [1,2]快速迁移至Shard [1]

      ALTER GRAPH myGraph ON SHARDS [1] PARTITION CONFIG {strategy: "quickly_shrink"}
      

      删除图

      使用DROP GRAPH语句从数据库中删除图。

      删除图g1

      DROP GRAPH g1
      

      使用IF EXISTS子句可避免在尝试删除不存在的图时报错,从而安全执行语句。

      DROP GRAPH IF EXISTS g1
      

      仅当图名称存在时,才会删除图g1。如果g1不存在,则忽略该语句,不会引发报错。

      默认情况下,无法删除已创建HDC图的图。可使用关键词FORCE绕过该限制:

      FORCE DROP GRAPH g1
      

      清空图

      使用TRUNCATE语句清空图。此操作只删除图中的点边数据,但保留图本身及其定义的图类型。

      您可选择清空整个图、所有点、所有边或指定Schema的点或边。请注意,清空点时,与其相连的边也会同时被清空。

      清空图myGraph

      TRUNCATE myGraph
      

      清空myGraph中的所有点,请注意所有边也会被清空:

      TRUNCATE NODE * ON myGraph
      

      清空myGraph中的所有User点,请注意所有与User点相连的边也会被清空:

      TRUNCATE NODE User ON myGraph
      

      清空myGraph中的所有边:

      TRUNCATE EDGE * ON myGraph
      

      清空myGraph中的所有Follows边:

      TRUNCATE EDGE Follows ON myGraph
      

      清理图

      使用COMPACT GRAPH语句清理图。此操作清理服务器磁盘上无效和冗余的图数据,但不会改变其他有效数据。图清理操作以作业形式进行,稍后可使用SHOW JOB <id?>验证操作是否完成。

      清理图myGraph

      COMPACT GRAPH myGraph
      

      冗余数据可能由一些数据操作产生,如更新或删除数据后仍保留的历史记录。建议定期清理图,回收存储空间,提升查询效率。

      管理图类型

      图类型通过定义允许的点Schema、边Schema及其关联属性和约束,为图设定结构规则。可以使用GQL在数据库中定义和存储图类型,以便在创建新图时复用。

      显示图类型

      获取数据库中所有图类型:

      SHOW GRAPH TYPE
      

      语句返回_graphType表,包含以下字段:

      字段
      描述
      name 图类型的唯一名称
      gql 创建图类型时使用的GQL语句

      创建图类型

      使用CREATE GRAPH TYPE语句在数据库中创建新的图类型。

      创建图类型gType

      CREATE GRAPH TYPE gType { 
        NODE User ({name STRING NOT NULL encrypt("AES128") COMMENT "Username, cannot be null", age UINT32}),
        NODE Club (),
        EDGE Follows ()-[{createdOn LOCAL DATETIME}]->(),
        EDGE Joins ()-[]->()
      }
      EDGE KEY eID INT64
      

      删除图类型

      使用DROP GRAPH TYPE语句从数据库中删除图类型。

      删除图类型gType

      DROP GRAPH TYPE gType
      

      使用IF EXISTS子句可避免在尝试删除不存在的图类型时报错,从而安全执行语句。

      DROP GRAPH TYPE IF EXISTS gType
      

      仅当存在该名称的图类型时,才会删除图类型gType。如果gType不存在,则忽略该语句,不会引发报错。

      命名规范

      数据库中所有图名称必须唯一。图名称需满足:

      • 包含2~127个字符
      • 以字母开头
      • 允许的字符:字母(A-Z,a-z),数字(0-9),下划线(_

      图类型

      数据库中所有图类型名称必须唯一。图类型名称需满足:

      • 包含2~64个字符
      • 以字母开头
      • 允许的字符:字母(A-Z,a-z),数字(0-9),下划线(_

      点/边Schema

      每个点/边Schema的名称需满足:

      • 包含2~127个字符
      • 不能以下划线(_)或波浪号(~)开头
      • 不能包含反引号(`
      • 不能使用系统属性名或保留词

      图中点Schema不能重名,边Schema不能重名,但点Schema可以和边Schema重名。

      属性

      每个属性名需满足:

      • 包含2~127个字符
      • 不能以下划线(_)或波浪号(~)开头
      • 不能包含反引号(`
      • 不能使用系统属性名或保留词

      同一个点/边Schema下,属性名需唯一。

      约束

      每个约束的名称需满足:

      • 包含2~64个字符
      • 以字母开头
      • 允许的字符:字母(A-Z,a-z),数字(0-9),下划线(_

      图中约束不能重名。

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写
      隐私政策
      请勾选表示您已阅读并同意。

      Copyright © 2019-2025 北京同心尚科技发展有限公司-保留所有权利 京ICP备19040872号-1