「文檔數據庫選型」從MongoDB遷移到Apache CouchDB


「文檔數據庫選型」從MongoDB遷移到Apache CouchDB


本文將指導您完成使用簡單的python腳本將數據從MongoDB遷移到Apache CouchDB的步驟。由於多種原因,包括源數據庫和目標數據庫之間的基本架構和設計差異,將數據從一個數據庫遷移到另一個數據庫可能會遇到挑戰。MongoDB和CouchDB都是文檔數據庫,它們存儲一組類似JSON的獨立文檔。 本文假定您對這兩個數據庫有基本的瞭解,並且熟悉如何在這兩個數據庫中存儲數據。 下表提供了兩個數據庫之間的高級比較。 要獲得更深入的瞭解,您可以訪問官方文檔,網址為docs.mongodb.com和couchdb.apache.org。


「文檔數據庫選型」從MongoDB遷移到Apache CouchDB


遷移環境

本文支持所有環境,無論您的數據庫託管在容器,VM還是裸機系統中。下圖顯示了此遷移示例中涉及的組件。


「文檔數據庫選型」從MongoDB遷移到Apache CouchDB

  • 源數據庫:一個三節點的MongoDB版本3.4.1集群。它具有多個數據庫,集合和文檔,需要遷移。數據庫和相關文件存儲在網絡文件系統(NFS)共享上。
  • 目標數據庫:三個節點的CouchDB 2.2版集群。它僅具有在新的CouchDB安裝期間創建的默認數據庫。新數據庫將在遷移過程中即時創建。本文假定您已經在環境中完成了CouchDB的安裝。
  • 遷移系統:這是一個運行最新的Ubuntu OS,pymongo版本3.4.0,python 3.x,python請求(HTTP庫)二進制文件的系統。這用作執行python遷移腳本的遷移系統。該系統能夠與MongoDB和CouchDB端點通信。

遷移方式:

以下步驟定義了此示例中遵循的遷移方法。

  1. 使用pymongo MongoClient啟動與MongoDB服務端點的客戶端會話。
  2. 查詢和查看MongoDB中的數據庫列表。
  3. 查詢MongoDB中的每個數據庫,並創建數據庫中存在的所有集合的列表。
  4. 遍歷每個集合並一次複製一個文檔以進行遷移。
  5. 使用服務URL和標頭信息建立CouchDB REST API連接。
  6. 使用與MongoDB中相同的數據庫名稱連接到CouchDB數據庫。如果您是第一次連接數據庫,則在CouchDB中將不可用。因此,該腳本將創建一個新的數據庫,然後插入在步驟4中複製的第一個文檔。該腳本將繼續所有集合和數據庫的文檔遷移。

本文介紹的遷移方法適用於較小的數據庫

遷移之前

在開始遷移之前,您需要了解這兩個數據庫之間的關鍵區別。 MongoDB將文檔存儲在集合中,而CouchDB將文檔直接存儲在數據庫中(請參閱本文開頭顯示的比較表中的“對象存儲”)。記住上述差異,此示例在遷移過程中在CouchDB中創建新數據庫時將集合名稱附加到數據庫名稱中。參見下面的示例,

MongoDB: Database = SalesDB, Collection = Atlanta Database = SalesDB, Collection = Ohio CouchDB: Database = SalesDB-Atlanta Database = SalesDB-Ohio

在CouchDB數據庫中追加集合名稱僅出於理智的目的,而不是遷移所必需的。您可以選擇使用與MongoDB中相同的數據庫名稱來創建CouchDB數據庫,只要這些名稱是唯一的即可。

不支持:此遷移示例不支持包含帶有附件的文檔的數據庫。

讓我們遷移

您應該在要運行遷移腳本的遷移系統上安裝以下依賴項。

pymongo version 3.4.0python 3.x

接下來,將下面列出的python腳本(mongo2couch.py​​)複製到遷移系統,並使用以下命令運行遷移腳本。確保根據您的環境用適當的值替換MongoDB和CouchDB端點。

$ python mongo2couch.py -c 'http://admin:password@testcouchdb:5984' -m 'mongodb://localhost:27017'

檔案:mongo2couch.py

https://gist.github.com/Kailashcj/d91ed66e2885db968fecf5de2c9b056d

運行腳本後,它將測試與CouchDB和MongoDB端點的連接。建立成功的連接後,它將讀取MongoDB中存在的所有數據庫。接下來,它將遍歷除“ admin”和“ local”數據庫之外的每個數據庫中的集合,因為它們是MongoDB的特殊內部數據庫。該腳本將讀取每個集合中存在的文檔,並將其複製到CouchDB數據庫。首次插入文檔時,它將在CouchDB中創建適當的數據庫。該腳本將報告執行期間的所有錯誤。默認情況下,所有報告“不可JSON可序列化”錯誤的文檔都會被跳過。如果您的環境中有這些錯誤,可以參考README.md來解決。最後,腳本將生成一個遷移摘要,如下所示。


「文檔數據庫選型」從MongoDB遷移到Apache CouchDB

您可以登錄到CouchDB Web管理儀表板,以驗證新數據庫的創建以及這些數據庫中已遷移的文檔。

摘要

我希望這篇文章易於理解,並能幫助您成功地將文檔遷移到CouchDB數據庫。祝好運。

原文:https://medium.com/faun/migrating-from-mongodb-to-apache-couchdb-25eef48516e0

本文:http://jiagoushi.pro/node/909

討論:請加入知識星球或者微信圈子【首席架構師圈】


分享到:


相關文章: