mongo数据库的y2038问题

查阅mongo for c driver 驱动源码,

发现其 _id 是 12byte  ,其中头4字节,调用time(NULL), 这个函数存在y2038问题。

建议是修改为16byte ,前面8byte,用新的浮点日期格式,这个用delphi的tdatetime ,再保存为

int64表示(是用int64保存double,不是真实的int64)。

最终方案是

16字节binary id

转换成字符串表达为32byte hex string

该算法可以用在现有的关系数据库,以及其他需要分布式生成key的场景。

限制:delphi自己的处理,有9999年问题。目前够用了。

by steven 原创。

原文地址:https://www.cnblogs.com/stevenlaz/p/3545888.html