gpt4 book ai didi

python - 随着时间的推移生成按字母数字顺序排列的 UUID

转载 作者:太空宇宙 更新时间:2023-11-03 17:54:29 24 4
gpt4 key购买 nike

跟进我的问题:Unique Linux filename, sortable by time

我需要生成一个 UUID,它本身随着时间的推移按字母数字顺序排列。我假设我需要附加自纪元以来的系统日期秒数和纳秒。这意味着我实际上只需要一个在给定纳秒内按字母数字顺序排列的 UUID 算法。

例如,我想到的 uuid 是这样的:

SECONDS_SINCE_EPOCH纳秒UID

以下 bash:

for i in `seq 1 10`;
do
echo `date '+%s.%N'`.`uuidgen -t`
done

结果:

1424718695.481439000.c8fef5d4-bb8f-11e4-92c7-00215e673861
1424718695.484130000.c8ff5eb6-bb8f-11e4-ae12-00215e673861
1424718695.486718000.c8ffc2ca-bb8f-11e4-ae15-00215e673861
1424718695.489267000.c90025bc-bb8f-11e4-a624-00215e673861
1424718695.491803000.c90089f8-bb8f-11e4-95ac-00215e673861
1424718695.494381000.c900ed76-bb8f-11e4-9058-00215e673861
1424718695.496899000.c901513a-bb8f-11e4-8018-00215e673861
1424718695.499460000.c901b440-bb8f-11e4-b382-00215e673861
1424718695.502007000.c90217a0-bb8f-11e4-89cd-00215e673861
1424718695.504532000.c90279d4-bb8f-11e4-b515-00215e673861

这些文件名看起来好像就足够了......但我担心的是,如果在同一纳秒内创建两个文件(想想大型企业系统),我不能保证名称将按字母数字顺序排列有 10 个内核运行许多并发用户)。因为那时我完全依赖 UUID 算法来获得我的唯一名称,并且所有 UUID 算法 promise 的是唯一性,而不是“字母数字顺序性”。

对于可以保证唯一性和字母数字顺序的方法有什么想法吗?因为我们正在处理大型企业系统,所以我需要尽可能保持我的要求,但如果纯 bash 中的解决方案不可用,我可能可以使用一些旧版本的 Python 之类的。

最佳答案

基于another answer ,您可以对 UUID 的时间部分重新排序,以便首先显示最重要的值,然后依次显示最不重要的值。这是更“自然”的方式,例如,显示 UNIX 时间并生成您正在寻找的排序顺序。

因此,以下 BASH 应该可以满足您的情况:

for i in `seq 1 10`; do
echo $(date '+%s.%N').$(uuidgen -t | cut -d- -f3,2,1,4,5)
done

请记住,没有任何保证。如果有足够的尝试和足够的时间,碰撞就会发生。如果可能的话,您可能希望在流程链的下游进行一些健全的书籍检查,以便在数据输入永久记录之前纠正任何此类错误。

关于python - 随着时间的推移生成按字母数字顺序排列的 UUID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28681650/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com