修改密码

请输入密码
请输入密码 请输入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() <graphName> 图集的唯一名称。命名规范如下:
      • 2~64个字符
      • 以字母开头
      • 允许的字符:字母(A-Z,a-z),数字(0-9),下划线(_
      <graphDesc?> 可选。对图集的描述
      shards() <shardList> 分片ID的非空列表,表示图数据所在的分片位置
      partitionByHash() <hashFunc> 计算分片键哈希值的函数(Crc32Crc64WECrc64XZCityHash64),对图数据分片至关重要。请注意,图集创建后不可修改该函数。了解更多信息,请参阅函数Crc和函数CityHash
      <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")
      

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

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