2

私のウェブサイト用にライブ分析のページを作成する予定です - Google アナリティクスに少し似ていますが、新しいユーザーが私のサイトなどにページをロードすると変化する実際のライブ データになります。

メイン サイトは、MS SQL データベースのバック エンドとして Asp.Net/C# を使用して作成されます。フロント エンドは、JavaScript (JQuery)、CSS3HTML5 (必要な場合) などをサポートします。

ライブ分析を行うためにどのような方法を使用できるか疑問に思っていました。アナリティクスのページにデータを取得する方法、どの効率的なグラフを使用できるか、高速な入出力でデータを保存する方法。

最初に頭に浮かんだのは、Node.jsを使用することです。これを使用して、ライブ分析のページを作成できますか? 良い考えですか?より良い代替手段はありますか?これには欠点がありますか?

Node.js を使用して Web サイトとの間ですべてのデータを送受信するには、サーバー上でC#アプリケーションを実行する必要がありますか?

MS SQLデータベースを使用しても十分に高速でしょうか? すべてのデータをライブで保存する必要がありますか、それとも x 秒/分ごとにチャンクに保存できますか? (どちらがより効率的でしょうか?)

これは、この問題に関する私の最初の考えを示しています - Live Analytics のフロー ダイアグラム

編集:

このシステムを複数のサイトで使用する予定です。一度に 10 ヒットから約 1,000,000 ヒットになる可能性があります (ほとんどありませんが、可能性はあります)。このシステムを拡張して、その環境に適応させたいと考えています。

4

2 に答える 2

4

それは、リアルタイム データがどの程度「リアルタイム」であるかに大きく依存します。たとえば、最近これを作成しました。

http://www.reed.co.uk/labs/realtime/

これは、システムに入ってくる求人応募を示しています。明らかに、繁忙期にはリアルタイムでメインデータベースにクエリを実行するにはあまりにも多くのことが行われています.イベント。

次に、「今」起こっているように、これをユーザーに再生します。SLA の一部として (ユーザーはあまり気にしない) 少しの待ち時間を設けることで、システム全体のスケーラビリティを大幅に高めることができます。

[編集 - 詳細説明]

データは、基本的なストアド プロシージャ コールから取得されるだけです。当然、リードのような大規模なシステムでは、1 秒あたり数百のトランザクションが処理されます。そのため、すべてのユーザーに対してメイン クラスターをヒットし続けることはできません。

現在のウィンドウがあることを確認するだけです。この場合は、サーバーにキャッシュされた最後の 5 分間のデータです。クライアントがサイトに来ると、最後の 5 分間のデータを取得し、今まさに起こっているかのように再生します - エンド ユーザーはそれほど賢くありません - しかし、それが意味することは、すべてのクライアントがキャッシュから読み取っていることです。キャッシュが 5 分経過したら、キャッシュを無効にして、最初からやり直します。これは、5 分ごとに最大 1 つの DB ヒットを意味します。したがって、システムのスケーラビリティが大幅に向上します (実際にそうする必要があるわけではありません。ただの楽しみのためです)。

于 2012-07-09T13:55:34.943 に答える
0

Google アナリティクスがすでにライブ ユーザー トラッキングを提供していることをご承知おきください。Google アナリティクスのサイトのダッシュボード内の場合。トップバーのホームボタンをクリックしてから、左側のバーのリアルタイムボタンをクリックします。このサービスの設計作業と品質を考慮すると、サービスの再作成を試みるよりも、これがより良いオプションであると思われます. 独自の作成に進むことを選択した場合は、少なくともそのサービスを目的の機能のベンチマークとして使用できます.

googles charting API https://developers.google.com/chart/のような API を使用すると、保存されたデータの出力を表示し、開発時間を短縮できます。予想されるヒット数と、このソフトウェアがホストされるサーバーの規模に関する詳細情報を提供すると、速度に関する質問への回答が容易になります。

于 2012-07-09T13:55:03.180 に答える