对于每个帐户,我有数百万个数据项(分析日志中的行),每个数据项都有 20-50 个数字属性(它们也可以为空)。我需要向他们展示统计数据,其中主要涉及诸如SELECT SUM(f1), f2, f3 WHERE f4>f5 GROUP BY f2, f3. 聚合函数有时比 SUM() 更复杂,而 GROUP BY 有时涉及 ROUND() 等简单函数。问题在于,此类查询是在用户界面中内置的,并且可以在这些属性的任意组合上运行(尽管当然有一些流行的组合)。
一旦进入数据库,数据很可能不会被修改,而只会被读取。应该可以轻松地添加/删除属性 \xe2\x80\x93 ,在数据库术语中不一定是实时的,但它不应该像 MySQL 那样需要完整的表块。
\n\n哪些 SQL 或 NoSQL 数据库最适合处理此类查询?我正在考虑 PostgreSQL 或 MongoDB,尽管在后者中,由于其局限性,我很可能不得不使用 MapReduce 而不是其 Group 功能。
\n\n关于此类查询的性能还有其他建议吗?这听起来是否可行,或者我绝对必须要求用户预先定义他们想要运行的确切查询?
\n\n任何想法将不胜感激。
\n