我正在寻找满足以下需求的数据存储:-
- 分布式,因为我们有大量数据要查询(以 TB 为单位)
- 写入密集型数据存储。数据将从服务中生成,我们希望存储数据以对其进行分析。
- 我们希望分析查询相当快(几分钟而不是几小时)
- 我们的大多数查询将属于“选择、过滤、聚合、排序”类型。
- Schema 经常变化,因为我们存储的内容会根据系统不断变化的需求而变化
- 我们存储的部分数据也可能用于其他目的的纯大规模 map/reduce 作业。
键值存储是可扩展的,但不支持我们的查询要求。
Map/Reduce 作业是可扩展的并且可以执行查询,但我认为它不会满足我们的查询延迟要求。
RDBMS(如 MySQL)将满足我们的查询需求,但它会迫使我们有一个固定的模式。我们可以对其进行扩展,但随后我们必须进行共享等。
像 Vertica 这样的商业解决方案似乎可以解决我们所有的问题,但如果可以的话,我会避免使用商业解决方案。
由于底层的 HDFS,HBase 似乎是一个与 Hadoop 一样可扩展的系统,并且似乎具有执行过滤器和聚合的设施,但我不确定 HBase 中过滤器查询的性能。
目前 HBase 不支持二级索引。这让我想知道 HBase 是否是对任意列进行过滤的正确选择。根据文档,对行 ID 和列族进行过滤比仅对列限定符进行过滤要快。但是,我还读到,在 RowId 和 Column 系列上使用 Bloom Filter 索引会显着增加 Bloom 过滤器的大小,并使此选项实际上不可行。
我无法在网上找到很多关于 HBase 中过滤器查询性能的数据。希望我能在这里找到更多信息。
谢谢!