如果您查看 facebook 的图形 API,似乎所有对象共享相同的 ID 空间,并且所有 Id 都是唯一的,即使它们位于不同的表中。
MySQL 中是否有处理此问题的功能?(如果没有,如何实施的高级想法?)
您可能想检查一下UUID()
。它返回一个全局唯一 ID,因此您的 ID 永远不会发生冲突。
要将其转换为整数格式,您可以
UNHEX(REPLACE(UUID(),'-',''))
用于存储在BINARY(16)
列中。
(转换为整数的来源:Nicholas Sherlock在 MySQL 参考中的评论)
如果您有一个主数据库服务器,则可以创建一个名为 Object 的表,该表具有一个整数自增主键和一个对象类型列。每次创建对象时,首先在此 Object 表中插入一行,获取 id,然后使用该 id 将一行插入到将保存对象信息的任何表中。所以要创建一个事件:
INSERT INTO Object (object_type) VALUES ('Event')
获取最后一个插入 id,假设它是 12345。
INSERT INTO Event (id, name, location) VALUES (12345, 'Cookout', 'My back yard')
OR use a single sequence to drive the ID values.