【发布时间】:2011-05-31 21:52:41
【问题描述】:
我有一个关系数据库,其中包含大约 3 亿客户及其从多个角度 (360) 的属性。 为了执行一些分析,我打算对 MongoDB 进行提取,以便获得更适合应用数据挖掘技术的“平面”表示。 这有意义吗?为什么?
谢谢!
【问题讨论】:
标签: mongodb analytics data-mining
我有一个关系数据库,其中包含大约 3 亿客户及其从多个角度 (360) 的属性。 为了执行一些分析,我打算对 MongoDB 进行提取,以便获得更适合应用数据挖掘技术的“平面”表示。 这有意义吗?为什么?
谢谢!
【问题讨论】:
标签: mongodb analytics data-mining
没有。
这里关注的不是存储,而是您的扁平化策略。
如何以及在何处存储扁平化数据是次要问题,注意 MongoDB 是一个文档数据库,无论如何都不是扁平化的。
一旦您的数据具有适合您的分析的形状,那么,看看存储策略,MongoDB 可能是合适的,或者您可能会发现允许简单 Map Reduce 类型功能的东西更适合分析... (以 HBase 为例)
【讨论】:
它可能有意义。您可以做的一件事是在水平横向扩展设置中设置 MongoDB。然后使用正确的数据结构,您可以跨分片并行运行查询(它可以自动为您完成):
http://www.mongodb.org/display/DOCS/Sharding
这可以使实时分析成为可能,否则就不可能。
如果您选择正确的数据模型,则可以通过避免任何类型的连接来加快查询速度(在水平范围内同样适用)。
最后,您还可以在数据上使用 map/reduce 做很多事情。
http://www.mongodb.org/display/DOCS/MapReduce
需要注意的一点是,没有什么能像 MongoDB AFAIK 的 SQL 报告服务一样。
【讨论】:
我发现 MongoDB 的 mapreduce 很慢(但是他们正在努力改进它,请参见此处:http://www.dbms2.com/2011/04/04/the-mongodb-story/)。
也许您可以使用 Infobright 的社区版进行分析?见这里:http://www.infobright.com/Community/
像 Postgresql 这样的关系数据库也可以进行分析(afaik MySQL 不能进行哈希连接,但其他关系数据库可以)。
【讨论】: