我们有一个简单的表,如下所示:
------------------------------------------------------------------------
| Name | Attribute1 | Attribute2 | Attribute3 | ... | Attribute200 |
------------------------------------------------------------------------
| Name1 | Value1 | Value2 | null | ... | Value3 |
| Name2 | null | Value4 | null | ... | Value5 |
| Name3 | Value6 | null | Value7 | ... | null |
| ... |
------------------------------------------------------------------------
但是可能有数以亿计的行/名。数据将每小时左右填充一次。
目标是在几秒钟内获得对数据的交互式查询的结果。
大多数查询看起来像:
select count(*) from table
where Attribute1 = Value1 and Attribute3 = Value3 and Attribute113 = Value113;
where子句包含任意数量的属性名-值对。
我是大数据方面的新手,想知道在数据存储(MySQL, HBase, Cassandra等)和处理引擎(Hadoop, Drill, Storm等)方面最好的选择是什么。
像Vertica(闭源)或MonetDB(开源-但我没有使用过)这样的列式数据库将有效地处理您提到的查询。在50000英尺视图中,这样做的原因是它们单独存储每一列,因此当它们需要查询数据时不会读取任何不需要的列—对于您的示例,将读取3个属性,而其他197个属性不会是
Playorm for Cassandra提供了不错的SQL支持,包括join。更多信息请访问http://buffalosw.com/wiki/SJQL-Support/,示例参见http://buffalosw.com/wiki/Command-Line-Tool/