【问题标题】:Soccer League Table with objectify带有 objectify 的足球联赛表
【发布时间】:2014-07-24 14:28:25
【问题描述】:

我想用应用引擎为一个小型足球联赛制作一个小后端应用程序,我考虑使用数据存储和对象化而不是传统的 SQL 数据库。

我想显示比赛日和联赛表。我还希望能够显示某些比赛日的联赛表排名。

示例: 假设当前比赛日是本赛季的第六个比赛日。我希望能够显示第四个比赛日的联赛表排名(它是 1. matchday + 2. matchday + 3. matchday + 4. matchday 的积分总和)

我将如何使用数据存储和对象化在应用引擎上建模这样的东西? 排名表的查询是什么样的?

或者这是一个很好的例子,我应该使用传统的 SQL 数据库,因为使用 SQL 你可以在你的 sql 语句中做 SUM()?

【问题讨论】:

    标签: sql google-app-engine google-cloud-datastore objectify


    【解决方案1】:

    您通常有两种选择:

    • 即时计算(可能缓存)
    • 预计算和存储

    很难说哪个更好,因为它取决于数据和查询量。在 GAE 上工作往往会使开发人员偏向于预先计算,尤其是在过去的数据没有改变的情况下。例如,每晚汇总过去的数据。现在您的查询速度很快。

    【讨论】:

    • “即时计算”在传统的 sql 数据库中似乎要容易得多。预先计算和存储也是我的第一种方法,但我认为会有另一个最佳实践建议。预先计算:例如,我想添加联赛最佳射手和球队最佳射手的球员统计数据,我必须重新计算并存储联赛的最佳射手条目,并存储每个球队的最佳射手条目和可能需要在比赛日实时重新计算。所以我想 SQL + 内存缓存对我的联盟项目会更好......你怎么看?
    • 这与 SQL 与数据存储无关。这是关于预先计算与即时计算。 sql 和 datastore 都为您提供了两种选择。由您决定和实施。考虑到您的应用程序很小,不要浪费太多时间。选择一个然后去做。您可以随时重构。
    • SQL 让很多事情变得简单,包括像 GROUP BY 这样不能扩展到大数据量的事情。在您的情况下,这可能无关紧要,因为数据量很小,但是 GAE 数据存储在阻止任何可能无法扩展到 Google 大小的活动方面有点专心致志。有权衡。如果您的数据量很小且数据结构牢固,那么 RDBMS 没有任何问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多