0

在我的数据库中有大量数据(兆字节数据)。它们都是图像(url)。我们如何在手机(android,iPhone)中显示这些数据。获取该数据的更好方法是什么?我的意思是如何在显示所有数据的同时提高性能?

请告诉我。

4

5 回答 5

1

如果您只从数据库中获取图像 URL 而不是使用 NSThread 调用手机中的其他函数,它将在后台加载图像,您的应用程序将为您提供更好的性能。

于 2012-11-20T05:44:49.170 回答
0

我从您的问题中了解到,该数据库仅包含图像 URL而不是实际的图像二进制数据。正确的?

如果是这种情况,我会假设您想从数据库中检索图像 URL,然后从 Internet 获取实际图像。

考虑缓存用户最有可能查看的图像,甚至可以在后台服务中预取它们。

显示它们时,您肯定需要一个专用线程,以便您的应用程序保持响应。

于 2012-11-20T05:02:35.680 回答
0

解决方案取决于您的数据库是静态的还是动态的。如果整个数据是静态的,我会将其压缩到 Android 的 Assets 文件夹中并直接从那里使用它,从而避免任何网络问题。

如果这是动态的,您将不得不创建 Web 服务,它只获取在特定视图中可见的那些数据,或者在开始时获取所有数据,然后只进行增量同步。

于 2012-11-20T04:58:29.780 回答
0

人们说不要将大型二进制对象放入数据库的原因有很多,这就是其中之一。

数据库不是,也永远不会是文件系统。它用于存储关系数据,而不是二进制数据。还有其他数据库平台可用作文档存储,这正是您在这里所需要的。

在某些时候,您将需要备份您的数据库,如果它是数百 GB 的大小,这将被证明是困难的和 CPU 密集型的。恢复将需要更长的时间。rsync如果它们都是普通文件,这种事情将是微不足道的,并且需要编写一些脚本。

我的建议是要么利用 Amazon S3 之类的现有解决方案,要么将文件路径存储在数据库中,并像处理任何其他静态文件一样提供文件,只需让它们在公共 URL 上可用即可。如果您需要一定程度的安全性,通常通过使 URL 充分随机化来隔离该内容就足够了,因为大多数移动应用程序不能有效地使用会话或 cookie。

于 2012-11-20T04:51:42.690 回答
0

您已经完成了一项正确的工作,只需将所需的 URL 存储在 DB 中,而无需使用图像二进制文件使 DB 过载。除此之外,如果您想提高性能,您可以执行

1) 索引——索引只是一种数据结构,它根据一个或多个列(索引键)中的值提供对表中行的快速访问路径。这允许使用快速搜索技术来查找值,而不必逐行扫描整个表,从而加快数据检索速度。这可以在您的环境中大大提高性能,减少运行 SELECT 查询和取回数据所需的时间。

2) 在像 Amazon S3 这样的平台上托管您的图像将导致更快的加载时间,这肯定会提高性能。

于 2012-11-20T05:22:38.010 回答