2016-08-21 7 views
1

ライブレコードを使用してデータベースを構築する方法については、ただdownvoteだけではありません。私はコードを期待していません。ライブデータベースを構築する(アプローチ)

現時点では、私は約2000人のユーザーを持つMySqlデータベースを持っていますが、それ以上のものになっています。各プレイヤー/ユーザーには、いくつかのポイントがあり、特定のアクションによって増加または減少しています。

私の目標は、このデータベースは毎秒約リフレッシュしますと、より多くのポイントを持つユーザが上に移動し、他の人が下に移動...とそう

に私の質問は、このための最良のアプローチは、「生きているものを、ということですレコードは毎秒更新する必要があります。 My SQLでは、SQLコマンドを実行している時間ベースのアクションを実行できますが、これは私が思う最大の方法ではありません。誰かがこれを処理する良い方法を提案することができますか?例えば。 MongoDBのような他のデータベースプロバイダやその他何か?

EDIT

このクライアント側を動作しませんので、私は単にいくつかの時間ベースのイベントによるdatabseにそれを投稿/プッシュすることはできません。説明のために:ユーザは、アプリケーション内で彼のキャラクターを訓練している。このトレーニング(1レベルアップ)には12時間かかります。時間が経過した後、レコードはデータベース内で自動的に更新されるべきです。ユーザーが自分の投稿要求を送信しない場合(ユーザーがログインしていない場合)、他のユーザーは更新されたデータをプロファイルに表示する必要があります。

+0

プレーヤーの動作が発生した場合は、テーブルに格納します。データのライブビューを取得するには、GUIを更新するたびに特定のクエリを実行してください。 –

+0

特定のタスクを完了するのに約1日以上かかるため、これは簡単ではありません。ユーザーがログインしたときにイベントを1日かかりますが、1週間後にログインすると、サーバーにプッシュ/ポストすることができます。この時点では、レコードの更新はありません。 @juergend – Anokrize

+0

この目的のためにjquery ajaxを使うことができます –

答えて

1

ランキングはある程度古くなるという事実を受け入れる必要があります。あなたの苦境は、他のゲームプラットフォーム(またはそれに関するSOのランキング)と変わりありません。ビジネス上の意思決定が行われ、陳腐化のレベルについて絶えず見直されました。たとえば、ここでタグのリーダーボードを取る。または、プロファイルページを持つ最近の変更は、午前4時GMTよりもずっと頻繁に更新されました。

MySQLイベントの使用を検討してください。これは、cronタスクの必要性を置き換える組み込みの機能です。興味があれば私のプロフィールページから3つのイベント関連リンクがあります。あなたはタイムスケジュール(陳腐化の耐性)でランクを計算することができ、ユーザーの要求は高速になります(ゴードンよりも速い)。反対側では、彼らは失効しています。

ランク情報を保存(書き込み)するのではなく、他のデータのスロットを埋めることに集中してください。そして飛行機であなたのランキングを取得してください。たとえば、Gordonのこのランキングの回答hereを参照してください。それは動的であり、少なくともその瞬間に要望に応じて実行され、イベントを必要としません。

UXに許容できるものを決めるだけでよいことを理解してください。

+0

非常に詳細な答えをありがとう。だからあなたは私にMySQLのイベントを使って提案しますか?ランキングを10秒ごとに計算するのと同じようなものか?それを使って数千のレコードを計算することは可能ですか?これは非常に遅いですか?はいの場合は別の解決策がありますか? – Anokrize

+0

いくつかの重要な事実を見逃した場合、私の編集を参照してください。 – Anokrize

関連する問題