高效的数据结构,用于沿多列聚合数据

时间:2015-11-09 09:47:50

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

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

实施例: 5栏(studentGender,studentClass,studentGrade,studentAttendanceGrade,studentCoin)

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

  1. studentGrade的学生钱币总和
  2. studentClass的学生钱币总和
  3. studentGender学生钱币的总和
  4. 请不要提供SQL解决方案,我说的是带有数据结构和输入(大小为5的向量)的C程序实时出现,除非存在一些有效的解决方案,否则我可能无法存储原始粒度数据。

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

1 个答案:

答案 0 :(得分:0)

我发现你的问题非常广泛,但可能适合亲密投票,但是,提出一些想法:

对我来说,主要的问题是,"我们谈论了多少行?"如果数据实时高速进入,只有偶尔的查询,则将数据的接收(例如平面文件)和处理这些数据(读取平面文件)分开。

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

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