這些文件,我將得到每個至少有一百萬行,最大15億。數據是歸一化當我得到它。我需要一種方法將其存儲在一個文件中。在大多數情況下,我不是100%如何將數據傳遞給我。它可能是csv,固定寬度文本文件或tsv或其他。mongodb插入來自其他集合的嵌入式文檔使用地圖的大規模收藏減少
目前,我有一些收藏品,我從一些樣本CSV的進口。
波紋管是我的一小部分數據丟失的代表領域
我beneficaries.csv數據 重複beneficaries.csv超過600萬條記錄
record # 1
{"userid":"a9dk4kJkj",
"gender":"male",
"dob":20080514,
"start_date":20000101,
"end_date":20080227}
record # 2
{"userid":"a9dk4kJkj",
"gender":"male",
"dob":20080514,
"start_date":20080201,
"end_date":00000000}
same user different start and end dates
claims.csv
超過200萬條記錄
{"userid":"a9dk4kJkj",
"date":20080514,
"code":"d4rd3",
"blah":"data"}
lab.csv超過10萬條記錄
{"userid":"a9dk4kJkj",
"date":20080514,
"lab":"mri",
"blah":"data"}
從我有限的知識,我有三個選項
對文件進行排序,從數據文件中讀取我們的C++成員對象x量,停在y,將成員插入到mongodb中,繼續前進到y開始,直到完成x成員。這是測試和工作但排序如此巨大的文件將殺死我們的機器幾個小時。
將數據加載到sql中,逐個讀入到C++成員對象中,批量加載mongo中的數據。經過測試和工作,但我想避免這一點。
負載在單獨的收藏蒙戈的文件並執行地圖還原出參數wrtie收藏。我已經加載了文檔(如上所示),併爲每個文件提供了自己的集合。不幸的是,我對mongo和截止日期是新手。地圖縮減的概念對我來說很難包圍和實施。我已閱讀文檔和使用的堆棧溢出MongoDB: Combine data from multiple collections into one..how?
輸出成員集合應該是這樣的這個答案嘗試。
{"userid":"aaa4444",
"gender":"female",
"dob":19901225,
"beneficiaries":[{"start_date":20000101,
"end_date":20080227},
{"start_date":20008101,
"end_date":00000000}],
"claims":[{"date":20080514,
"code":"d4rd3",
"blah":"data"},
{"date":20080514,
"code":"d4rd3",
"blah":"data"}],
"labs":[{"date":20080514,
"lab":"mri",
"blah":"data"}]}
將負載數據的性能加載到sql,在C++中讀入並插入到mongodb中是否擊敗映射?如果是的話,我會用這種方法
我不能使用地圖縮減插入索賠和實驗室?不會跑得更快 – user1290942 2014-12-05 23:14:53
也我會找到一個不會做它有多個索賠和多個實驗室 – user1290942 2014-12-06 00:08:10
在mapreduce後,你將有一個索賠/實驗室列表每個用戶ID所以findOne很好 – anhlc 2014-12-06 01:11:34