5

我需要存储大量的小数据对象(每月数百万行)。一旦他们被保存,他们就不会改变。我需要 :

  • 安全地存放它们
  • 使用它们进行分析(主要是面向时间的)
  • 偶尔检索一些原始数据
  • 如果它可以与 JasperReports 或 BIRT 一起使用就好了

我的第一个镜头是 Infobright Community - 只是 MySQL 的一个面向列的只读存储机制

另一方面,人们说 NoSQL 方法可能会更好。Hadoop+Hive 看起来很有希望,但文档看起来很差,版本号小于 1.0 。

我听说过 Hypertable、Pentaho、MongoDB ......

你有什么建议 ?

(是的,我在这里找到了一些主题,但那是一两年前的事了)

编辑:其他解决方案:MonetDB、InfiniDB、LucidDB - 你怎么看?

4

3 回答 3

3

我在这里遇到同样的问题并进行了研究;BI 的两种存储类型:

  • 面向列。免费且知名:monetDB、LucidDb、Infobright。无限数据库
  • 分布式:hTable、Cassandra(理论上也是面向列的)
  • 面向文档 / MongoDb、CouchDB

答案取决于你真正需要什么:

http://www.mysqlperformanceblog.com/2010/01/07/star-schema-bechmark-infobright-infinidb-and-luciddb/

  • 如果行是实时添加的。那么面向列的数据库很糟糕。您可以选择两个有两个单独的数据库(这是我的选择:一个 noSQL 用于由前端实际提供统计数据,以及实时统计数据。另一个面向 BI 的 DB 列)。或者转向混合面向列(用于输出请求)和分布(用于写入)/如 Cassandra 的东西。

面向文档的 DB 不适合 BI,它们更适用于需要频繁访问特定行的 CRM/CMS 问题

至于一个类别中的确切选择,我还没有决定。分布式的 Cassandra 和用于 CODB 的 Monet 或 InfiniDB 是领导者。据报道,莫奈在加载非常大的表时遇到问题,因为它在内存中运行索引。

于 2011-05-06T10:33:10.233 回答
2

您也可以考虑使用 GridSQL。即使对于单个服务器,您也可以创建多个逻辑“节点”以在处理查询时利用多个核心。

GridSQL 使用 PostgreSQL,因此您还可以利用将表分区为子表来更快地评估查询。您提到数据是面向时间的,因此这将是创建子表的良好候选者。

于 2010-03-17T22:52:33.463 回答
0

如果您正在寻找与报告工具的兼容性,那么基于 MySQL 的工具可能是您的最佳选择。至于什么对你有用,Infobright 可能有用。还有其他几种解决方案,但是您可能还想查看普通的 MySQL 和存档表。每条记录都经过压缩和存储,IIRC 专为您的工作负载类型而设计,但我认为 Infobright 应该得到更好的压缩。我也没有真正使用过,所以我不确定哪个最适合你。

至于键值存储(例如 NoSQL),是的,它们也可以工作,并且有很多替代方案。我知道 CouchDB 有“视图”,但我没有机会使用任何视图,所以我不知道它们中的任何一个效果如何。

我对您的数据集唯一关心的是,由于您提到了时间,您可能希望确保您使用的任何解决方案都允许您将数据存档超过特定时间。仅将 N 个月的数据保持在线并归档其余数据是一种常见的数据仓库实践。这就是在 RDBMS 中实现的分区非常有用的地方。

于 2010-03-12T13:58:25.977 回答