1

简介:首先让我向您介绍我的安卓应用程序。它是一个美食评论应用程序,可让用户对餐厅的特定食物进行评论。

应用流程: 1. 用户启动应用。2. 弹出附近餐馆列表。3. 用户选择餐厅。4. 显示所选餐厅的菜单列表。5. 用户选择他/她希望对其进行评论/查看评级的食物。

到目前为止的进展:我使用 Google Place API 来获取附近餐馆的列表。但是 API 没有给出餐厅食物(菜单)的可搜索列表。

问题:菜单和餐厅都需要与菜肴的评论一起存储在数据库中。如果我为餐厅制作一张桌子,为餐厅的菜单制作另一张桌子,那么搜索和检索时间将变得非常巨大。

需要:你能告诉我我应该如何设计我的数据库,以便检索时间少到微秒。我是否需要使用一些第三方应用程序在尽可能短的时间内检索记录。

请尽快回复。

4

2 回答 2

1

首先,我不会直接从您的应用程序连接到数据库。应用程序可以被破解,并且用户可以自由支配您的数据库。我将构建一个 RESTful 服务,您的应用程序将与之交互。然后可以通过缓存层和数据库持久层的组合来支持该 RESTful 服务。

就数据库持久层的设计而言。我个人可能会选择 NoSQL 方法,这样您就可以简单地为每家餐厅检索一个对象,然后访问该餐厅的菜单数据,因为这可以让您在需要时为每家餐厅拥有不同的数据结构。

但是,如果您认为每家餐厅的菜单结构可以规范化以便可以使用关系数据库,那么请随意采用这种方法。即使您跨多个表进行查询,设计良好的数据库模式也应该非常符合您的需求。特别是如果您在数据库前面使用数据缓存(memcached 或类似)。

现实情况是,就获得最佳整体响应时间而言,内存缓存将成为您最大的资产。

于 2012-07-24T16:00:06.080 回答
0

Android 应用程序不使用 MySQL——开销会很大。如果他们完全使用 SQL,他们就会使用 SQLite。

有关可通过内置 API 获得的数据存储选项的更多信息,请参阅http://developer.android.com/guide/topics/data/data-storage.html 。

于 2012-07-24T15:58:34.680 回答