可更新的脱机存储/数据库

时间:2018-05-30 11:44:46

标签: javascript nativescript

目前我正在尝试学习nativescript,为此我想做一个类似'Anki'的应用程序

但是在考虑数据存储的同时,我解决了如何在本地保存我的闪存卡以保持应用程序脱机(例如使用SQLite)的问题,节省用户反映每张卡的时间(例如再次显示) 10分钟或1天)并具有更新功能,可使用新卡更新数据库,而无需删除用户数据。

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

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

1 个答案:

答案 0 :(得分:1)

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