19

我是 Android 应用程序开发的新手,也是 stackoverflow 的新成员。我目前正在尝试设计一个食谱应用程序。我已经决定了应用程序的功能及其涵盖的范围。就涵盖来自世界各地的所有食谱而言,范围对我来说非常广泛。在这个过程中我要处理很多数据。

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

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

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

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

一旦我从上述数据库中提取数据,我还有一个关于数据格式的问题。有没有办法可以保留我的数据格式?

如果有人可以分享他们对上述情况的知识渊博和专家评论,我将不胜感激。这对我来说也不是功课,我也不是在寻找任何现成的代码解决方案。我只是在寻找可以帮助我理清思路并帮助我做出决定的提示/建议。我一直在寻找这个一段时间,但无法找到具体信息。我希望我能从可能遇到过类似情况的有经验的人那里得到一些好的建议。

感谢您阅读这篇长文。

4

4 回答 4

11

将这两种方法结合起来怎么样?

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

  • 一些远程数据库通过一些 HTTP 接口访问,您可以在其中读取/写入整个数据库。如果您希望用户能够添加收据以供其他用户查看,则无论如何您都需要一个外部数据库。

SQLite:这可能是一个不错的选择,但会很慢,因为它需要访问文件系统。

访问本地数据库非常快,如果只是对小型数据库的简单只读查询,则需要 5 毫秒左右。

但是,不同手机上的存储可能会受到限制

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

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

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

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

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

我建议为您的数据库提供一个简单的 REST 接口,因为它非常轻量级,但不会将您的数据库直接暴露给网络。有大量关于创建此类数据库接口的教程书籍。甚至还有像nextDb这样的托管数据库服务可以为您完成大部分工作。

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

您可以将 HTML 格式的数据存储在您的数据库中并以 aWebView或 a TextView(via Html#fromHtml()) 显示它——两者都可以显示格式化的文本。

数据库不关心您存储的文本类型,为了通过 Internet 传输,您可能需要对文本进行编码,使其不会干扰传输格式(XML、JSON 等)。

于 2012-08-19T17:35:12.480 回答
2

A simple way is to integrate Parse into your app. They have a nice framework that easily integrates into iOS and Android. Their plan is freemium, so you'll be able to use up to 1 million API request for no charge, and then its 7 cents for every request after that.

You'll have 1gb to store all your data sets / images, etc.

I don't use parse for everything, but I HIGHLY recommended it for large data schemes because they do all the scaling for you. Check out the API, I think it would be worth your time.

I just started to work on a few of my own projects, and I'm using Parse again. I have to say it's improved a lot over the last 6-8 months. Especially with the Twitter and Facebook integration.

于 2012-08-19T17:44:00.633 回答
1

这完全取决于您的软件要求。如果您需要处理少量数据,那么您可以选择 SQLite,但对于大量数据,最好使用远程数据库。

SQLite:它在少量数据的情况下运行良好,我体验到它的响应时间很好。

远程数据库:我认为您可以使用小型服务器端应用程序将数据提交到您的客户端应用程序。它将解决/减少与线程相关的问题/复杂性。

于 2012-08-19T16:42:33.970 回答
1

这里的关键问题是数据的大小 - 任何重要的食谱数据库都太大而无法存储在手机上恕我直言,因此您似乎坚持使用远程数据库解决方案。

与尝试从 android 访问远程数据库相反,我建议您在 Web 应用程序之间使用 aa go,它将处理来自应用程序的请求并返回您需要的 JSON 对象。

于 2012-08-19T16:08:10.997 回答