生成稳定的递增id
? ? ? 最近有个项目数据库设计中需要用到分表, 假设记录文章的表,主键用一个id来标识文章的id。由于各个表中的id不能重复,所以需要用一个外部的id生产程序。当然我们可以在数据库中单独新建一个表,利用表的自增属性来生成这个id,但是这样子不够灵活。所以另外用python写了个生成id的程序。
? ? ? 其中需要注意两点,
? ? ? 1.要保证线程安全,所以变量递增的时候,必须添加锁。
? ? ? 2.要保证该生成id的进程在被断电或意外强制结束(kill -9)后,下次重新启动的时候,再能从进程崩溃前的id继续递增,而不至于产生以前产生过的id,就是说要保证内存中的数据实时的同步到硬盘。第二点,python提供的anydbm模块或gdbm模块,其中打开文件的时候,有个s模式,即实时同步模式,能保证内存中的数据实时的同步到硬盘中。
?即使进程被被kill -9,数据也不会丢失。