javascript - 可更新的离线存储/数据库
问题描述
目前我正在尝试学习nativescript,为此我考虑过做一个像' Anki '这样的应用程序
但是在考虑数据存储时,我偶然发现了如何在本地保存我的闪存卡以保持应用程序离线(例如使用 SQLite)的问题,节省用户反映每张卡的时间(例如,在 10 分钟内再次显示或1 天)并具有更新功能,可以在不删除用户数据的情况下使用新卡更新数据库。
解决该问题的最佳方法是什么,尤其是当我想通过 App-Update 提供更新并且不从外部数据库获取所有内容时?
我还没有任何代码,因此关于如何解决这个问题的建议会很好。
解决方案
NativeScript 中有几种方法可以使用:
NativeScript-Sqlite(免责声明:我是作者)这允许完全访问 Sqlite 以保存和加载项目;您可以根据需要拥有尽可能多的数据库,并且 Sqlite 非常快。Sqlite 最大的缺点是写入速度;如果你有大量的写入,它可能比自己写入文件要慢。
NativeScript-LocalStorage(再次免责声明:我是作者)这更适合较小的数据大小;当应用程序启动并保存时,它必须将整个 json 支持的数据存储加载到内存中。这真的很快。但不是您想用于数十万条记录的东西。
NativeScript-Couchbase 本地存储使用 sqlite,远程存储可以使用 couchbase;非常适合拥有可同步的存储 - couchbase 可以是您自己的服务器,也可以是租用或租用的服务器。
NativeScript-Firebase 这对于同步存储也非常有用;然而,谷歌在某个时候对 FireBase 收费。
内置 AppSettings。这实际上是为一些应用程序设置而设计的,而不是为大量数据而设计的。但对少量数据很有用。
在文件系统中扮演你自己的角色。我已经在我的几个项目中做到了这一点;基本上是我的 localstorage 插件和 mini-sql 类型系统的混合体。一个项目非常依赖于写入,因此在手机上为每个表生成 20 个左右的单独文件更有意义,因为与每次应用程序启动到 sqlite 时插入/替换 > 100,000 条记录相比,我可以更快地保存它们。有最小的搜索需求。
您的存储确实需要取决于您在做什么;这是一种平衡行为。大量可搜索的数据;sqlite 在几乎所有情况下都获胜。大量频繁的写作;你创建的东西可能会快很多。
推荐阅读
- react-native - 反应原生滑块>无法通过点击多个滑块来获取位置值
- ms-access - 如何以连续形式操作单个记录
- java - Java 中的 3 位小数精度
- docker - 如何在 Docker 上运行灭霸?
- spring - @Autowireing 服务提供 NullPointerException
- android - 安装应用程序后在 android studio 中启动活动时出错
- php - 返回laravel中的所有关系数据
- excel - 将工作簿 A 中单元格的值设置为工作簿 B 中范围值的总和
- python - 是否有任何 python 程序可以替换两个列表中的两个字符串
- ios - 将文本视图退出为第一响应者,并在按下回车键时将文本字段设为第一响应者