我面临着以前从未解决的方式处理身份证。我不认为有一些令人惊讶的解决方案,但我想我也可以问。
我有一个对象的哈希表。
每个都由id标识,为了演示,这是一个数字。虽然它实际上是一个GUID。
对象的数量是无限的,为了这项练习的目的,数十亿。
应用程序逻辑定义了ID组之间存在的转换。
例如,可以将ID {4, 7, 12}
组定义为转换为{5, 16}
。
每个ID都可以出现在任意数量的分组翻译中。
来自分组翻译的组可以被翻译成多个其他组,但每个组都是自己的翻译规则,独立于其他组。
分组翻译中的组可以包含1个ID到数万个。不允许空组。
允许使用{3} => {3}
或{5, 17} => {5, 17}
等自译费。
ID或组之间没有数学或其他可计算的关系,它们是任意定义的。
我正在寻找可以执行翻译的数据结构和/或搜索算法。 查询组进行翻译的速度至关重要,必须为O(1)或非常接近。
添加或删除索引中的翻译可以在预定的维护会话中执行,并且不必非常快,但必须足够快,以便在最多20%-30%的停机时间内执行
为了讨论起见,内存使用无关紧要。假设存储ID哈希表所需的相同存储容量可以多次使用。
已知的算法,想法,建议,证明这是不可能的,这是受欢迎的。