相关疑难解决方法(0)

在Android上同时将数据保存在内存和数据库中的最佳实践

我们正在设计一个拥有大量数据的Android应用程序("客户","产品","订单"......),我们不希望每次需要某些记录时都查询SQLite.我们希望避免尽可能多地查询数据库,因此我们决定将某些数据始终保留在内存中.

我们最初的想法是创建两个简单的类:

  1. "MemoryRecord":一个基本上包含一个对象数组(string,int,double,datetime等)的类,它们是表记录中的数据,以及从这个数据中获取这些数据的所有方法阵列.

  2. "MemoryTable":一个基本上包含[Key,MemoryRecord] Map和所有操作此Map并在数据库中插入/更新/删除记录的方法的类.

这些类将派生到我们在数据库中的每种表.当然还有其他有用的方法没有在上面列出,但它们在这一点上并不重要.

因此,在启动应用程序时,我们将使用这些类将这些表从SQLite数据库加载到内存中,每次我们需要更改某些数据时,我们都会更改内存并立即将其发布到数据库中.

但是,我们需要您的一些帮助/建议.你能提出一些更简单或更有效的方法来实现这样的事情吗?或者也许一些已经为我们做过的现有课程?

我理解你们要向我们展示的内容,我感谢你们.

但是,假设我们有一个包含2000条记录的表,我需要列出这些记录.对于每一个,我必须查询其他30个表(其中一些有1000条记录,其他有10条记录)在列表中添加其他信息,而这是"飞行"(如你所知,我们必须非常快)此时此刻).

现在您将要说:"只需使用所有这些'连接'构建您的主查询,并一步完成您所需的一切.如果数据库设计合理,SQLite可以非常快......".

好的,但是这个查询会变得非常复杂和确定,即使SQLite非常快,它也会"太慢"(2个4秒,我确认,这对我们来说这不是一个可接受的时间).

另一个复杂因素是,根据用户交互,我们需要"重新查询"所有记录,因为所涉及的表不一样,我们必须与另一组表"重新连接".

因此,另一种方法是只带主要记录(这将永远不会改变,无论用户做什么或想要什么)没有连接(这非常快!)并在每次我们想要一些数据时查询其他表.请注意,在仅包含10条记录的表中,我们将多次获取相同的记录.在这种情况下,这是浪费时间,因为无论SQLite是快速的,查询,游标,获取等等总是会比从一种"内存缓存"中获取记录更昂贵.我想明确指出,我们不打算始终将所有数据保存在内存中,只是我们经常查询的一些表.

我们来到了最初的问题:"缓存"这些记录的最佳方法是什么?我真的很想把重点放在讨论上,而不是"为什么你需要缓存数据?"

architecture performance memcached android design-guidelines

29
推荐指数
2
解决办法
2万
查看次数

将下载的JSON数据缓存到SQLite数据库 - 这是一个好主意吗?

在我的应用程序中,我必须从众多Web服务下载JSON数据.我使用的数据类相当复杂(很多属性,非常深的继承树等).

我打算使用单个db表进行缓存,我将下载的JSON数据存储在VARCHAR列中(以及包含其他元数据的列).JSON序列化正在使用Gson库完成.

将实例转储到JSON中并在以后需要时再次解析它们似乎很方便.无需为每个类创建自定义表,也无需编写大量自定义序列化代码.此外,我可以通过这种方式对缓存表进行查询.

问题:这种方法无论如何都是反模式的吗?

sqlite serialization android json caching

12
推荐指数
1
解决办法
9980
查看次数

我应该选择什么 - JSON或SQLite?

在我的应用程序中,在每次启动时,一些JSON必须从服务器下载,然后我需要通过在完整的应用程序生命周期中解析这些数据来显示各种信息.该JSON对象几乎与5000相当大的JSONArray.每个JSON数组都具有以下形式:

[37,101,"The Blocks Problem",9952,0,1000000000,0,852,0,0,11197,0,16606,0,7279,200,18415,5325,14492,3000,1]
Run Code Online (Sandbox Code Playgroud)

所以我有两个选择:

  1. 将json字符串保存到文件中,然后再读取它.
  2. 将SSON数组保存在SQlite数据库中,包含近10列和5000行.

第一种选择似乎是有效的.但后来我不得不操纵JSON来显示各种信息.在某些情况下,我需要搜索完整数组来选择数组信息,并且有很多这样的情况.所以这也非常耗时.

第二个选项更适合搜索和显示更快.所以我接着第二个选项.但是一次插入5000行也是耗时的.我是AsyncTask为了改进而做的,但是执行需要花费太多时间 - 解析JSON并存储在SQlite表中.

那我该怎么办?存储这些巨大信息并在以后有效使用它的最佳方法是什么?

android json android-sqlite

5
推荐指数
1
解决办法
1万
查看次数