簡體   English   中英

在MongoDB中批量插入GridFS

[英]Bulk insert to GridFS in MongoDB

可能嗎? 如果是這樣,那又如何?

目前,我正在將大於16MB的字符串一一插入到GridFS中,但是當不處理1個字符串而是處理數千個字符串時,速度非常慢。 我試圖檢查文檔,但沒有找到關於批量插入GridFS存儲的一行,而不僅僅是簡單的收集。

我正在使用PyMongo與MongoDB進行通信。

如果您將它們作為文件,例如

for $LETTER in {a..z}
do
  ( find /path/to/basedir -iname "$LETTER*" -exec mongofiles -d yourGrid '{}' \; &)
done

應該給您26個線程將數據推入MonoDB。

完成后,根據需要重命名yourGrid.fs集合。

為了確保沒有任何損壞,您應該在屏幕實用程序中運行此命令或將其從終端中分離出來。

我閱讀並研究了所有答案,但是很遺憾,它們沒有滿足我的要求。 在GridFS中用於指定json的_id所需的數據實際上存儲在JSON本身內部。 這聽起來像是最糟糕的主意,包括冗余等,但不幸的是它的要求。 我所做的是我寫了用於多處理插入GridFS的插入線程,並用幾個線程插入了所有數據(2個GridFS線程足以獲得適當的性能)。

16MB的文檔大小限制也是對數據庫批量插入的限制(請參閱驅動程序規范中的請求大小限制 )。 用於文檔的批量插入方法通常只是將事物分批(基本上是大型文檔數組)並將其發送到數據庫。 您可以通過創建大量文檔並自己在shell中插入來手動嘗試,但是上限仍然存在。

使用GridFS時,用於拆分要存儲的文件的塊大小為255 / 256k(因為此2.4.10更改和相關的驅動程序更改,默認為255k),因此理論上您可以在單個消息中容納約64個塊到服務器,但是確定如何從故障中恢復可能很棘手。 您還可以配置該塊的大小,這可能是一個更好的選擇,請參見chunkSize上的pymongo參考 ,但同樣,您需要保持在16MB的限制內。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM