Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 1875|回复: 0

[转]mongo数据库的y2038问题

[复制链接]

该用户从未签到

发表于 2014-2-12 14:30:56 | 显示全部楼层 |阅读模式
mongo数据库的y2038问题

[url]http://www.cnblogs.com/stevenlaz/p/3545888.html
[/url]
查阅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 原创。


回复

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2025-5-1 20:49 , Processed in 0.041224 second(s), 10 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表