【问题标题】:Efficient Data Structure to aggregate data along multiple columns高效的数据结构,可沿多列聚合数据
【发布时间】:2015-11-09 09:47:50
【问题描述】:

假设我有 100 列的数据,并且我想支持(聚合)对这 100 列中的 70 列的查询,我可以在这里使用的最佳数据结构是什么:

示例: 5 列(studentGender、studentClass、studentGrade、studentAttendanceGrade、studentCoin)

现在我想支持 3 个类型的聚合查询:

  1. studentGrade 的 studentCoins 总和
  2. studentClass 的 studentCoins 总和
  3. studentGender 的 studentCoins 总和

请不要提供 SQL 解决方案,我说的是具有数据结构的 C 程序,输入(大小为 5 的向量)是实时到来的,除非存在一些有效的解决方案,否则我可能不会存储原始粒度数据。

一种解决方案是为每种查询类型维护 3 个哈希表。 但是这个解决方案很难扩展,因为将来如果我们支持 100 列和 70 个查询,那么在这种情况下,我们需要为每种查询类型维护 70 个哈希表

【问题讨论】:

  • 您能正确描述您的哈希表解决方案吗?
  • 如果更新以查询为主,请保持频繁查询的结果为最新。 如果属性值不太可能真的很少,迭代数组可能就足够了(考虑以易于掩盖的方式将许多属性编码为“机器词”( 位域)).
  • 如果您在“谈论 C 程序”,为什么要标记这个 C++?有人可能会费心使用<algorithm> 写一个答案,然后您就无法使用...
  • 是所有数据的总和还是任何子集?

标签: c++ c algorithm data-structures hashtable


【解决方案1】:

我发现您的问题非常广泛,并且可能适合近距离投票,但是,提出一些想法:

我的主要问题是,“我们在谈论多少行?”如果数据以高速率实时进入,并且只有偶尔的查询,则将数据的接收(例如平面文件)和数据的处理(读取平面文件)分开。

如果查询都是预先确定的,另一种解决方案是在输入时即时处理数据。

如果查询更具动态性,可以选择散列表和平衡树。

【讨论】:

    猜你喜欢
    • 2011-08-12
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-04
    • 2011-07-01
    • 2013-01-06
    • 1970-01-01
    相关资源
    最近更新 更多