成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

開發者如何為React Native選擇合適的數據庫

譯文 精選
開發 前端
本文將和大家一起深入討論合適React Native的數據庫的各種特性和優缺點,并最終給出為React Native應用進行選擇時的建議。

譯者 | 陳峻

策劃 | 云昭

如今,程序員們可以選用多種編程語言,來創建在線平臺、網站和應用程序。其中,在編程社區中,廣受不同開發背景的人員所推崇的一種流行語言,便是React Native。它是由Facebook的JavaScript工具包所構建,適合為移動平臺、而非Web,設計和創建獨特的用戶界面。目前,React Native已被廣泛地運用在采用JavaScript的框架,并為iOS和Android平臺構建移動應用的項目中。

可以說,該領域的開發者不但需要了解JavaScript和API服務、而且要能夠構建前端的UI,維護跨平臺的兼容性、以及整合基礎架構與其他應用。下圖展示了歷年來,時下各種編程語言,在項目中被使用的占比分布。

圖片

目前,適合React Native應用的數據庫有:Async Storage、SQLite、Realm、以及PouchDB等。下面,我將和大家一起深入討論各種數據庫的特性和優缺點,并最終給出為React Native應用進行選擇時的建議。

MMKV存儲

由C++開發的MMKV存儲具有快速高效的特點,可方便您在React Native應用中快速地保存數據。同時,該數據庫非常輕巧。它在Android上僅占50K空間,而在iOS上只有30K。如果被打包的話,其體積會更小。此外,MMKV不但支持redux-persist(持久化),而且允許用戶保存任何形式(無論是否加密)的數據。

特征如下:

  • 支持加密(安全存儲)。
  • 支持多實例(將用戶數據與全局數據分開)。
  • 自定義存儲位置。
  • 由于一切都是用C++編寫的,因此具有高性能。
  • 比Async Storage快大約30倍。
  • 使用JSI框架,而不是舊的“橋”模式。
  • 支持iOS、Android和Web。
  • 易于使用React Hooks的API。


圖片

Realm數據庫

由于可以使用動態映射到完整且專有的數據庫引擎,基于SQLite的Realm能夠處理各種原生的JavaScript對象,并在保持性能的同時,提供一套簡單的API。同時,Realm允許開發者創建各種高級搜索、復雜的數據表示、以及在圖表中的事物鏈接。

Realm在Android中屬于輕量級數據庫。與下文將討論的SQLite相比,Realm不但使用的內存更少,而且在讀寫數據等常見操作上的速度更快。此外,它還具有極其豐富的功能集。

特征如下:

  • 由于Realm屬于對象存儲,因此對象之間的關系可以通過各種“鏈接”來實現。
  • 每個“鏈接”都能夠創建一個與鏈接到當前對象的“反向鏈接”映射。
  • Realm可以更新其實例版本。
  • Realm帶有零拷貝(zero-copy)架構,以及延遲加載(lazy-loaded)式的數據訪問。

圖片

SQLite 

作為C語言數據存儲庫的SQLite,在移動應用程序中,特別適用于離線應用。許多平臺都以簡便的設置方式,提供了開箱即用的SQLite支持。而作為最著名的免費Android開發數據庫之一,它不但具有開源的顯著特點,而且可以滿足開發人員廣泛的項目需求。

特征

  • 能夠在iOS和Android上提供相同JavaScript API。
  • 在各種Java和Native模式下,以及Android中都可以被使用。
  • 其簡單的回調(callback)和Promises可以被用于連接JavaScript里的SQL事務。
  • 可以從應用程序包和沙箱中,導入預填充的SQLite數據庫。
  • Windows能夠像在iOS和Android上一樣,支持回調API。

圖片

Firebase

Firebase實時數據庫是一個由Google支持的應用開發平臺,可允許開發人員為iOS、Android和web創建各種應用。而作為一種基于云端的NoSQL數據庫,Firebase可以通過提供分析跟蹤、報告、應用問題修復、以及市場和產品實驗功能(experimentation capabilities)等服務,在用戶之間實現實時存儲和數據同步。

特征

  • 即使應用處于離線狀態,數據也能在所有客戶端之間實時同步。
  • 可以讓開發人員更專注于打造出色的用戶體驗,而無需管理服務器。
  • Firebase為您準備好了通用的服務器、API和數據存儲,您只需按照實際需求進行修改即可,而不需重新編寫。
  • 按照云托管數據庫的需求,Firebase可以將數據以JSON格式進行存儲,并進一步持續同步到每個關聯的客戶端上。
  • 作為基于云服務的數據庫,它可被用于管理應用程序的數據,并提供快速的數據結果。

圖片

WatermelonDB

在React Native和React的在線項目中,WatermelonDB提供了一種管理用戶數據的新方法。它是專為創建復雜的React Native應用而設計的,且十分重視應用的實際性能。簡單而言,由于Watermelon的架構與數據庫無關,因此開發者可以橫跨多個平臺使用它,并能達到快速啟動軟件的效果。此外,作為一個高級數據管理層,Watermelon還可以根據平臺的要求,連接到任何React原生的數據庫層面上。

特征

  • 由于使用延遲加載,Watermelon DB可以只在被請求時才加載數據。據此,應用程序的可擴展性可以得到大幅增強。
  • 由于所有的查詢都是在其不同的線程上完成的,因此大多數查詢只需不到1毫秒的時間。
  • 無論后端的數據體量有多大,您都可以立即啟動應用程序。
  • 它能夠與iOS、Android和web相兼容。
  • 它使用JavaScript的靜態類型檢查器,通過Flow的方式進行靜態類型轉化。
  • 它具有快速、異步、多線程和高度緩存等特性,也可與同步引擎協同工作,以保持原生本地數據庫與遠程數據庫的同步。

圖片

PouchDB 

PouchDB是一個基于Apache CouchDB的開源JavaScript類型的數據庫。它針對在瀏覽器中的各種使用場景進行了優化。PouchDB在瀏覽器中會使用IndexedDB和WebSQL在本地存儲數據,并且持續實現本地和遠程數據庫的交互。據此,PouchDB可以幫助Web開發人員創建具有離線和在線等效功能的應用。也就是說,它允許應用在離線時,將數據保存在本地,而在應用重新上線后,再與CouchDB和其他兼容的服務器相同步,以確保用戶的數據始終為最新。

特征

  • 由于PouchDB提供的API在所有瀏覽器中都是相同的,因此它可以在各種瀏覽器中被流暢地使用。
  • 如果您對編程語言有所了解,那么學習和理解PouchDB并非難事。
  • 作為一種輕量級的API,我們可以方便地使用script標簽來包含它。


圖片

Vasern  

Vasern是一種基于鏈接一致性的鍵-值存儲式React Native數據存儲系統。其目標是提供一個開源、且對開發人員友好的端到端數據庫系統。而且,由于其數據引擎是從頭開始創建的,因此Vasern提供了原生的性能。

特征

  • 它通過UTF-8編碼來支持各種語言。
  • 能夠支持字符串、整數、雙精度、日期時間、以及引用等基本數據類型。
  • 可以通過schema來創建、更新、查詢和刪除各種記錄。

圖片

MySQL、MongoDB和DynamoDB

一些小型組織往往會使用MySQL、MongoDB和DynamoDB等服務器端數據庫,進行React Native的應用開發。三者的比較如下:


圖片

開發人員在選擇數據庫之前需要考慮什么?

眾所周知,在中小型軟件運行的過程時,數據往往是被保存在變量之中的。不過,當程序重啟時,變量則會因為恢復初始值,而導致數據的丟失。對此,我們需要數據庫在能夠起到很好的數據存儲、保持、以及在程序重啟后的持續檢索等作用。通常,我們可以在為React Native應用選擇數據庫之前,考慮如下方面:

  • 應確保數據庫具有足夠的內存,可供軟件的執行。
  • 選擇可以處理復雜數據結構(如整篇文檔或對象)的數據庫。
  • 當用戶從離線恢復為在線狀態時,應能夠通過集成來實現數據庫中數據的同步。
  • 容易實現應用與數據庫的集成。

小結    

上述介紹的各種數據庫分別有著自己的一組特性和優缺點。因此,在為React Native應用選擇合適的數據庫時,開發人員應當清楚地了解自己的項目目標和應用需求,通過試用、比較和深入研究,從中選擇最符合要求的數據庫。

原文鏈接:https://dzone.com/articles/how-developers-need-to-choose-the-right-database-f

譯者介紹

陳峻 (Julian Chen),51CTO社區編輯,具有十多年的IT項目實施經驗,善于對內外部資源與風險實施管控,專注傳播網絡與信息安全知識與經驗;持續以博文、專題和譯文等形式,分享前沿技術與新知;經常以線上、線下等方式,開展信息安全類培訓與授課。

責任編輯:薛彥澤 來源: 51CTO
相關推薦

2010-07-08 15:48:34

開源

2021-02-23 23:06:31

數據庫Redis技術

2013-07-23 10:31:59

冗余數據遠程數據中心數據中心

2017-04-01 18:00:08

開發者數據庫

2017-06-19 16:20:09

數據庫性能工具

2016-10-08 18:13:55

數據庫性能工具數據庫管理系統

2020-06-17 15:01:30

物聯網數據庫物聯網數據庫

2023-04-03 08:00:00

數據庫NoSQL

2017-11-20 13:32:54

微服務數據庫開發

2017-11-23 15:06:14

前端數據庫開發

2022-05-05 09:11:33

數據庫加密數據安全

2016-09-08 23:28:06

2015-08-06 17:15:28

2011-03-16 09:33:45

數據庫開發錯誤

2011-03-16 09:38:05

2021-03-28 17:14:38

數據庫APP技術

2021-09-30 12:55:44

數據處理流處理引擎

2015-03-16 12:54:25

虛擬化存儲設備

2022-03-01 18:21:27

云遷移云服務

2018-07-25 15:43:27

機器學習框架開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲成人在线视频播放 | 日韩综合| 伊人伊人伊人 | 北条麻妃99精品青青久久主播 | 99re在线视频免费观看 | jizz亚洲人 | 一区二区视屏 | 亚洲欧美精品一区 | a级网站 | 国产精品99久久久精品免费观看 | 成人午夜免费福利视频 | 亚洲一区久久 | 久久久久久久久国产成人免费 | 精品国产成人 | 日韩视频1 | 日韩插插| 日韩视频在线免费观看 | 日本亚洲精品成人欧美一区 | 久久91av | 午夜精品网站 | 天天干免费视频 | 九九九久久国产免费 | 亚洲狠狠丁香婷婷综合久久久 | www.久| 国产一级片在线播放 | 国产精品国产三级国产aⅴ原创 | 91精品国产色综合久久不卡98口 | 国产成人精品a视频一区www | 精品国产一区二区三区观看不卡 | 中文字幕免费在线 | 色播久久 | 91精品国产91久久久久青草 | 欧美性受xxxx白人性爽 | 伊人精品久久久久77777 | 国产精品网页 | 国产精品免费看 | 国产精品资源在线观看 | 久久久久久久一区 | 精品99久久久久久 | 久久一区二区免费视频 | 99久久日韩精品免费热麻豆美女 |