web-dev-qa-db-ja.com

ビッグデータWebアプリの設計

ユーザーが大量のユーザーデータをクエリできるウェブサイトをどのように設計しますか。具体的には次のとおりです。

  • 〜100TBのデータを持つ〜1億人のユーザーがいます。データは [〜#〜] hdfs [〜#〜] (データベースではありません)に保存されます
  • (同時)クエリの数は重要ではありませんが、各クエリはできるだけ高速である必要があります
  • 次のようないくつかの簡単なクエリをサポートします:IDでユーザー情報を取得する、毎月のログインや毎月のオンライン時間などの蓄積されたデータを取得する
  • クエリ結果は少ない(1つの数値または数百行)ため、フロントエンドのパフォーマンスは重要ではありません

私はこの要件にどのように取り組むかに関する思考プロセスにもっと興味があります。例えば:

  • 100ユーザーで、デザインは何ですか?
  • 1,000,000ユーザーの場合、何を変更する必要がありますか?
  • ユーザーが1億人の場合、現在のデザインは何ですか?

私は周りを検索して、キャッシュ、負荷分散などについて話している多くの人々を見てきました...もちろん、これらの手法は便利で使用できますが、Nユーザーの処理に役立つことをどのように知っていますか?この点について誰も説明していないようです。

1
Minh Thai

それはかなり基本的な数学です。

ボトルネックはデータベースではありそうにありませんが、帯域幅です。

最大帯域幅を取り、予想されるユーザー数で割り、オーバーヘッドの15%を差し引きます。

本当に無制限の帯域幅がある場合は、データベースのスループットを使用して同じ計算を行ってください。

0
Nelson

現時点でクラウド技術では、データの読み込みを処理するために他の人がすでに設計したものを採用します。あなたは少しのデータを持っていますが、私はこれらのデータと将来の記録を次のようなものに入れます GoogleのBigQuery

  • SQL経由でのクエリが簡単、
  • クエリで支払う
  • 多くの、多くのペビバイトを処理し、
  • ウェブ/モバイルアプリに簡単に埋め込まれ、
  • 維持 キャッシュはすでに

設計上、キャッシュされていないクエリの慣性時間がありますが、上記のすべてを設計、スケーリング、スクリプト化、支払い、および維持しようとすると、すぐに逃げてしまいます。

1
Jé Queue