本文將指導您完成使用簡單的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
討論:請加入知識星球或者微信圈子【首席架構師圈】
文章來源: https://twgreatdaily.com/zh-cn/G0cytm8BbDmBVZuPmODe.html