淺談利用 Google Firebase 和 Amazon Web Service 上的服務來儲存永久性資料

法蘭克的 iOS 世界
7 min readJul 25, 2017

--

當在製作 APP 時都會有儲存永久性資料的需求,對於大企業來說,解决方案不外乎就是自己養人撰寫後台,而對於資本額比較小的中小企業來說,解決方案就會考慮使用第三方廠商的雲端服務,因為除了可省去購買昂貴主機的費用還可大大節省人力成本,如果是個人的話就不用說啦,第三方的雲端服務絕對是我們的首選。

而說到雲端服務,大家會想到的不外乎就是 Google 和 Amazon,是的沒錯!法蘭克今天就是要來跟大家分享我使用 Google Firebase 和 Amazon Web Service(AWS) 的一些經驗談。然而今天所要探討的服務不外乎都是跟「儲存永久性資料」有所關係的,簡單來說就是雲端資料庫,例如以下服務:

Google Firebase

  • RealTime Database => JSON 格式的「非關聯式」即時反應資料庫。
  • Storage => 可用來儲放圖片、影音檔的空間。

AWS

  • RDS => 「關聯式」資料庫,其背後是 MySQL,但 App 無法直接存取,中間必須還要有一層後台來與它溝通。
  • DynamoDB => 物件格式的「非關聯式」資料庫,針後物件格式在文章後面法蘭克會再稍作說明。
  • S3 => 可用來儲放圖片的空間,類 Firebase 的 Storage,但功能性更加強大。

針對以上這些服務,法蘭克分為「註冊帳號」、「主控台介面」、「開始使用服務的前置作業」、「RealTime Database 和 DynamoDB 使用經驗」、「收費方式」五個面向來探討它們的差異性。

註冊帳號

Google Firebase 只要利用 Google 的帳號即可登入。

Firebase 登入頁

AWS 相對於 Firebase 註冊過程較為繁瑣且必須要有信用卡才能註冊。

AWS 登入頁

主控台介面

Google Firebase 畫面簡潔操作起來容易, 主控台「 有」中文化,說明文件「無」中文化。

Firebase 主控台主頁
Firebase 服務總覽頁
Firebase 說明文件

AWS 在操作介面上稍顯複雜許多, 主控台「 無」中文化,說明文件「部份有」中文化,給 AWS 一些時間,相信往後會有全中文的。

AWS 主控台主頁
AWS 說明文件

開始使用服務的前置作業

  • Google Firebase 在開始使用服務前,我們只要下載 GoogleService-Info.plist 並將其放至專案下,並透過 CocoaPods 載入 SDK,即可開始使用。
  • AWS 相對於 Firebase 就會複雜許多,必須先至 AWS 的其中一個叫做 Cognito 的服務裡取得 PoolId,接著還要到 IAM(管理群組、使用者、角色的介面) 裡去新增角色並賦予可使用的服務有哪些後再回到 Cognito 去關聯這些角色。最後我們還必須在 Info.plist 手動設定這些資訊。SDK 的載入方式一樣可透過 CocoaPods,且在 GitHub 上都可下載得的每個服務的 Demo 檔。

RealTime Database 和 DynamoDB 使用經驗

RealTime Database 為 JSON 格式的資料庫,所以在存取上它相當的快速,幾乎可以讓使用者沒什麼感覺,並且還可去監聽它的資料變動行為。而因為它是 JSON 字串,所以在程式端取得後還要做一些額外的處理存放在記憶體裡供 APP 使用。

RealTime Database資料格式

AWS DynamoDB 雖然也是「非關聯式」資料庫,但 AWS 把它設計得跟「關聯式」資料庫相當的雷同,因為它可以自己建立 Table、Index、Trigger 等等。而透過 AWS SDK 取得的資料類型是透過 Object Relational Mapping 而來的,所以在取得資料後不需再額外處理它就會存在我們所定義好的物件理。而它還有一個最大的好處就是透過它的主控台可以下條件做一些簡單的資料查詢,這是有別於 Firebase 的。

DynamoDB 主控台
DynamoDB 查詢介面

收費方式

Google Firebase 的免費額度是相當高的,也就是必須到達一定的使用量或是要使用特殊功能(例如備份資料)才必須付費的,至於收費標準在主控台的 Pricing 頁面可以查詢的到。

舉個例如 RealTime Database 只要不要超過 100 人同時連線,不要儲存超過 1 GB 的資料量,下載量不要超過 10 GB/月都不會被收到錢。

Firebase RealTime Database 收費標準

AWS 的免費門檻就比較低了,有的服務是第一年免費,過了一年後不管使用量多少就要開始收費了;有的服務是只要使用量不要超過它的免費額度就都不需要收費。而且每個地區的收費標準還不一樣,這裡法蘭克要針對每一個地區收費標準不一樣特別解釋一下,在開始使用 DynamoDB 之前,AWS 要會你選擇伺服器的位置,例如我們可以選擇日本、北美、南美等等地區。以下就來看看 DynamoDB 的收費標準。

AWS DynamoDB 依寫入/讀取的單位來收費

由上圖大家可能還不太能理解何謂寫入/讀取的單位。這邊法蘭克要來說明一下,AWS 一開始會給 DynamoDB 讀/寫各 25 單位使用量,我們可以拿這 50 單位來分配給每個表格(Table)使用,在主控台可以看到讀/寫目前的使用量。

AWS DynamoDB 讀/寫目前的使用量

由下圖可以看出每個 Table 和 Table Index 所分配的讀/寫目前的使用量。

AWS DynamoDB Table 和 Table Index 所分配的讀/寫目前的使用量

結論

綜合以上分析,兩間廠商各有其優缺點,最主要的還是端看於需求是什麼才是最重要的。題外話一下,AWS 自家主打的服務是是虛擬主機(EC2),也是最多人所使用的服務。而寫這篇文章的出發點就是當初法蘭克在考慮該使用哪一家的雲端服務時,也費了一番功夫爬文和做了些功課,希望這篇文章能幫助想要使用雲端服務來儲存永久性資料確不知怎麼下手的各位參考,若有任何問題都可以在留言中提出。

如果您喜歡我的文章,請多按幾下「拍手」給我鼓勵,或是按「follow」讓我持續提供好文章給您。

--

--