データベースの観点からリアルタイムデータを処理する方法


14

私は念頭に置いて考えていますが、それでもデータベース領域を混乱させます

ことを想像し、私はリアルタイムデータを表示したい(し、最新のブラウザ技術の一つを用いてウェブソケットは -にも使用して古いブラウザを、それが何をしているのか、誰もすべての観測(ユーザーのブラウザ)に表示するために非常に簡単です)。

レミー・シャープは、これについての単純さについての例を持っています。

しかし、私はまだデータベース部分を取得していません、どのようにフィードするのですか?データベースに接続された各ユーザーのパスを保存、クライアントが何が起こっているのかを見たい場合は(Remy game Tronを使用して)想像してみましょう5秒の遅延が、彼はその瞬間まで、その、5秒だけでなく、表示されます時間に継続を ...

そのようなDBにクエリするにはどうすればよいですか?

SELECT x, y FROM run WHERE time >= DATEADD(second, -5, rundate);

推奨されるパスではありませんか?

そして、このxをx時間で引き出します...これは、実際のデータフィードが正しくありませんか?

誰かがデータベースの観点を理解するのを手伝ってくれるなら、私は大いに感謝します。

回答:


7

リレーショナルデータベースは、リレーションシップ用に最適化されています。 時系列データベースは、時間とともに変化する一連の値を格納および操作するために最適化されています。産業界では、これらを「歴史家」と呼びます。おそらく最も有名なのはOSIのPIです。

特定のポイントの値を格納していなくても、既知のポイント間で補間できる場合でも、特定のポイントの信号セットに対してクエリを実行できます。

ただし、各クエリは1つの時点のみを提供します。まだポーリングする必要があります。

時系列データベースのテーマに続き、openPDCを調べてくださいPhasor Data Concentratorは送電網に固有ですが、時系列の歴史家です)。具体的には、この引用:

ローカルヒストリアンアーカイブからイベントを再生し、大きなデータセットを抽出するために使用できるストリーミング再生ユーティリティ

それは本当にあなたが望むものです...何らかの種類の再生メカニズム。

本当にデータベースが欲しいとは思わない。多くのFIFOが必要です。


7

リアルタイムとデータベースは互いに関係ありません。

レーダー(およびヒートポンプと船舶制御システム)を作成したとき、リアルタイムデータは完全にバッファと共有メモリに存在することがわかりました。

データは、その後の分析および取得のためにデータベースに送信される場合あります。ボリュームは小さくなければならないため、要約、ダイジェスト、またはデータのサンプルが永続ストレージに送られます。

ただし、実際のリアルタイムデータは、信頼性を高めるためにメッセージキューを介してネットワークに流れ、インスタント(ただし、壊れやすい)通知を行うためにUDPパケットを流れます。


4

この質問につまずいたのは、あなたがこの間違ったことを考えていると思いますが、他の答えは問題を本当に強調していません。

データベースをハンマーで打つことはあまり良い考えではありません。あなたがこれに気付いたと確信していますが、他の人はそうではないかもしれません。友人がセミリアルタイムゲームのループでphpスクリプトとJavascript AJAX関数を使用しようとしたことを覚えています。彼は、データベースに打撃を与えた1秒間に大量のクエリを実行していたため、より多くの人が参加するにつれてパフォーマンスが低下することにすぐに気付きました。

私の見方では、ユーザーとデータベースの間に位置する長時間実行するアプリケーションが必要です。ユーザーはこのアプリケーションに直接接続し、そのすべての情報をアプリに渡します。このアプリは、それらに接続している全員に情報をすぐにコピーします。これは、非常に軽量なアプリ、少ないトラフィック、非常にリアルタイムにロードされます。

データベースを使用する必要がある場合、アプリは更新のバックグラウンドキューでこれを処理する必要があります。データベースに小さな情報の壁(ゲーム内のユーザーの現在の位置など)を叩きたくないので、保存したものを選択して選択する必要があることは明らかです。と。位置の代わりに、5秒以上移動した距離またはその他の意味のある情報を保存します


1

このサイトには、いくつかの「リアルタイム」機能があります。多くのトラフィックの多いサイトには、Webサーバーとデータベースの間に多くのおもちゃがあることがわかります。Redisは、メモリにデータを保持するために使用できるものです。さまざまなスタックに他のものがあると確信しています。

Firebase.comは優れたリアルタイムデータサービスだと思います(実際のデータベースバックエンドで何をするのかはわかりませんが、それを提供しているので、好奇心以外に本当に気にかけているかどうかはわかりません)。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.