【问题标题】:Database time acces in Heroku with Play Framework使用 Play 框架在 Heroku 中访问数据库时间
【发布时间】:2012-12-28 05:46:51
【问题描述】:

我遇到了问题,需要你的帮助。

我正在使用 Java 中的 Play Framework v1.2.4,我的服务器已上传到 Heroku 服务器。

一切正常,我可以访问我的数据库并且一切正常,但是当我对数据库进行几次保存时,我遇到了实验问题。

我有一个方法可以在数据库中多次存储数据并返回通知给手机。我的问题是通知在数据库完成保存数据之前到达,因为当它到达时,我向服务器请求更新数据,并且它在没有最后一次更新的情况下返回数据。几秒钟后,我再次尝试更新,并且数据显示正确,因此我认为存在时间访问问题。 这个想法是,当数据库结束保存数据时,服务器会发送通知。

我不知道这是否是因为我使用的是 Heroku 服务器的免费版本,但我想在购买之前确定一下。

【问题讨论】:

    标签: database heroku playframework notifications playframework-1.x


    【解决方案1】:

    一般来说,对云数据库的所有请求总是比在本地计算机上执行相同的请求要慢。即使只是简单地查询在您的计算机上只需要 0.0001 秒,在云中也可能慢至 0.5 秒。原因是简单的云提供商使用共享数据库+(地理)复制,这只是......无法与同一台机器上仅由一个程序访问的数据库进行比较。

    另外请记住,免费的Heroku DB plans 不提供任何数据库缓存,这意味着每个查询都是直接从云端获取的。

    由于我们不了解您的应用程序,因此很难说瓶颈是什么,几乎可以肯定您至少有 3 种方法可以解决您的问题。它们不是替代品,您可能需要全部使用(或至少检查)它们。

    1. 您需要冒险一些基本计划,看看付费版本的变化,也许它对你来说已经足够了,也许不是。
    2. 重新设计您的应用程序以减少查询。例如,发送 10 个查询来选择 10 个不同的行,您需要发送一个查询,它一次选择所有 10 条记录。
    3. 使用Play's cache API 避免一次又一次地重复选择同一组数据。例如,如果您有一些类别很少更改,但您需要为每篇文章提供类别树,您不需要每次都从数据库中获取类别,而是可以将类别列表存储在缓存中,这样您就可以只需要使用一个请求来获取文章的内容(也可以缓存一小段时间......)

    【讨论】:

    • 哦,我担心我不能为我的开发应用程序支付服务器费用,所以我在我的服务器中创建了一个双线程,我用通知发送来休眠线程,以便有足够的时间移动应用程序更新没有问题。我知道这不是最好的解决方案,但现在已经足够了。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多