我们只是给 MongoDB 一个测试运行,并使用 Mongoid 设置了一个 Rails 3 应用程序。将大型数据集插入 MongoDB 的最佳实践是什么?充实一个场景:假设我有一个书本模型,想从 CSV 文件中导入数百万条记录。
我想这需要在控制台中完成,所以这可能不是一个特定于 Ruby 的问题。
编辑添加:我认为导入的数据是否包含关联或应该只进入一个模型会产生巨大的差异。欢迎对任何一种情况发表任何评论。
我们只是给 MongoDB 一个测试运行,并使用 Mongoid 设置了一个 Rails 3 应用程序。将大型数据集插入 MongoDB 的最佳实践是什么?充实一个场景:假设我有一个书本模型,想从 CSV 文件中导入数百万条记录。
我想这需要在控制台中完成,所以这可能不是一个特定于 Ruby 的问题。
编辑添加:我认为导入的数据是否包含关联或应该只进入一个模型会产生巨大的差异。欢迎对任何一种情况发表任何评论。
MongoDB 带有解析 JSON 格式数据的导入/导出工具。
假设您有一个现有的 SQL 数据库,迁移该数据的最简单方法是将 SQL 数据输出为 JSON 字符串,然后对每个集合使用导入工具。
这包括非规范化和嵌套/嵌入 - 所以不要将关系模型迁移到 MongoDB,您还应该考虑重构数据模型以利用 MongoDB 功能。
例如,一个常见的任务是将文章和标签合并到一个文章集合中,其中标签嵌入为一个数组。在您的导出脚本中执行此操作,因此 MongoDB 看到的所有内容都是通过导入传入的干净的 JSON :-)
您仍然可以将所有表作为集合导入,但这样做会错过 MongoDB 的一些真正优势。
如果您只想添加此数据集一次。您可以使用该db/seed.rb
文件。您可以阅读 CSV 并生成所有文档。
如果你想做很多次,你可以做一个跑步者或任务。
使用任务,您需要使用您的文件定义一个lib/task/file.rake
并生成任务,然后再次解析它并生成所有文档。
你也可以做一个runner
。
这与 ActiveRecord 的东西是一样的。