【问题标题】:How to do simple data mining in MongoDB?如何在 MongoDB 中进行简单的数据挖掘?
【发布时间】:2013-10-28 03:10:51
【问题描述】:

我是 MongoDB 的新手——只是想学习它——不过对 Java/SQL 并不陌生。假设我有一个用 Java/MongoDB 开发的购物车应用程序。进一步假设我有一个文档 Order.java。因此,Order 保留了通常的订单属性:总金额、送货地址、信用卡号等以及行项目的集合。现在,由于订单行项目是订单文档的一部分,因此如果不检索整个订单,就无法单独访问它们。对吧?
我希望它显示的内容类似于亚马逊在您查看一本书时所做的事情:“购买这本书的人——也购买了某某书”。如何在 MongoDB/Java 应用程序中确定?在 SQL 中,将 OrderLineItem 连接到自身或类似的东西或多或少是简单的查询,但在 MongoDB 中没有连接。我是否应该将所有订单文档加载到 Java 应用程序中,然后在 Java 中对它们进行排序和匹配(基本上在内存中)。如果谈论数百万个订单,这似乎不切实际,我还能做些什么吗?

【问题讨论】:

  • “购买 X 的人也购买了 Y”查询是 Neo4j 等图形数据库的典型用例。
  • 另外,如果您具体了解如何处理该算法,则更容易找到 MongoDb 解决方案。正如@Philipp 所说,Mongodb 很有可能不适合。
  • 而且,根据您的描述,您可能过度简化了算法。想想几年前 Netflix 在一场改进推荐算法的竞赛中捐赠了 100 万美元。 netflixprize.com//rules 。目标是提高 10%。这是一场为期三年的比赛。获胜者:netflixprize.com//community/viewtopic.php?id=1537

标签: mongodb mongodb-java


【解决方案1】:

您可以只使用 Apache Mahout https://mahout.apache.org/ 。它是一个非常强大的机器学习库,适用于分布式系统和 Hadoop 和 MongoDB 等 NoSQL 数据库。它是开源的,用 Java 编写。

【讨论】:

    【解决方案2】:

    通过在订单文档中将所有行项目放在一个数组中,这种类型的查询变得容易。如果经常执行此查询,我将采用面向批处理的过程来重新格式化旨在满足此查询的数据副本。当事情变得艰难时,总会有 map Reduce。

    【讨论】:

      猜你喜欢
      • 2010-12-07
      • 2015-05-15
      • 2018-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-07
      • 2011-10-12
      • 2013-06-11
      相关资源
      最近更新 更多