【发布时间】:2017-10-16 16:37:50
【问题描述】:
我查看了titan db的源代码,titan为顶点、属性、标签等分配了id。但是很难理解它是如何分配的?
【问题讨论】:
我查看了titan db的源代码,titan为顶点、属性、标签等分配了id。但是很难理解它是如何分配的?
【问题讨论】:
Titan ID 具有以下格式
╔═════════╦═══════════╦══════════════════╗
║ Counter ║ Partition ║ IDTypePadding ║
╚═════════╩═══════════╩══════════════════╝
每个 ID 都有IDTypePadding 后缀。后缀定义 ID 的类型。这是在IDManager 类VertexIDType 枚举中实现的。
默认情况下有 32 个可用分区值。每个titan实例默认随机选择10个分区。
对于每个分区,titan 分配 ID 块。默认 ID 块大小为 10000。Titan 使用后端存储的 titan_ids 表确保 ID 块在分区级别的集群中是唯一的。
ID 分配:第一个泰坦选择IDTypePadding。然后随机选择一个分区。最后从 ID 块中获取递增的计数器。
【讨论】: