修改密码

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

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Blaze (v4)

Standalone

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.0
搜索
    v5.0

      本文介绍管理数据库中图和图类型的语句。

      显示图

      使用语句SHOW GRAPH获取数据库中所有图的信息。

      SHOW GRAPH
      

      图信息展示在不同的表中:

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

      嬴图Manager中只显示_graph表。

      表中包含以下字段:

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

      创建图

      语法

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

      <create graph statement> ::= 
        "CREATE GRAPH" [ "IF NOT EXISTS" ] <graph name> [ <graph type> ] [ <graph sharding> ] [ <graph description> ]
      
      <graph type> ::=
        <graph type specification> | <graph type reference> | <graph type like graph>
      
      <graph type reference> ::=
        [ < "::" | "TYPED" > ] <graph type name>
      
      <graph type like graph> ::=
        "LIKE" <existing graph name>
         
      <graph sharding> ::= 
        "PARTITION BY" <hash function> "SHARDS" <shard id list> 
          
      <graph description> ::=
        "COMMENT" <comment string>
      

      创建图时,可指定以下部分:

      部分
      描述
      <graph name> 图的唯一名称,查看命名规范
      <graph type> 可选;通过一种方法指定图类型:
      • <graph type specification>:自定义图类型;语法与创建图类型一致
      • <graph type reference>:复用一个已有的图类型
      • <graph type like graph>:复用另一个图的图类型
      <graph sharding> 可选;图的分片策略,包括:
      • <hash function>:计算分片键(点_id)哈希值的函数(Crc32Crc64WECrc64XZCityHash64),对图数据分片至关重要。了解更多信息,请参阅CrcCityHash
      • <shard id list>:存储图数据的Shard服务器的非空ID列表
      此项忽略时,图默认分布在所有Shard,使用Crc32哈希函数
      <graph description> 可选;图描述

      无图类型

      创建图g1,仅指定图名称:

      CREATE GRAPH g1
      

      自定义图类型

      创建图g1并定义UserClub点Schema、FollowsJoins边Schema以及一个复合EDGE KEY约束,使用哈希函数CityHash64将图数据分发至ID为123的Shard中:

      CREATE GRAPH g1 { 
        NODE User ({username string NOT NULL encrypt("AES128") COMMENT "Username, cannot be null", gender string}),
        NODE Club ({name string, since uint32}),
        EDGE Follows ()-[{createdOn datetime}]->(),
        EDGE Joins ()-[{memberNo uint64}]->()
      } 
      EDGE KEY time timestamp, eID int64
      PARTITION BY HASH(CityHash64) SHARDS [1,2,3] 
      COMMENT 'My first graph'
      

      创建图g2,定义的点Schema和边Schema都不包含任何属性,默认使用哈希函数Crc32将数据分发至所有Shard中:

      CREATE GRAPH g2 { 
        NODE User (),
        NODE Club (),
        EDGE Follows ()-[]->(),
        EDGE Joins ()-[]->()
      }
      

      创建图g3,图类型为空,使用默认哈希函数Crc32将数据分发至ID为1的Shard中:

      CREATE GRAPH g3 {} SHARDS [1]
      

      复用图类型

      使用图类型gType创建图g1,默认使用哈希函数Crc32将数据分发至所有Shard中:

      CREATE GRAPH g1 gType
      

      CREATE GRAPH g1 :: gType
      

      CREATE GRAPH g1 TYPED gType
      

      使用图类型gType创建图g2,使用哈希函数CityHash64将图数据分发至ID为123的Shard中:

      CREATE GRAPH g2 gType
      PARTITION BY HASH(CityHash64) SHARDS [1,2,3] 
      COMMENT 'This is the description'
      

      复用别图的图类型

      使用图trans的图类型创建图g1,默认使用哈希函数Crc32将数据分发至所有Shard中:

      CREATE GRAPH g1 LIKE trans
      

      使用图trans的图类型创建图g2,使用哈希函数CityHash64将图数据分发至ID为123的Shard中:

      CREATE GRAPH g2 LIKE trans
      PARTITION BY HASH(CityHash64) SHARDS [1,2,3] 
      COMMENT 'This is the description'
      

      使用IF NOT EXISTS

      IF NOT EXISTS子句用于防止在尝试创建已存在的图时出错,它允许安全地执行语句。

      CREATE GRAPH IF NOT EXISTS g1
      

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

      重命名图

      ALTER GRAPH语句可用来为数据库中的图重命名。

      将图amz重命名为amazon

      ALTER GRAPH amz RENAME TO amazon
      

      修改图描述

      ALTER GRAPH语句可用来修改数据库中图的描述。

      更新图amz的描述:

      ALTER GRAPH amz COMMENT 'Amazon dataset'
      

      迁移图数据

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

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

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

      删除图

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

      删除图g1

      DROP GRAPH g1
      

      IF EXISTS子句用于防止在尝试删除不存在的图时出错,它允许安全地执行语句。

      DROP GRAPH IF EXISTS g1
      

      仅当存在该名称的图时,才会删除图g1。如果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、每个Schema关联的属性以及约束。

      显示图类型

      使用语句SHOW GRAPH TYPE获取数据库中所有图类型的信息。

      SHOW GRAPH TYPE
      

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

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

      创建图类型

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

      <create graph type statement> ::= 
        "CREATE GRAPH TYPE" [ "IF NOT EXISTS" ] <graph type name> <graph type specification>
      
      <graph type specification> ::= 
        "{" [ <element schema> [ { "," <element schema> }... ] ] "}" [ <edge key constarint> ]
        
      <element schema> ::=
        <node schema> | <edge schema>
          
      <node schema> ::=
        "NODE" <schema name> "(" [ <property types> ] ")"
      
      <edge schema> ::=
        "EDGE" <schema name> "()-[" [ <property types> ] "]->()"
        
      <property types> ::= 
        "{" <property type> [ { "," <property type> }... ] "}"
      
      <property type> ::= 
        <property name> <property value type> [ <constraint name> ] [ <encryption> ] [ <property description> ]
      
      <property description> ::=
        "COMMENT" <comment string>
      
      <edge key constraint> ::=
        "EDEG KEY" <property name> <property value type> [ { "," <property name> <property value type> }... ]
      

      创建图类型时,可指定以下部分:

      部分
      描述
      <graph type name> 图类型的唯一名称,查看命名规范.
      <graph type specification> 包含<element schema><node schema><edge schema>)列表和<edge key constraint>

      每个<element schema>包含:
      • <schema name>:点或边Schema名称;查看命名规范
      • <property type>列表,每个包含:
        • <property name>:属性名称;查看命名规范
        • <property value type>:属性值类型;查看所有属性值类型
        • <constraint name>:可选;约束名称(EDGE KEY不在这里指定),例如NOT NULL;了解更多关于约束
        • <encryption>:可选;加密属性,支持使用方法AES128AES256RSAECC;格式为encrypt("<encrypt_method>")
        • <property description>:可选;属性描述

      <edge key constraint>:可选;指定作为所有边唯一标识符的属性;系统会自动为所有边Schema创建这些属性;如果某个边Schema定义了同名属性,然而与EDGE KEY中指定的值类型不一致,则会报错;了解更多关于EDGE KEY约束

      注意:一个名为<schema name>的点、边Schema的标签集合为:<schema name>

      创建图类型gType并定义UserClub点Schema、FollowsJoins边Schema以及一个复合EDGE KEY约束:

      CREATE GRAPH TYPE gType { 
        NODE User ({username string NOT NULL encrypt("AES128") COMMENT "Username, cannot be null", gender string}),
        NODE Club ({name string, since uint32}),
        EDGE Follows ()-[{createdOn datetime}]->(),
        EDGE Joins ()-[{memberNo uint64}]->()
      } EDGE KEY time timestamp, eID int64
      

      以下图类型创建会失败,因为Follows边Schema包含的属性eID值类型与EDGE KEY里定义的不一致(stringint64):

      CREATE GRAPH TYPE gType { 
        NODE User ({username string NOT NULL encrypt("AES128") COMMENT "Username, cannot be null", gender string}),
        NODE Club ({name string, since uint32}),
        EDGE Follows ()-[{createdOn datetime, eID string}]->(),
        EDGE Joins ()-[{memberNo uint64}]->()
      } EDGE KEY time timestamp, eID int64
      

      创建一个空的图类型gType_empty

      CREATE GRAPH TYPE gType_empty {}
      

      删除图类型

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

      删除图类型gType

      DROP GRAPH TYPE gType
      

      IF EXISTS子句用于防止在尝试删除不存在的图类型时出错,它允许安全地执行语句。

      DROP GRAPH TYPE IF EXISTS gType
      

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

      请完成以下信息后可下载此书
      *
      公司名称不能为空
      *
      公司邮箱必须填写
      *
      你的名字必须填写
      *
      你的电话必须填写
      *
      你的电话必须填写