【发布时间】:2015-11-09 09:47:50
【问题描述】:
假设我有 100 列的数据,并且我想支持(聚合)对这 100 列中的 70 列的查询,我可以在这里使用的最佳数据结构是什么:
示例: 5 列(studentGender、studentClass、studentGrade、studentAttendanceGrade、studentCoin)
现在我想支持 3 个类型的聚合查询:
- studentGrade 的 studentCoins 总和
- studentClass 的 studentCoins 总和
- studentGender 的 studentCoins 总和
请不要提供 SQL 解决方案,我说的是具有数据结构的 C 程序,输入(大小为 5 的向量)是实时到来的,除非存在一些有效的解决方案,否则我可能不会存储原始粒度数据。
一种解决方案是为每种查询类型维护 3 个哈希表。 但是这个解决方案很难扩展,因为将来如果我们支持 100 列和 70 个查询,那么在这种情况下,我们需要为每种查询类型维护 70 个哈希表
【问题讨论】:
-
您能正确描述您的哈希表解决方案吗?
-
如果更新以查询为主,请保持频繁查询的结果为最新。 如果属性值不太可能真的很少,迭代数组可能就足够了(考虑以易于掩盖的方式将许多属性编码为“机器词”( 位域)).
-
如果您在“谈论 C 程序”,为什么要标记这个 C++?有人可能会费心使用
<algorithm>写一个答案,然后您就无法使用... -
是所有数据的总和还是任何子集?
标签: c++ c algorithm data-structures hashtable