具有大量数据的Android应用程序的最佳数据库设计选项

Abh*_*wal 19 database android

我是Android应用程序开发的新手,也是stackoverflow的新成员.我目前正在尝试设计配方应用程序.我已经决定了应用程序的功能和它将涵盖的范围.就覆盖来自世界各地的所有食谱而言,范围对我来说非常广阔.我将在这个过程中处理大量数据.

我目前正在尝试在我的应用程序中找到一种处理数据的好方法.到目前为止,根据我在不同论坛中的介绍,我相信在数据库选择方面我有两个选择:1)SQLite 2)远程服务器上的数据库(MySql/Postgre)

以下是我们在两者之间做出决定时的一些想法:

1)SQLite:这可能是一个不错的选择,但由于需要访问文件系统,因此速度很慢.我可以通过在AsyncTask中执行DB数据获取任务来消除缓慢.但随后可能会限制不同手机上的存储空间.此外,我相信与使用远程数据库相比,使用SQLite会更容易.

2)远程数据库:我在这里看到的问题是多个数据库请求同时出现的速度很慢.我可以在某种程度上使用线程来排队多个请求并逐个处理它们吗?有没有一种有效的方法来做到这一点.

另外,一旦我从上面的数据库中取出数据,我的数据格式就会有另外一个问题.有没有办法可以保留我的数据格式?

如果有人能够就上述情况分享他们的知识渊博和专家意见,我将不胜感激.这也不是我的功课,我不是在寻找任何现成的代码解决方案.我只是在寻找能够帮助我清除思路并帮助我做出决定的提示/建议.我一直在寻找这个,但是找不到具体的信息.我希望我能从经验丰​​富的人那里得到一些好的建议.

感谢您阅读这篇长篇文章.

zap*_*apl 11

两种方法相结合怎么样?

  • 一个本地SQLite数据库,它具有最近最少使用的receipes,因此您不需要一直使用网络.网络比访问文件系统慢.

  • 通过某些HTTP接口访问某些远程数据库,您可以在其中读取/写入整个数据库.如果您希望用户能够为其他用户添加receipes,那么无论如何都需要外部数据库.

SQLite:这可能是一个不错的选择,但由于需要访问文件系统,因此速度很慢.

访问本地数据库非常快,5ms左右,如果它只是一个小型数据库上的简单只读查询.

但随后可能会限制不同手机上的存储空间

取决于您对庞大数据库的定义.如果它只有2MB就可以存储大量纯文本的配件.

此外,我相信与使用远程数据库相比,使用SQLite会更容易.

是的,Android有一个很好的内置SQLite API,但没有远程数据库API.而且您不需要设置数据库服务器和接口.

我在这里可以看到的问题是多个数据库请求同时出现的速度很慢.

一个体面的数据库服务器可以处理数千个请求 取决于您的服务器硬件和软件.https://dba.stackexchange.com/应该有更多信息.所需的性能取决于您拥有/期望的用户数量.

我建议为您的数据库建立一个简单的REST接口,因为它非常轻量级,但不会将您的数据库直接暴露给Web.有很多关于创建这种数据库接口的教程书籍.甚至还有托管数据库服务,如nextDb,可以为您完成大部分工作.

有没有办法可以保留我的数据格式?

您可以将HTML格式的数据存储在数据库中并将其显示在a WebViewTextView(via Html#fromHtml())中 - 两者都可以显示格式化文本.

数据库不关心您存储的文本类型,通过互联网传输您可能需要对文本进行编码,因此它不会干扰传输格式(XML,JSON,...).