首页 > 解决方案 > 可更新的离线存储/数据库

问题描述

目前我正在尝试学习nativescript,为此我考虑过做一个像' Anki '这样的应用程序

但是在考虑数据存储时,我偶然发现了如何在本地保存我的闪存卡以保持应用程序离线(例如使用 SQLite)的问题,节省用户反映每张卡的时间(例如,在 10 分钟内再次显示或1 天)并具有更新功能,可以在不删除用户数据的情况下使用新卡更新数据库。

解决该问题的最佳方法是什么,尤其是当我想通过 App-Update 提供更新并且不从外部数据库获取所有内容时?


我还没有任何代码,因此关于如何解决这个问题的建议会很好。

标签: javascriptnativescript

解决方案


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 在几乎所有情况下都获胜。大量频繁的写作;你创建的东西可能会快很多。


推荐阅读