格式化交易ID的最佳方法是什么?
条件
最多15个字符:XXXXXXXXXXXXXXX
- 所有交易必须是唯一的
- 包含数字和字母字符
- 可以包含年,月,日
答案 0 :(得分:3)
您是在谈论格式化还是创建它?如果是后者,我过去使用的一个解决方案就是古老的:
YYMMDDhhmmssnnn
其中YY..ss
是明显的,nnn
只是一个数字,每次获得交易ID时都会递增。这样,只要你不要求每秒超过一千个身份证,你就会拥有自己的独特性,身份证只会在每个世纪都有效。
当然,如果你真的想要更多压缩,你可以使用这些两位数字段中的许多都是浪费的事实。设置一个字符数组,能够将某些字段编码为集合中的单个字符:
abcdefghijklmnopqrstuvwxyz (values 0-25)
ABCDEFGHIJKLMNOPQRSTUVWXYZ ( 26-51)
0123456789 ( 52-61)
(62个字符)并用它将MM,DD,hh,mm和ss编码成一个字符。
例如,4月份的第4个月可以编码为e
。超过一小时45分钟将分钟字段编码为T
。
这可以节省5个字符,在CC世纪中加入以阻止它再滚动8000年左右,然后你可以每秒处理一百万个ID,如果你以同样的方式编码CC
则可以处理一千万个ID虽然你最终会遇到Y6K问题: - )
所以现在(2010-02-25 / 20:22:15),假设nnnnnn
目前是0,你会得到的:
2010 c z u w p 000000
| | | | | | |
| | | | | | +- sequence number within second
| | | | | +------ p = 15 (second)
| | | | +-------- w = 22 (minute)
| | | +---------- u = 20 (hour)
| | +------------ z = 25 (day)
| +-------------- c = 2 (month)
+----------------- 2010 = 2010 (year)