本文將指導您完成使用簡單的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端點通信。
遷移方式:
以下步驟定義了此示例中遵循的遷移方法。
- 使用pymongo MongoClient啟動與MongoDB服務端點的客戶端會話。
- 查詢和查看MongoDB中的數據庫列表。
- 查詢MongoDB中的每個數據庫,並創建數據庫中存在的所有集合的列表。
- 遍歷每個集合並一次複製一個文檔以進行遷移。
- 使用服務URL和標頭信息建立CouchDB REST API連接。
- 使用與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
討論:請加入知識星球或者微信圈子【首席架構師圈】
閱讀更多 首席架構師 的文章