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















 
 
 




 
 
 
 