0

我正在从事一个项目,我希望从一开始就尽可能地灵活和可扩展。我担心的一个问题是 Joshua Schacter 在Founders at Work中描述得最好的一个问题,他指出这是一个他希望他能提前计划好的细节。

扩展到一台机器、一个数据库是非常具有挑战性的,即使是复制也是如此。那里的工具并不完全正确。

例如,当您将东西添加到表中并对其编号时,这意味着您不能让第二台机器也添加到它们中,因为数字会发生冲突。所以你会怎么做?你必须想出一些完全不同的方法来做到这一点。

您是否有一个分发数字集的中央服务器,或者您想出一些不是数字的东西?您是否使用随机数并希望它们永远不会发生冲突?不管是什么,自动分配的 ID 都不会飞。

这里有人遇到过这个问题吗?有什么方法可以超越自动递增的 ID,或者有没有办法让它们与多个服务器一起扩展?

4

2 回答 2

2

使用GUID / UUID(全局/通用唯一标识符)。理论上,它保证在多台机器上是唯一的。

于 2009-09-18T00:56:28.093 回答
1

GUID,您发生碰撞的机会非常低。

也可能有(我们称之为)SmartGUID(通常称为COMB GUIDS - 请参阅此分析,尤其是第 7 页),您可以在其中对 GUID 中的时间戳进行编码,因此您可以“免费”获得记录创建日期信息 - 这样您就可以为记录创建日期时间保存一个时间戳列 - 它可以恢复从 32 位整数到 128 位 GUID 移动时丢失的一些内容。这些也可以保证是单调的,这与常规 GUID 不同,后者可用于聚集索引和排序。

您还可以使用具有某种服务器/数据库 ID 的复合键,该 ID 具有常规的自动增量标识或自动编号。

于 2009-09-18T00:56:15.927 回答