「文檔資料庫選型」從MongoDB遷移到Apache CouchDB

2020-01-18   首席架構師



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



遷移環境

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


  • 源資料庫:一個三節點的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來解決。最後,腳本將生成一個遷移摘要,如下所示。


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

摘要

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

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

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

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