1 个不稳定版本
0.1.0 | 2023年4月15日 |
---|
2283 在 数据库接口
9KB
185 行
oid
一个id方案。为什么还需要另一个呢?
lexicographically sortable
-uuidv4
不可排序并且会导致数据库索引爆炸。像ulid
一样,oid
是可按字典序排序的。- 命名 - oid 可以用名称作为前缀,例如
team_0da0fa0e02cssbhkanf04c_srb0
- 短编码 - oid 可以用简写形式编写,例如
team_srb0
- 可双击复制 - 尝试双击此uuid:
a827f03c-f5b0-40ef-8d53-3fb3cdf4e055
。然后尝试这个oid
:team_0da0fa0e02cssbhkanf04c_srb0
用法
label!(Team, "team");
label!(User, "usr");
label!(Transaction, "tx");
fn main() {
let id = Team::oid();
// e.g. id: team_0da0fa0e02cssbhkanf04c_srb0
println!("id: {}", id);
// e.g. id: team_srb0
// e.g. uuid: a827f03c-f5b0-40ef-8d53-3fb3cdf4e055
println!("short: {}", id.short());
println!("uuid: {}", id.uuid());
// We didn't use a Label, so it's simply missing.
let id = new_oid();
// e.g. id: 0da0fa0e02cssbhkanf04c_srb0
println!("id: {}", id);
}
路线图
- 创建一个PostgreSQL扩展,将oids存储为u128,但以可读的格式显示。
依赖关系
~1–14MB
~162K SLoC