【发布时间】:2017-04-12 06:42:53
【问题描述】:
序列化 boost::uuid 是有代价的。使用它们来索引 vector / unordered_map 需要额外的散列。 boost::uuids 是理想的数据结构的理想用例是什么?
【问题讨论】:
序列化 boost::uuid 是有代价的。使用它们来索引 vector / unordered_map 需要额外的散列。 boost::uuids 是理想的数据结构的理想用例是什么?
【问题讨论】:
如果您想要在时间上稳定且跨存储系统的 ID,则 UUID 非常有用。
假设有两个数据库,每个数据库都有自动生成的 ID。
如果 ID 是通过从 0 递增整数值生成的,那么合并它们会很麻烦。
如果所有相关的 ID 都是 UUID,那么合并它们将是一件轻而易举的事。
同样,使用 UUID 将大量数据分发给记录离线操作的外部方并随后将这些操作应用回原始数据要容易得多 - 即使元素之间的关系已更改、创建了新元素等。
UUID 对于通用“识别”(not 身份验证/授权!)也很方便 - 例如在驱动程序版本、插件 ID 等中。考虑检测 MSI 是对特定已安装软件的更新包。
一般来说,我不会将 UUID 评为任何数据结构的特征。我认为它是设计基础架构的工具。它在持久性、交换级别上发挥作用,而不是在算法和内存操作级别上发挥作用。
【讨论】: