我需要存储大量的小数据对象(每月数百万行)。一旦他们得救,他们就不会改变。我需要:
我的第一个镜头是Infobright Community - 只是一个面向列的,只读的MySQL存储机制
另一方面,人们说NoSQL方法可能会更好。 Hadoop + Hive看起来很有问题,但文档看起来很差,版本号小于1.0。
我听说过Hypertable,Pentaho,MongoDB ......
你有什么建议吗?
(是的,我在这里找到了一些主题,但它是一两年前)
编辑: 其他解决方案:MonetDB,InfiniDB,LucidDB - 你怎么看?
答案 0 :(得分:3)
我在这里遇到同样的问题并进行了研究; BI的两种存储类型:
答案取决于你真正需要的是:
http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/
面向文档的数据库不适用于BI,它们对于需要频繁访问特定行的CRM / CMS问题更有用
至于某个类别中的确切选择,我仍然尚未决定。分布式的Cassandra和用于CODB的Monet或InfiniDB是领导者。据报道,Monet在加载非常大的表时遇到问题,因为它在内存中运行索引。
答案 1 :(得分:2)
你也可以考虑使用GridSQL。即使对于单个服务器,您也可以创建多个逻辑“节点”以在处理查询时使用多个核心。
GridSQL使用PostgreSQL,因此您还可以利用将表分区为子表来更快地评估查询。您提到数据是面向时间的,因此这对于创建子表是一个很好的选择。
答案 2 :(得分:0)
如果您正在寻找与报告工具的兼容性,基于MySQL的东西可能是您的最佳选择。至于什么对你有用,Infobright可能会工作。还有其他一些解决方案,但您可能还需要查看普通的MySQL和Archive表。每条记录都经过压缩和存储,而IIRC则是针对您的工作负载而设计的,但我认为Infobright应该能够获得更好的压缩效果。我还没有真正使用过,所以我不确定哪种方法最适合你。
对于键值存储(例如NoSQL),是的,它们也可以正常工作,并且有很多替代品。我知道CouchDB有“观点”,但我没有机会使用任何,所以我不知道它们有多好用。
我对您的数据集的唯一顾虑是,由于您提到了时间,您可能希望确保您使用的任何解决方案都允许您将数据存档超过一定时间。这是一种常见的数据仓库实践,只能将N个月的数据保持在线并将其余数据归档。这就是在RDBMS中实现的分区非常有用的地方。