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