2017-10-03 11 views
2

私はユーザーがデータに関するレポートを実行できるWebアプリケーションを持っています。問題は、作業しているデータのためにクエリが非常に遅いことです。レポートデータをAWS DynamoDBに一時的に保存しますか?これは実行可能なソリューションですか?

私はこのプロセスを非同期にし、別のマシンでそのスレッドを処理することを考えていました。そのデータをクエリしてAWS DynamoDBに入れ、ユーザーに通知します。

データは、ほとんどの場合(行と列のみ)フラットです。通常、レコードのサイズは、100s、1000s、10000sの範囲にあります。

これは良い考えですか?パフォーマンスはどのようなものでしょうか?

+1

レコードサイズの単位は何ですか?それを再度クエリする方法と、DynamoDBからのクエリの性質について教えてください。 – Ashan

+0

私は少し混乱しています。あなたが求めていることをさらに明確にすることはできますか? – mute

+0

レコードサイズが100s、1000s&などのレポートデータを保存すると、100とは何ですか? MB、KB、行や列などですか? – Ashan

答えて

1

クラシック建築の答え:あなたの実行時間の長いクエリが他のダイナモテーブル(複数可)上にある場合は、ダイナモに結果を格納することは、いくつかの意味があります

  1. を「それが依存」。 (既に使用している使い慣れた技術)。

  2. クエリが他のデータベースに対して実行されている場合、結果をそのデータベースの新しいテーブルまたは同じプラットフォームの新しい専用データベースに保存しないでください。

  3. また、結果をS3のファイル(json、xml、csv、...など)に書き込んでください。

+0

私は、DynamoDBからデータを取得する方が新しいデータベーステーブルからデータを取得するよりも速く、クエリを実行するよりも速いと考えていました(この場合はMS SQL Serverを使用しています)。そして...私はアプローチナンバー#3についても考えていませんでしたが、そのようなパフォーマンスは何ですか? – mute

+0

理想的には、パフォーマンスは3つのソリューションすべてで似ている必要があります(生産クラスのハードウェアと結果セットが巨大ではないと仮定します)。しかし、静的ファイルを返すことは常に最速になります... – Scrappydog

1

@ Skrappydogと同様のものが挙げられます。 DynamoDBとS3を混在させることができます。

  • S3は、ファイル内の実際のクエリ結果を格納します
  • これは、あなたがすべてのネクタイをDynamoDBのを使用できるようになると、ユーザーIDおよびS3のファイル名などの -

    1. DynamoDBのは、クエリのメタデータを格納します一緒にピースを動かす。また、コストを抑えるために、DynamoDBから大量の書き込みを保持します。

    関連する問題