自行建立 Parse 伺服器系列之一:如何把資料庫遷移至MongoDB

或許你已經知道Facebook將於2017年1月28日完全關閉Parse服務。作為深受歡迎的BaaS平台,目前支援約600,000 App,官方公佈這個決定除了讓人震驚,相信也讓使用者一方面籌措新的後台服務,另一方面苦惱著如何把App的資料由Parse遷移至新平台。


在開始之前,鼓勵大家先看看我早前一篇有關 Alamofire教學的文章(暫時只提供英文版)。雖然兩者之間沒有關連性,但可以對本文將會提及的技巧加深認知和了解。

注意: 為已發佈的App進行資料遷移之前,我建議你先抄寫一個複本或者使用測試App來預演一次,為正式遷移時減低不熟悉程序而產生的風險。

Parse官方提供了有關遷移程序的詳細資訊,以及如何把App由Parse伺服器分別轉移至其他伺服器(例如 MongoDB)及雲端服務商。Parse 建議了兩個遷移程序:

  1. 把資料庫遷移至其他服務商,例如MongoLab或ObjectRocket。
  2. 把伺服器遷移至雲端寄存公司,例如AWS, Google App Engine 或是Heroku。

Parse同時把上述程序設定期限,建議在2016年4月28日或之前完成資料庫遷移,而伺服器則在2016年7月28日或之前。制定好時間表,預留充足的時間處理錯處、確保App運作正常,使你提供給使用者的服務無需中斷。

很多人會提出一個疑問,為何遷移要分成兩個步驟?作為一個BaaS(後端即服務),parse.com把 伺服器資料庫 整合為一。伺服器操縱資料庫,進行查詢、獲取信息、處理密集工作任務,並與資料庫作出互動。二者工作緊密相連而形成後端系統。當Parse即將關閉,失去整合的平台,自然需要為伺服器和資料庫分別處理。

幸運地,Parse 的其中一個深受歡迎的功能 — 儀表板 (dashboard) — 仍然會維持服務 [更新:現在你可以自行安裝Parse Dashboard]。此外,大多數受parse使用者歡迎的功能仍然會存放在 parse-server,盡量使遷移無縫地進行(雖然這樣說,但有幾個改動我們需要注意的,下文會詳細提及)。

Parse 為整個遷移過程序提供詳細指引(如下)。

68747470733a2f2f70617273652e636f6d2f696d616765732f646f63732f7365727665722f6d6967726174696f6e2e706e67

今天,我們重點放在第一句:資料庫遷移 ,讓你趕及四月期限來臨之前做好準備。至於伺服器遷移的部份,將會在接下來數週另有文章跟進。

若果你曾經讀過我上年十一月發佈的 Alamofire 文章,文中提及過使用一個名為 MongoLab 的資料庫數據服務。在這篇教程,我們將會深入探討如何利用 MongoLab 作為Parse 伺服器的資料庫。順帶一提,你可以在AWS, Google App Engine, Joyent 或 Heroku 寄存你個人自訂的 MongoDB。MongoDB 是眾多 no-SQL 資料庫中較多受歡迎且是 Parse 之根本。

在開始之前,到 MongoLab.com 先行註冊一個 MongoLab 賬戶。

Screen Shot 2016-02-26 at 12.50.55 PM

點擊註冊(Sign Up)並建立賬戶。你將會被要求使用電郵激活賬戶。

Screen Shot 2016-02-26 at 12.51.00 PM

完成電郵驗証程序,點擊 create new 按鈕。

create-new-mongo

在計劃 (Plan) 一項中選取 Single-Node,然後往下點選 Sandbox (免費)。由於這個教程中,免費 Sandbox 的容量已足以為範例App之使用,但在實際情況下,就要衡量你所需的資料庫大小而選定適合的存儲方案。

single-node

往下捲動至底部,加入資料庫名稱。我為這個範例取名 appcoda-test,當然,你可以自行選擇任何一個名字。然後按下 Create new MongoDB deployment 按鈕。

Screen Shot 2016-02-26 at 1.14.20 PM

現在在 MongoDB 儀表板中選取資料庫。

Screen Shot 2016-02-26 at 1.15.42 PM

接著新增用戶去管理資料庫。這裡使用了 admin 為用戶名稱,然後設定密碼。按下 create。

Screen Shot 2016-02-26 at 1.19.06 PM

若一切正常,你可以看到一個新用戶配置!

這個時候在版面置頂出現這句提示 “To connect using a driver via the standard MongoDB URI” (請以標準 MongoDB URI 連接驅動器)。複製並貼上 URL,並登入賬戶進行修改。舉例:

大功告成!現在我們可以前往 Parse。

若你還未打開 Parse,可以點擊這裡以檢視 Parse 儀表板。然後按下你想遷移的App,再按下 App Setting。

Screen Shot 2016-02-26 at 1.25.17 PM

往下捲動直至看到紅色 “migrate” (遷移)按鈕。按一下。

Screen Shot 2016-02-26 at 1.25.22 PM

僅記一點,遷移指令一旦啟動之後就不能撤銷。所以踏入這程序之前,請務必 100% 肯定你已經為遷移做好準備。從這裡開始,你的資料庫不再與 Parse 有任何連繫。你將要自己管理和維護資料庫。當遷移過程若發生數據掉失或問題,都不會是 Appcoda、我、還是任何一個人的責任。然而,大多數情況之下,這個過程都是無縫的。

在 Mongolab 資料庫中,以我們剛才建立的資料庫URL進行修改。

Screen Shot 2016-02-26 at 1.31.26 PM

Screen Shot 2016-02-26 at 1.31.32 PM

你將會看到一個警告字句,詢問你是否要為資料庫路徑附上 SSL,我強烈建議你這樣做以增加安全性。利用下列參數為附加路徑:

點擊 Begin the migration 啟動程序。Parse 亦會開始遷移過程。

Screen Shot 2016-02-26 at 1.37.53 PM

Screen Shot 2016-02-26 at 1.38.12 PM

Screen Shot 2016-02-26 at 1.38.20 PM

確定開始之前仔細閱讀過提示。然後按下 finalize 作為你同意進行並完成遷移資料庫。

經確認後你已經準備好資料庫遷移工作,按下 finalize。

Screen Shot 2016-02-26 at 1.41.21 PM

Screen Shot 2016-02-26 at 1.41.33 PM

太好了!現在你的資料庫已經存放在 MongoLab。回到 MongoLab 儀表板確認遷移工作是順利完成。

Screen Shot 2016-02-26 at 1.43.53 PM

回到 Parse。前往儀表板,新增一個類別去確認連結成功。這裡我把類別命名為 testClass,同樣,你可以自行使用任何名稱。

Screen Shot 2016-02-26 at 1.44.48 PM

再一次打開 MongoLab 網站,往下捲動,在 SCHEMA 行之中可以看到新增的類別。

Screen Shot 2016-02-26 at 1.45.42 PM

恭喜! 現在你已經可以透過 Parse 去讀寫 Mongo,例如 MongoLab。這個做法確實為開發者提供很大的便利。

後續文章將會為大家展示由 Parse 伺服器遷移往AWS, Google App Engine, Heroku 等平台的教學,請繼續密切留意!

譯者簡介:小秘,業餘博客,翻譯新手,最愛睡覺,喜歡旅遊。

原文How To Migrate from Parse to Self-hosted MongoDB


軟體工程師及Gradology公司的資訊科技總監。在繁忙的工作以外,他享受於寫作、攝影和分享所見所聞。Gregg熱衷程式開發,曾在app store發佈數個apps,客戶包括美國康奈爾大學、各式地方企業和初創公司。可以在推特或LinkedIn聯絡Gregg。

blog comments powered by Disqus
訂閲電子報

訂閲電子報

AppCoda致力於發佈優質iOS程式教學,你不必每天上站,輸入你的電子郵件地址訂閱網站的最新教學文章。每當有新文章發佈,我們會使用電子郵件通知你。

已收你的指示。請你檢查你的電郵,我們已寄出一封認證信,點擊信中鏈結才算完成訂閱。

Shares
Share This