2010-05-25 110 views
4

我们只是给MongoDB一个测试运行,并且用Mongoid设置了一个Rails 3应用程序。将大数据集插入MongoDB的最佳做法是什么?充实一个场景:说,我有一个书籍模型,并希望从CSV文件导入数百万条记录。将大数据集导入MongoDB的最佳做法是什么?

我想这需要在控制台中完成,因此这可能不是Ru​​by特定的问题。

编辑添加:我认为导入的数据是否包含关联或仅应该放入一个模型会产生巨大差异。任何情况下的任何意见都欢迎。

回答

2

MongoDB附带导入/导出工具,用于解析JSON格式的数据。

假设您在SQL中具有现有数据库,迁移该数据的最简单方法是将您的SQL数据输出为JSON字符串,然后对每个集合使用导入工具。

这包括非规范化和嵌套/嵌入 - 因此不要将关系模型迁移到MongoDB,您应该考虑重构您的数据模型以利用MongoDB功能。

例如,一个常见任务是将文章和标签合并到文章集合中,并将标签嵌入为数组。在导出脚本中这样做,所以所有的MongoDB都能看到干净的JSON通过导入:-)

您仍然可以将所有表导入为集合,但是您错过了一些真正的优点MongoDB这样做。

+0

刚开始的时候,我仍然围绕着MongoDB。在不久的将来可能会有更具体的问题:-)谢谢。 – 2010-05-26 08:34:42

1

如果您只想添加此数据集一次。您可以使用db/seed.rb文件。您可以阅读您的CSV并生成所有文档。

如果你想多次,你可以做一个亚军或任务。

有了任务,您需要定义一个lib/task/file.rake并使用您的文件生成任务,然后再解析它并生成所有文档。

你也可以做一个runner

这与ActiveRecord的东西是一回事。

相关问题