我們只是給MongoDB一個測試運行,並且用Mongoid設置了一個Rails 3應用程序。將大數據集插入MongoDB的最佳做法是什麼?充實一個場景:說,我有一個書籍模型,並希望從CSV文件導入數百萬條記錄。將大數據集導入MongoDB的最佳做法是什麼?
我想這需要在控制檯中完成,因此這可能不是Ruby特定的問題。
編輯添加:我認爲導入的數據是否包含關聯或僅應該放入一個模型會產生巨大差異。任何情況下的任何意見都歡迎。
我們只是給MongoDB一個測試運行,並且用Mongoid設置了一個Rails 3應用程序。將大數據集插入MongoDB的最佳做法是什麼?充實一個場景:說,我有一個書籍模型,並希望從CSV文件導入數百萬條記錄。將大數據集導入MongoDB的最佳做法是什麼?
我想這需要在控制檯中完成,因此這可能不是Ruby特定的問題。
編輯添加:我認爲導入的數據是否包含關聯或僅應該放入一個模型會產生巨大差異。任何情況下的任何意見都歡迎。
MongoDB附帶導入/導出工具,用於解析JSON格式的數據。
假設您在SQL中具有現有數據庫,遷移該數據的最簡單方法是將您的SQL數據輸出爲JSON字符串,然後對每個集合使用導入工具。
這包括非規範化和嵌套/嵌入 - 因此不要將關係模型遷移到MongoDB,您應該考慮重構您的數據模型以利用MongoDB功能。
例如,一個常見任務是將文章和標籤合併到文章集合中,並將標籤嵌入爲數組。在導出腳本中這樣做,所以所有的MongoDB都能看到乾淨的JSON通過導入:-)
您仍然可以將所有表導入爲集合,但是您錯過了一些真正的優點MongoDB這樣做。
如果您只想添加此數據集一次。您可以使用db/seed.rb
文件。您可以閱讀您的CSV並生成所有文檔。
如果你想多次,你可以做一個亞軍或任務。
有了任務,您需要定義一個lib/task/file.rake
並使用您的文件生成任務,然後再解析它並生成所有文檔。
你也可以做一個runner
。
這與ActiveRecord的東西是一回事。
剛開始的時候,我仍然圍繞着MongoDB。在不久的將來可能會有更具體的問題:-)謝謝。 – 2010-05-26 08:34:42