五大首選React Native數據庫
譯文【51CTO.com快譯】由Facebook創建的React Native,是目前廣受歡迎的、頭部的開源移動應用框架。作為一個跨平臺的開發框架,它既能夠支持諸如:Android、iOS、tvOS、macOS、Windows、以及UWP等各種系統與智能設備,又允許開發人員只需一次性編寫JavaScript代碼,便可創建出與各種移動平臺相兼容的應用程序。因此,React Native不但有助于節省開發人員的時間,而且能為客戶節省開發的成本。
React Native的主要特點
- 開源。
- 直觀且模塊化。
- 可加速開發進程。
- 提供強大的社區支持。
- 支持代碼重用。
- 提供實時重載。
目前,有許多JavaScript類技術公司都圍繞著React Native,創建了各種非常實用的技術棧。在進行擴展、甚至是一些小規模的應用項目中,移動開發人員需要慎重地選擇技術棧。這其中就包括了對于React Native數據庫的選擇。畢竟,他們需要將開發的應用程序,處理和存儲在一個安全有效的數據庫中。下面,讓我們來一起討論有哪些因素和標準,值得我們在選擇React Native數據庫時,予以全面考慮。
1.內存的處理能力
顯然,如果數據庫在處理數據方面效率不高,就會直接導致React應用程序頻繁出現崩潰的情況。對此,大多數React Native數據庫會定期清理其緩存,以確保能夠剩余足夠的內存可供訪問,進而保證應用程序的平穩運行。
2.沖突的處理能力
由于移動應用需要通過與系統的協作,來實現相關功能,因此為了事先解決好可能引發的數據沖突,React Native數據庫應當能夠在其存儲庫或網站上,共享其沖突管理的規則。有專家建議,我們可以通過瀏覽待選數據庫的文檔,以了解它們會如何管理同步、沖突、以及它們會對React應用程序產生何種影響。
3.應用數據的復雜性
React Native數據庫在處理各種復雜應用架構和代碼方面的能力,直接決定了它是否能夠協助開發者創建出可擴展的、面向未來的React應用。因此,在預算許可的前提下,請選擇高效的React Native數據庫,來管理豐富的對象、文檔等復雜的數據結構。
4.能否同步脫機數據
誠然,如今我們已習慣了通過流暢的網速,隨時隨地加載并使用移動應用。但是,在某些非常情況下,一旦出現了斷網或網速受限,那么移動應用則需要提供相應的脫機服務。為此,您所選擇的React Native數據庫,應當能夠在用戶再次恢復網絡連接時,提供脫機數據的同步。
5.易于使用
為了能夠將復雜的數據管理過程化繁為簡,React Native數據庫應當易于設置、提供工具、并便于使用。
五大首選React Native數據庫
在了解了React Native數據庫的選擇因素和標準后,我們來討論目前市場上較為流行的五大首選React Native數據庫:
1. Amazon DynamoDB
Amazon DynamoDB旨在為功能齊全、且被托管的NoSQL數據庫提供服務。它運行在Amazon的AWS云端,并且是完全去中心的。由于具有水平擴展能力和成本效益的特性,因此用戶在使用Amazon DynamoDB時,只需要為存儲和I/O的吞吐量支付費用。
Amazon DynamoDB的主要特點
- 能夠執行具有強一致性的讀取。
- 能夠快速讀取與寫入數據。
- 可以根據吞吐量進行擴/縮容。
- 是一項全面的托管服務。
- 可執行各種并行篩選(parallel screens)。
- 能夠自動生成UUID。
- 提供全局二級索引。
- 提供本地二級索引。
- 通過“點擊按鈕即可擴展(Push-button scaling)”的功能,可確保在不造成任何停機的前提下,對數據庫進行在線擴/縮容。
Amazon DynamoDB的優點
- 易于設置。
- 提供Non-hourly計費模式。
- 支持各種數據流。
- 支持生存時間(Time-to-Live,TTL)功能。
Amazon DynamoDB的缺點
- 僅提供較弱的查詢模式。
- 成本難以預估。
- 服務器端更新不及時。
售價
為了避免價格估算的復雜性,Amazon DynamoDB在其網站上提供了一個方便成本計算的工具,可讓用戶在配置每個組件,并在定制軟件包服務時,粗略地估算總成本。當然,隨著應用程序存儲數據量的增多,DynamoDB對于成本消耗也會逐步攀升。
誰在使用Amazon DynamoDB?
- Netflix
- Lyft
- Amazon
- The New York Times
- Medium.com
- Delivery Hero
2. MongoDB
MongoDB是一個開源的服務器端React Native數據庫。它在構建之初就考慮到了可擴展性和復雜的應用程序。通過采用動態模式,MongoDB在JSON文檔中,將鍵-值存儲與關系型數據庫相結合。如果您的React應用程序需要處理大量數據,那么就可以使用MongoDB,在不影響React Native應用正常運行的情況下,修改其架構。MongoDB并不使用諸如SQL之類特定的域語言(domain-specific languages),而是僅使用簡單的JavaScript接口,進行查詢。
MongoDB的主要特點
- 可按需優化查詢,并執行實時分析。
- 其復制功能可提高數據的穩定性和可用性。
- 適當的索引可以更好地執行查詢。
- 支持負載均衡。
- 可實現數據分片(Sharding)。
MongoDB的優點
- 提供靈活的數據庫。
- 可實現數據分片。
- 提供高可用性。
- 高速快捷。
- 提供可擴展性。
- 支持按需查詢。
- 提供技術支持。
- 支持簡易的環境。
MongoDB的缺點
- 內存使用率較高。
- 不支持聯合查詢。
- 嵌套功能有限。
- 數據大小受限。
售價
MongoDB為共享集群、專用集群和專用多區域集群,提供如下三種不同的定價方案。
在價格上
- 共享集群-免費。
- 專用集群-每月$57。
- 專用多區域集群—每月$95。
在存儲上
- 共享集群-512 MB到5 GB。
- 專用集群-10 GB至4 TB。
- 專用多區域集群-10 GB至4 TB。
在內存上
- 共享集群-共享。
- 專用集群-2 GB至768 GB。
- 專用多區域集群—2 GB至768 GB。
誰在使用MongoDB?
- Uber
- Lyft
- Alibaba Travels
- Accenture
- Delivery Hero
- Trello
3. Firebase
由Google創建的Firebase平臺,可用于創建移動和Web應用。它最初是一家成立于2011年的獨立公司,Google于2014年將其作為支持React Native的NoSQL數據庫予以了收購。由于非常適合對于數據同步和脫機數據的修改需求,因此Firebase可以很好地處理React Native應用中MVC(Model View Controller)架構的“M”(模型)和“C”(控制器)。
Firebase的主要特點
- 對報告不做限制。
- 能與其他服務相集成。
- 支持受眾細分(Audience Segmentation)。
- 提供數據庫管理。
- 支持文件存儲。
- 具有云代碼。
- 可擴展主機。
- 支持機器學習。
Firebase的優點
- 便于實現實時的后端。
- 提供快速響應。
- 具有出色的文檔。
- 支持快速原型制作。
- 可實時同步。
- 易于安裝。
- 安全性非常到位。
Firebase的缺點
- 對iOS功能的支持較為有限。
- 成本價格難以預測。
- 查詢功能較為有限。
- 易被供應商鎖定。
- 數據遷移可能存在問題。
- 無法在Google服務不可用的國家和地區被使用。
售價
Firebase有兩種定價計劃--Spark和Blaze:
- 火花版(Spark Plan):作為免費版本,大量用戶可以為整個網站或應用設置數據庫、消息傳遞的驗證、具有SSL的自定義域、以及各種云端功能。
- 火焰版(Blaze Plan):可用于較大規模的應用,屬于“按需付費”模式,即:用戶只需按照實際使用到的Firebase存儲進行支付。當然,其中也會包含一些日常的費用。Firebase獨家提供直觀的上限設置和預算報警功能,以免用戶在使用中超額。
誰在使用Firebase?
- Atlassian
- Wishlist
- Athelas
- Studemy
4. SQLite
作為一種C語言庫,SQLite平臺最初旨在為用戶提供,創建移動應用的本地存儲數據庫。由其名稱中的“lite”可知,它屬于輕量級,僅包含最小的設置功能。SQLite使用可添加的數據管理工具,來執行大多數SQL策略。它通過免費且能夠在公共領域中使用的方式,來吸引廣大開發人員。
SQLite的主要特點
- 幾乎實現零配置。
- 屬于無服務器(ServerLess)的一種。
- 使用單個數據庫文件。
- 具有穩定的跨平臺數據庫文件。
- 提供可讀的源代碼。
- 具有SQL語言擴展。
SQLite的優點
- 輕量級。
- 可移植。
- 免費。
- 簡單。
- 能與TCL集成。
- 已預裝在iOS和Android上。
SQLite的缺點
- 默認限制為2 GB。
- 不支持多客戶端的并發訪問。
- 最大數據庫限制為140 TB。
- 最大可添加的數據庫為125個。
售價
SQLite可供公共領域免費使用。如果貴組織想要獲得版權(防侵權)許可證,則需一次性支付6000美元。
誰在使用SQLite?
- Alibaba Travels
- Accenture
- Adidas Runtastic
- Typeform
5. Realm
作為一個面向對象的開源數據庫,Realm的運行速度比大多數關系型數據庫要快上十倍。由于能夠處理實時和脫機應用中的復雜數據類型,因此開發人員可以將它用于React Native項目中。Realm不需要任何鍵-值存儲,甚至不需要與對象相關的映射(object-related mapping)。與市場上大多數React Native數據庫相比,Realm不但自帶搜索引擎,而且可以高效地修復查詢。因此,它是大型React Native應用的一種理想選擇。
Realm的主要特點
- 可創建響應式移動應用(Reactive Mobile App)。
- 可實現并發控制。
- 帶有面向對象的數據模型。
- 提供用于同步的日志組件。
- 提供查詢界面。
- 帶有存儲架構。
Realm的優點
- 專為離線使用而設計。
- 專為移動設備而設計。
- 對開發人員來說比較直觀。
- 提供完全加密。
- 開源。
- 可以跨平臺使用。
- 支持數據同步。
Realm的缺點
- APK的體積較大。
- 會使用更多的內存。
- 無法自動遞增(Auto-increment)。
- 對模型的類別有所限制。
售價
Realm的普通版本是完全開源且免費的,其專業版的價格為1750美元。如果您想使用由它提供的React Native數據平臺、各種軟件包的話,則需每月支付1750美元。
誰在使用Realm?
- Discontinuity
- Patreon
- Araclx
- Kargo Client Dashboard
小結
綜上所述,五種React Native數據庫各有利弊。您可以根據自己手頭的實際項目特征,在充分了解其相關文檔和社區反饋的基礎上,有針對性地選擇一、兩款進行試用。
原文標題:5 Most Preferred React Native Databases,作者:Ronak Patel
【51CTO譯稿,合作站點轉載請注明原文譯者和出處為51CTO.com】