将大型数据集导入MongoDB的最佳做法是什么?

时间:2010-05-25 17:13:40

标签: ruby-on-rails ruby mongodb mongoid

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

我想这需要在控制台中完成,所以这可能不是特定于Ruby的问题。

编辑添加:我认为导入的数据是包含关联还是应该只进入一个模型会产生巨大的差异。对这两种情况的任何评论都欢迎。

2 个答案:

答案 0 :(得分:2)

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

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

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

例如,常见的任务是将文章和标签合并到文章集合中,并将标记作为数组嵌入。在导出脚本中执行此操作,因此所有MongoDB都会看到通过导入进入的干净JSON: - )

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

答案 1 :(得分:1)

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

如果你想做很多次,你可以成为跑步者或任务。

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

你也可以runner

与ActiveRecord的内容相同。