1

問題があり、あなたの助けが必要です。

私は Java で Play Framework v1.2.4 を使用しており、私のサーバーは Heroku サーバーにアップロードされています。

すべて正常に動作し、データベースにアクセスでき、すべて問題ありませんが、データベースにいくつかの保存を行うと、実験の問題が発生します。

データベースに何度もデータを保存し、携帯電話に通知を返すメソッドがあります。私の問題は、データベースがデータの保存を完了する前に通知が到着することです。通知が到着すると、更新データをサーバーに要求し、最後の更新なしでデータを返すためです。数秒後、もう一度更新しようとすると、データが正しく表示されるため、時間アクセスの問題があると思います。データベースがデータの保存を終了すると、サーバーが通知を送信するという考えになります。

Heroku Servers の無料版を使用しているため、これが原因かどうかはわかりませんが、購入する前に確認したいと思います。

4

1 に答える 1

2

一般に、クラウド データベースへのすべてのリクエストは、ローカル マシンでの同じ処理よりも常に遅くなります。コンピューターで 0.0001 秒しか必要としない単純なクエリでも、クラウドでは 0.5 秒ほど遅くなる可能性があります。単純な理由は、クラウド プロバイダーが共有データベース + (geo) レプリケーションを使用しているためです。これは、同じマシン上の 1 つのプログラムによってのみアクセスされるデータベースと比較することはできません。

また、無料のHeroku DB プランではデータベース キャッシュが提供されないことにも注意してください。つまり、すべてのクエリがクラウドから直接フェッチされます。

あなたのアプリケーションがわからないので、問題を解決する方法が少なくとも 3 つあることはほぼ間違いありません。それらは代替手段ではありません。おそらく、それらすべてを使用する (または少なくともチェックする) 必要があります。

  1. いくつかの基本的な計画を危険にさらして、有料版で状況がどのように変化したかを確認する必要があります。
  2. アプリケーションを再設計して、クエリの数を減らします。たとえば、10 個のクエリを送信して 10 個の異なる行を選択する代わりに、10 個のレコードすべてを一度に選択する 1 つのクエリを送信する必要があります。
  3. Play のキャッシュ APIを使用して、同じデータ セットを何度も選択することを避けます。たとえば、めったに変更されないいくつかのカテゴリがあり、記事ごとにカテゴリ ツリーが必要な場合、毎回 DB からカテゴリを取得する必要はありません。代わりに、カテゴリのリストをキャッシュに保存できます。記事のコンテンツを取得するために 1 つのリクエストのみを使用する必要があります (短い時間だけキャッシュすることもできます...)
于 2013-01-14T23:20:58.240 に答える