修改密码

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

修改昵称

当前昵称:
提交

申请证书

证书详情

Please complete this required field.

  • Ultipa Graph V4

Standalone

Please complete this required field.

Please complete this required field.

服务器的MAC地址

Please complete this required field.

Please complete this required field.

取消
申请
ID
产品
状态
核数
申请天数
审批时间
过期时间
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

      图集

      概述

      一个嬴图数据库可以容纳多个图集,其中每个图集包含图结构(schema和属性)、元数据(点和边)、索引、进程和作业等信息。“图集”和“图”两种表达经常互换使用。

      显示图集

      获取数据库中的图集信息:

      // 显示所有图集
      show().graph()
      
      //显示全部图集及更多细节,如total_nodes,total_edges
      show().graph().more()
      
      // 显示指定图集
      show().graph("myGraph")
      
      // 显示指定图集及更多细节,如total_nodes,total_edges
      show().graph("myGraph").more()
      

      图集信息呈现在_graph_graph_shard_1_graph_shard_2等表中:

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

      表中各字段提供了图集的基础信息:

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

      创建图集

      使用单个语句create()可创建一或多个图集。将三个方法graph().shards().partitionByHash()串联使用来指定图集。

      create()
        .graph("<name>", "<desc?>").shards(<shardList>).partitionByHash(<hashFunc>, <shardKey?>)
        .graph("<name>", "<desc?>").shards(<shardList>).partitionByHash(<hashFunc>, <shardKey?>)
        ...
      
      方法 参数 描述
      graph() <name> 图集的唯一名称。命名规范如下:
      • 2~64个字符
      • 以字母开头
      • 允许的字符:字母(A-Z,a-z),数字(0-9),下划线(_
      <desc?> 可选。对图集的描述
      shards() <shardList> 分片ID的非空列表,表示图数据所在的分片位置
      partitionByHash() <hashFunc> 计算分片键哈希值的函数(Crc32Crc64WECrc64XZCityHash64),对图数据分片至关重要。了解更多,参阅CrcCityHash
      <shardKey?> 可选。使用点属性作为分片键。目前仅支持使用_id

      创建名为myGraph的图集,使用CityHash64函数,根据点的_id将数据分发至分片1、分片2和分片3中:

      create().graph("myGraph").shards([1,2,3]).partitionByHash(CityHash64, _id)
      

      创建两个图集:

      create()
        .graph("myGraph_1").shards([1,2,3]).partitionByHash(CityHash64)
        .graph("myGraph_2").shards([2]).partitionByHash(Crc32)
      

      修改图集名称和描述

      使用语句alter().graph().set()可以修改图集的名称和描述。

      修改图集myGraph的名称和描述:

      alter().graph("myGraph").set({name: "superGraph", description: "Graph used for transactions"})
      

      修改图集myGraph的名称:

      alter().graph("myGraph").set({name: "superGraph"})
      

      修改图集myGraph的描述:

      alter().graph("myGraph").set({description: "Graph used for transactions"})
      

      删除图集myGraph的描述:

      alter().graph("myGraph").set({description: ""})
      

      迁移图集数据

      由于图集中的数据分布在多个分片上,数据迁移有时就显得非常必要。比如现有分片过载时需迁移至更多分片,或将数据分布到其他地理区域。而将数据迁移至更少的分片,可以释放未充分利用的资源,降低消耗,简化数据管理。

      使用语句alter().graph().shards().partitionConfig()可以迁移图集数据。

      alter().graph("<graphName>").shards(<shardList>).partitionConfig({strategy: "<rsStrat>"})
      
      方法
      参数
      描述
      可选
      graph() <graphName> 指定图集
      shards() <shardList> 图集数据存储所在分片的非空ID列表。该列表不能与当前分片列表相同,且需和partitionConfig()中的strategy集保持一致
      partitionConfig() 配置映射 指定迁移的strategy,可根据以下方式进行设置:
      • balance:在新分片中平均分配所有图集数据
      • quickly_expand:将部分数据从已有分片快速迁移至新增分片。<shardList>必须包含当前所有分片
      • quickly_shrink:将已移除的分片上的数据快速迁移至剩余分片。<shardList>只能是当前所有分片的子集
      忽略该方法时,将默认使用balance

      假设图集myGraph当前分布在分片1和分片2上。现在要将myGraph从分片[1,2]迁移至分片[1,4,5]

      alter().graph('myGraph').shards([1,4,5]).partitionConfig({strategy: "balance"})
      

      myGraph从分片[1,2]迁移至分片[3]

      alter().graph('myGraph').shards([3]).partitionConfig({strategy: "balance"})
      

      myGraph从分片[1,2]快速迁移至分片[1,2,4]

      alter().graph('myGraph').shards([1,2,4]).partitionConfig({strategy: "quickly_expand"})
      

      myGraph从分片[1,2]快速迁移至分片[1]

      alter().graph('myGraph').shards([1]).partitionConfig({strategy: "quickly_shrink"})
      

      删除图集

      使用单个语句drop()即可删除一个或多个图集。串联使用graph()方法指定每个图集。删除图集意味着将整个图集从数据库删除。

      删除图集myGraph

      drop().graph("myGraph")
      

      删除两个图集:

      drop().graph("myGraph_1").graph("myGraph_2")
      

      默认情况下,无法删除已创建HDC图的图集。可使用force()方法绕过该限制,强制删除图集:

      drop().graph("myGraph_1").graph("myGraph_2").force()
      

      清空图集

      使用语句truncate().graph()可以清空图集。清空图集只删除图集中的点边数据,仍保留图集本身及其结构(schema和属性信息)。

      串联使用nodes()edges()方法即可指定清空点或边。但请注意,删除点时,与其相连的边也会同时删除.

      // 清空图集myGraph(将删除所有点边数据)
      truncate().graph("myGraph")
      
      // 清空所有@user点(与其相连的边也会同时删除)
      truncate().graph("myGraph").nodes(@user)
      
      // 清空所有点(也会同时删除所有边)
      truncate().graph("myGraph").nodes("*")
      
      // 清空所有@link边
      truncate().graph("myGraph").edges(@link)
      
      // 清空所有边
      truncate().graph("myGraph").edges("*")
      

      压缩图集

      使用语句compact().graph()可以压缩图集,清理图集在服务器磁盘上的无效冗余数据,但不会改变其他有效数据。碎片整理操作以作业形式进行,稍后可使用show().job(<id?>)验证碎片整理是否完成。

      压缩图集myGraph

      compact().graph("myGraph")
      

      数据操作会产生冗余数据,如更新或删除数据后仍保留的历史记录。建议定期压缩图集,回收存储空间,提升查询效率。

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