繁体   English   中英

在Titanium for iOS和android中存储大JSON

[英]Store big JSON in Titanium for iOS and android

该应用程序如何工作

目前正在开发一款应用程序,用于探索5个地区的活动。 每个活动都表示为具有大量属性的JS对象。 可以通过各自选项卡中的不同过滤器查看活动,例如类别或地图。 在每个主过滤器内部,可以选择过滤日期,区域,可访问性等。

挑战

有很多JSON需要存储在设备上, iOS和Android都需要支持。 在最好的情况下,数据需要与数据库同步,并且所有数据都需要在设备上可用。 该应用程序需要快速获得良好的体验,这意味着获取数据需要尽可能快。 此外,过滤数据需要尽可能快速。

到目前为止考虑的可行解决方案(尚未完全削减)

MongloDBMongloDB钛存储适配器 ,银弹?

这种方法起初似乎是银弹。 虽然该项目看起来很有希望,但它由一位英雄黑客维护,该项目需要一些文档。 我检查了源代码,并通过API破解了我的方式,但无济于事,console.log和jasmine测试这次不会削减它。 更重要的是,它尚未完成,并且缺少与MongoDB相比的功能。 这是一个伟大的项目,我希望它能够吸引更多,并且能够在未来帮助绝望的钛开发人员。

JSONDB ,仅适用于iOS

这个应用程序真的需要在两个平台,iOS和Android上工作,所以没有理由尝试这个。 此外,JSONDB仅在单个上下文中工作,这也是一个严重的问题。

Ti Filesystem和JSON.stringify + JSON.parse,不是内存效率高

一种可行的解决方案,用于保存一小部分已保存的项目,这也是应用程序中的一项功能。 但在其他帖子中 ,使用JSON方法的内存限制问题已经被注意到了android。 虽然这可能不是我的问题,但内存效率总是一个巨大的问题。 我从未见过使用Titanium文件读写的性能基准,所以我不确定读写的影响有多大。 过滤大对象也是一个巨大的问题, 下划线不会管理这种大数据。 无论采用何种方法,迭代大对象都是一个巨大的问题。

大屁股全球对象

实际上与文件系统相同的方法,只保留在全局。 这有同样的问题,只是一种简单的不道德的做法。

SQLite,好吧

面向SQlite的高度面向文档的JSON数据,听起来比三星Galaxy粉丝更糟糕。 对此有何反馈?

多个文件+ SQLite来维持+延迟加载,独角兽和彩虹?

迫切需要一个解决方案,我可能会在写这篇文章的过程中遇到一些问题。 可能有10-16个主要类别,每个1到4个子类别。 将子类别的所有活动保存在它自己的文件中,这是一个相当纤薄的JSON。 浏览类别时,每个子类别都在其自己的TableViewSection中呈现,每个子类别根据用户向下滚动的程度独立地附加到表中,有效地延迟加载内容。 只有一个非常快速的文件读取。 在此视图中,添加更多子过滤器仅影响已加载的项目,并且迭代此项目的价格合理。

更新数据也非常有效,只更新可能发生变化的文件。 SQLite数据库可以维护所有具有到期日期的活动的日期,它可以动态构建它自己的JSON文件,用于即将到来的七天或一个月。 这将使日历视图在大多数情况下非常流畅。 挑选未来的日期将是一场噩梦。

地图还是个问题......

如果你已经阅读了所有这些,谢谢。 如果您有类似的东西,或者可能有某些东西,请随时回复! 我不得不放弃写作,退出编码并开始睡觉。

对不起那些糟糕的monglodb文档。 我为一些内部项目开发了它,并且真的想与社区分享它,但缺乏文档确实使它难以使用。 但是,我有文档的好消息现在大声笑了,并清理了源代码。 希望它现在对你有用。 http://monglodb.com

我是JSONDB的原作者,并且认为我会参与并通过Googlefu为任何发现此问题的人提供答案。

JSONDB现在已被弃用 - 它已被另一个名为SculeJS的项目所取代。 SculeJS旨在提供一个用纯JavaScript编写的全功能NoSQL数据库,用于Titanium,NodeJS和Web应用程序。

由于Ti本机模块的构建方式存在限制,JSONDB最初只能在iOS应用程序中使用 - 当前版本的JSONDB和SculeJS兼容iOS和Android应用程序。

在许多方面,MongloDB和SculeJS是相似的,它们的分歧在于SculeJS的设计方式。 SculeJS旨在提供具有丰富查询层的强大通用数据结构,而不是MongoDB的直接端口。 没有侮辱Monglo - 它看起来很棒的软件,我只想指出两个项目之间的意图差异。

作为旁注 - 所有纯JavaScript模块仅限于Titanium应用程序中的单个执行上下文。

对于你正在构建的东西,我认为MongloDB,JSONDB,SculeJS和TaffyDB都可以完成这项工作,实现的细节会略有不同。

我遇到了同样的问题。 我有大约5mb的数据,我想用应用程序存储,而不是让它下载。

我终于得到了一个具有高性能的SQLite数据库。 它没有你想象的那么糟糕。 它可能不是一个很好的解决方案,但由于缺乏选择,它是一个非常好的恕我直言。

只需创建几个表,并将函数解析为数据库,反过来,我保证,你会很高兴。

不要将JSON存储在数据库中,而是适当地存储值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM