三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

【A11】统一实体标识符(UEID)规范

【A11】统一实体标识符(UEID)规范

A11 数据同步系统 - ID 标识规范

一、核心设计哲学

1.1 设计原则

ID 设计原则 │ ├── 服务器统一分配原则 │ ├── 所有有效 ID 均由服务器生成 │ ├── 客户端不得自行指定有效 ID │ └── 客户端提交时 ID 字段可省略或填 0 │ ├── 符号语义分离原则 │ ├── 负数 → 机构/系统实体 │ ├── 正数 → 人员实体 │ └── 零值 → 未确认占位符 │ ├── 权限自然继承原则 │ ├── -1 代表 ROOT_ORG(根组织) │ ├── i64::MAX 代表 SUPER_ADMIN(超级管理员) │ └── i64::MIN 代表 DELETED_ORG(删除回收站) │ └── 排序天然有序原则 ├── 正数(人员)排在负数(机构)之后 ├── 同符号内权重小的优先 └── 权重相同数值小的优先

1.2 一句话理解

负数管组织,正数管人员,零是临时工,极值管全局


二、ID 分类总览

2.1 按符号分类

ID 符号分类 │ ├── 负数(-1, -2, -3 ...) │ ├── 实体类型:机构/系统实体 │ ├── 包含:Organization、Project、Team │ ├── 符号位:1 │ └── 特征:系统级实体,统一管理 │ ├── 正数(1, 2, 3 ...) │ ├── 实体类型:人员实体 │ ├── 包含:Person │ ├── 符号位:0 │ └── 特征:业务人员,身份绑定 │ ├── 零(0) │ ├── 实体类型:未确认占位符 │ ├── 权限:无任何权限 │ └── 用途:临时标识,等待服务器分配有效 ID │ ├── i64::MIN(-9223372036854775808) │ ├── 实体类型:删除回收站 │ ├── 符号位:1(机构类) │ └── 用途:已删除实体的归档容器 │ └── i64::MAX(9223372036854775807) ├── 实体类型:超级管理员 ├── 符号位:0(人员类) └── 用途:根组织(-1)的全权代理人

2.2 快速对照表

ID 范围/值符号实体类型权限特征
-1, -2, -3...机构/系统实体系统级管理
1, 2, 3...人员实体业务身份
0未确认占位符❌ 无任何权限
i64::MIN删除回收站🗑️ 归档容器
i64::MAX超级管理员👑 全局代理人

三、64 位 ID 位域结构

3.1 位域分配

64 位 ID 结构

位域符号位权重位数值位
位位置第 63 位第 62-48 位第 47-0 位
位数1 位15 位48 位
取值范围011~327670~2^48-1
默认值-10
语义0= 人员实体
1= 机构实体
排序权重(越小越靠前)唯一标识(0 保留给根/占位符)

位域分配速查表

位域位数位置用途取值说明
符号位163区分实体类型0=人员,1=机构
权重位1562-48控制排序1~32767,越小越靠前
数值位4847-0唯一标识1~2^48-10保留

四、取值对照表

位域最小值最大值默认值说明
符号位01-0=人员,1=机构
权重位1327671权重值
数值位02^48-10唯一标识,0 保留
组合(符号位=0)12^63-2-人员实体 ID 范围
组合(符号位=1)-1-2^63+1-机构实体 ID 范围

五、特殊 ID 位域解析表

特殊 ID符号位权重位数值位说明
0000未确认人员占位符,❌ 无任何权限
-1101系统根组织 ROOT_ORG
-2102普通机构实体示例
1011普通人员实体示例
i64::MIN100删除回收站 DELETED_ORG
i64::MAX011超级管理员 SUPER_ADMIN

六、排序规则表

优先级比较维度规则说明
1符号位正数(0)排在负数(1)之前人员实体排在机构实体前面
2权重位权重值小的排在前面同类型内,权重小者优先
3数值位数值小的排在前面权重相同时,数值小者优先

七、ID 操作函数示例

// 提取符号位(0=人员,1=机构)fnsign(id:i64)->i8{((id>>63)&1)asi8}// 提取权重位(15位,1-32767)fnweight(id:i64)->u16{((id>>48)&0x7FFF)asu16}// 提取数值位(48位,0-2^48-1)fnvalue(id:i64)->u64{(id&0x0000FFFFFFFFFFFF)asu64}// 判断是否为机构实体fnis_organization(id:i64)->bool{id<0&&id!=i64::MIN}// 判断是否为人员实体fnis_person(id:i64)->bool{id>0&&id!=i64::MAX}// 判断是否为根组织fnis_root_org(id:i64)->bool{id==-1}// 判断是否为超级管理员fnis_super_admin(id:i64)->bool{id==i64::MAX}// 判断是否为删除回收站fnis_deleted_org(id:i64)->bool{id==i64::MIN}

八、常量定义表

常量名称说明
SIGN_MASK0x8000000000000000符号位掩码
WEIGHT_MASK0x7FFF000000000000权重位掩码
VALUE_MASK0x0000FFFFFFFFFFFF数值位掩码
DEFAULT_WEIGHT1默认权重值
RESERVED_VALUE0保留数值(根/占位符)
i64::MIN-9,223,372,036,854,775,808删除回收站
i64::MAX9,223,372,036,854,775,807超级管理员
ROOT_ORG-1根组织 ID
UNCONFIRMED0未确认人员 ID
← 返回列表