如何將 2000 萬條記錄插入 NoSQL 數據庫

已發表: 2022-11-24

有多種方法可以將 2000 萬條記錄插入 NoSQL 數據庫。 一種方法是使用數據庫的批量加載功能。 這將要求數據採用數據庫可以理解的特定格式,這將是加載數據的最有效方式。 另一種方法是使用腳本或應用程序一次一條記錄地插入數據。 這將是一個較慢的過程,但不需要數據採用特定格式。

Mongodb 可以處理數百萬條記錄嗎?

圖片來源:freecodecamp.org

要實時處理數百萬條記錄,您應該使用 MongoDB 和 ElasticSearch。 在大型數據集中使用這些結構和概念也將是有利的。

通過優化大量 MongoDB 插入,我們可以將 5000 萬條記錄的加載速度提高 33%! Github 設置頁面是您可以找到所有這些程序的代碼的地方。 我以 25-35 Mbps 的上行鏈路速度和 25-35 Mbps 的連接速度測試了我的 Macbook Pro。 在此實驗中,結果可能與在產品就緒 EC2 上獲得的結果不同。 Kaggle數據測試平台是測試數據的絕佳選擇,因為它已經準備好了數據集。 yelp_academic_dataset_review.json 是一個 5 GB 的文件,包含 690 萬條記錄。 節點讀取文件後,Mongo 寫入 100 萬條記錄用時 2.5 小時。

建議使用此工俱生成不超過 200 萬個數據點。 一個Node.js 緩衝區實體不能包含超過 2GB 的文件。 在這裡使用 Streams 是完全合理的。 我們可以在這個例子中插入 100k 順序數據,稍有延遲。 插入插入物需要 29 分鐘。 因為在所有流上都使用了 EventEmitter,所以是這樣的。 此 CPU 使用率已增加到 40%,比按順序插入 100k 多 10%。

IOPS 幾乎翻了一番,從 50 增加到 100,連接數從 40 增加到 60。它應該遍歷每個文件夾,讀取文件,並在那裡保存 reviews 數組長度的計數器。 如果以後這種方式效果好,可以應用到後面的插入; 花點時間看看它是如何工作的。 在本節中,我們查看了讀取 51936 個文件夾並插入 6300 萬條記錄需要多長時間。 我們必須知道為了達到下一個百萬記錄讀取了多少文件夾,因為數據插入可以在以後並行化。 該系統大約需要一個半小時​​來插入 6300 萬條記錄。 我們之前曾預測它會比這快 33%!

我們在一個半小時​​內加載了近 45GB 的數據。 整個期間的 IOPS 為 125,大部分時間連接數保持在 100 左右。 現在結果出來了,我想我可以開始為未來做計劃了。 InsertMany 允許您在不到一分鐘的時間內插入 100 萬條記錄。 對於 1 到 10 米之間的加載,很可能需要 Stream API 來並行化插入。 由於集群 CPU 和 IOPS 非常重,應用程序性能會受到很大影響。 運行調度腳本以確定可以同時執行多少個操作/進程。

MongoDB 除了是大文件的絕佳選擇外,還具有許多優於其他文件存儲系統的優勢。 首先,大文件可以很容易地存儲在數據庫中。 此外,數據庫具有處理大量對象的能力。 最後,數據庫可水平擴展,使其能夠處理更大量的數據而不會變得不堪重負。 如果你想在數據庫中存儲海量文件,MongoDB 是一個很好的選擇。 與其他存儲和可擴展性選項相比,使用它有很多優勢。

Mongodb 文檔的最大大小是多少?

圖片來源:brain-mentors.com

MongoDB 文檔的最大大小為 16 兆字節。

如何在 Mongodb 中插入數百萬條記錄

假設您有一個正在運行的 MongoDB 服務器並創建了一個數據庫和集合,您可以使用 insert() 方法插入記錄。 此方法可以採用文檔數組或單個文檔。
要插入單個文檔,請使用以下語法:
數據庫.collection.insert(
{
姓名:“約翰·多伊”
}
)
要插入多個文檔,請使用以下語法:
數據庫.collection.insert([
{
姓名:“約翰·多伊”
},
{
名稱:“Jane Doe”
}
])

你有幾個選擇。 可以為每個設備 ID 創建一個單獨的集合,然後分別查詢該 ID。 如果您有很多設備,這可能會很昂貴。 如果要搜索集合中的所有文檔,您可以對所有設備的同一個集合執行相同的操作。 如果您擁有大量設備,這項服務的費用可能會高得令人望而卻步。 第三個選項是創建一個分片集合。 負載將分佈在 Mongo 上,從而加快查詢處理速度。 如果要使用分片集合選項創建集合,請確保將分片選項設置為 true。

Mongodb:Nosql 數據庫管理系統

MongoDB 是一種 NoSQL 數據庫管理系統,用於處理文檔。 它可以處理範圍廣泛的數據文件,每個文檔的默認限制為 100,000 個索引鍵。 因此,MongoDB 平台能夠存儲大量數據而不會變得負擔過重。 批量插入是 MongoDB 中的一項便利功能。 如果您要添加大量數據,它會很有用,因為它可以一次插入多個文檔。

Mongodb 批量插入限制

MongoDB 3.6 版本目前產量為 100,000。

批量插入方法允許將多個文檔一次插入到 MongoDB 中。 作為參數,insert 方法生成一個文檔數組。 用戶不需要在他們的查詢中包含所有字段。 在這個例子中,讓我們使用命令行使用 MongoDB 批量插入來插入多個文檔。 批量插入數字是使用 Bulk.insert() 方法完成的。 這個方法是2.6版本之後引入的,類似於unordered bulk insert。 我們首先創建一個名稱為 carbulk1 的有序汽車列表,然後通過對它們執行 execute 方法來插入文檔。 此 Java 程序首次演示瞭如何使用 shell 命令運行各種批量操作

Mongodb 有限制嗎?

MongoDB 支持 100 層的嵌套深度,因此文檔的大小可以達到 16MB。 MongoDB 數據庫最多只能包含 20GB 的數據。