大型数据库 - 在设备上显示数据的最佳方式?

Posted

技术标签:

【中文标题】大型数据库 - 在设备上显示数据的最佳方式?【英文标题】:Large database - Best way to display data on device? 【发布时间】:2012-03-23 20:32:41 【问题描述】:

我目前正在创建一个 ios 应用程序,它连接到数据库并异步下载 JSON 数据对象以显示在表格视图中。

就目前而言,这是一个不错的方法。但是,当数据库开始变得更大时,这将造成巨大的不便。我相当精通Objective-C,但在数据库方面并不多。从服务器获取这些数据并将其保存在应用程序中的最佳方式是什么?目前,我有一个自定义类对象,用于存储 JSON 对象中每个“对象”的数据。然而,数据库将处理应用程序的许多其他方面,例如邀请、登录和用户详细信息。

核心数据会是要走的路吗?即复制数据库(在一定程度上)并将其存储在本地,然后从那里访问。正如我所说,我不太确定要走哪条路,所以任何建议都会非常感激。

【问题讨论】:

【参考方案1】:

核心位置用于处理位置(卫星(和 wifi)定位)。

我猜你的意思是核心数据。 Core Data 是一个图形对象模型,它允许您将数据作为对象进行操作。您不直接挖掘数据库,而是通过谓词(SQL 中的一种 where 子句)请求对象实例化并操作对象。

这就是说,这完全取决于什么是“大”数据库。如果它真的很大,您可以考虑在本地复制其中的一部分,并通过您的网络服务从服务器询问剩余的内容。

您可能会问自己的另一个问题是永远不会改变的数据量,以及您的网站数据库和您的应用程序数据库是否需要同步(如果您的网站数据库总是在变化,那么将其复制到您的应用程序中将是愚蠢的完全且始终同步您的应用程序..)。

链接:

Introduction to Core Data

Difference between Core Data and a Database (Cocoa With Love)


编辑:

您可以问自己的一个问题是您的数据需要保存在哪里?

如果您的应用程序仅用于打印总共 200 个单元格中的 20 个单元格,那么我会下载您的 200 个单元格。首次下载后,其他单元格的加载将不会延迟,特别是如果您使用带有可重用单元格的表格视图单元格

在前 20 个单元格和后面的 20 个单元格之间延迟几秒钟是否可以接受?我认为您的问题没有真正的“好”答案,这取决于许多因素(您的应用程序的目的,加载之间可接受的时间,信息是否需要修改并保存回服务器或本地,什么样的客户,您的应用程序将如何处理单元格,如果您在本地有一个数据库,它将完全独立于“母亲”数据库(如果没有,什么样的同步)等)

尝试根据我对您的需求的理解来总结事情,如果您只需要检索信息并在之后利用它而不将其保存回来,我会说 Web 服务很好(即使您实际上可以做到)服务允许你这样做),如果你需要你的应用在某些方面独立于你的服务器,那么在本地拥有一个数据库是很好的。

只有您拥有回答所有这些问题的钥匙,并根据您的需求以及您对应用程序和客户的了解做出决定。

【讨论】:

感谢您的帮助。我的意思是核心数据,我现在已经改变了。例如,Facebook 应用程序新闻提要。我显然不想从服务器加载所有数据并填充 ~100/200 个单元格。 10-20 是理想的,然后询问用户他们是否想在到达底部时加载更多。 JSON 仍然是一条路吗? 谢谢,非常感谢。例如,我们可能有一个邀请功能,人们可以在其中邀请其他朋友,并且所述邀请将存储在包含表格视图的选项卡中。最好的方法是在应用启动时下载这些,然后将其保存在对象类中? 如果你有几个被邀请的人,你甚至可以将它们存储在一个 NSArray 中并将它们写入磁盘上的一个文件(使用 writeToFile: 方法),然后在启动时检索它(使用 initWithContentOfFile: 方法NSArray)。在这种情况下,为 20 个条目设置数据库是多余的,请将数据存储到文件中。【参考方案2】:

JSON 或 SOAP 之类的方法是将结构化数据从 Web 服务获取到 iPhone 应用程序中的对象中。

使用 SQLite 在 iPhone 上存储关系数据很容易。 Here's a decent looking tutorial.

编写一个数据层,抽象出对数据库的调用,避免在代码中不应该出现的地方(如 UI)中散布 SQL 查询,从而使事情变得简单。

【讨论】:

以上是关于大型数据库 - 在设备上显示数据的最佳方式?的主要内容,如果未能解决你的问题,请参考以下文章

大型 3D 场景流式传输

将大型数据框导出到 Power BI 可以使用的单个文件的最佳方式

在 python 中处理大型数据集的最佳方法

sklearn Clustering:在大型数据集上确定最佳集群数量的最快方法

大型施工程机械设备资产管理融资租赁方案

大型数据集的最佳数据库引擎