-1

我有一个申请。它将其对象图写入 Mongo。对于某些集合,我们希望规范化数据并将其镜像到关系数据库(SQL Server 或 SQLite)。

我在想最好的方法是通过集合上的 MapReduce 工作。这是正确的方法吗?这可能吗?如果这有所作为,我们将在 Windows 上运行。

更新

我正在寻找的只是关于 JavaScript 中的 MapReduce 作业是否是解决此问题的最佳方法的一般指导。假设我有一个包含两个字段的对象,FirstName并且LastName. 当我将其写入集合时,我需要关系数据库中的一行(它有两列FirstNameLastName)。

当然,我可以在写入集合时将其写入应用程序中的 SQL 表。但我认为也许更好的地方是在数据库中。如果需要,这将允许我在将数据写入关系数据库之前对其进行整形。

现在我已经详细阐述了一些问题,我可以看到其他一些我没有明确提出但相关的问题。运行 MapReduce 作业的 JavaScript 甚至可以访问 Mongo 之外的任何内容吗?是沙盒吗?并且将这样做作为 MapReduce 工作会影响写入性能(我猜不是,而是 IANAE,因此是问题)。

4

2 回答 2

2

不,MapReduce 作业不能写入 SQL 数据库。它甚至不能写入 mongo 集合(out选项中指定的集合除外)。

同样,您是否还会尝试从 mysql 触发器写入 mongodb?这个想法对我来说似乎很奇怪:)

因此,我建议您在应用程序中执行此操作。

于 2012-08-10T13:26:05.487 回答
2

为了加强前面的答案,不。

Map reduce 环境不能直接附加到其他数据库等的驱动程序,我也不确定它是否应该即使可以。至少可以说,这将导致集成毛球。

Map reduce 将始终在运行时影响系统的性能,因此请确保 MR 以与您的硬件兼容的方式运行,许多人运行大型数据集以增量方式处理对结果集合的一种增量更新。

此外,不,MySQL 不支持从触发器 ping 其他外部数据源(我上次检查过)。

这将更适合您应用程序中的 Active Record 处理程序。在您的网络中集成会更加灵活和容易。

于 2012-08-10T13:56:14.480 回答