我刚刚阅读了ulid的规范,为什么不将时间戳转换为复杂的字符串呢?难道只是带有连续数字的时间戳吗?
答案 0 :(得分:2)
实际上,具有序号 might 的时间戳始终是唯一的。但这将取决于确保在给定的时间戳记中,不会多次给出相同的序列号。数据库中的自动增量列会对此进行近似,从而跟踪已使用的值。
通过使用UUID,我们可以避免所有这些潜在问题。由于存在大量潜在的UUID,因此从统计学上讲几乎不可能不可能一次生成同一UUID。因此,生成的UUID始终是唯一的,这是在其他方案上使用UUID的原因之一。
答案 1 :(得分:1)
一个数字将是39位数字长(因为有10个不同的数字)。同样使用其他字符(36个字符),ULID较短。 (<RadListView ref="listView" for="(manager, index) in managers" :itemReorder="true" reorderMode="Drag">
<v-template>
<Label>{{ manager.name }}</Label>
<ReorderHandle col="1" verticalAlignment="center">
<Image android:src="res://reorder_icon" ios:src="res://reorder-icon" stretch="none" verticalAlignment="stretch" margin="16" />
</ReorderHandle>
</v-template>
</RadListView>
。
具有序号
顺序号可能在一台机器上有效,但不能同时在多台同时生成ID的机器上使用(例如,分布式数据库)。当然,您可以添加计算机标识符(这是其他UID所做的事情),但是随后您必须确保这些计算机ID也是唯一的。使用非常长的随机部分,两台计算机不可能同时生成相同的随机数((80 + 24bits) / log²(10) > (80 + 24bits) / log²(32)
)。