2

私は現在、YouTubeビデオのランク/ビューを監視するシステムを設計しています。毎日たくさんのYouTubeビデオ(> 500.000以上)。

私は現在これをMySQLデータベースに保存することを検討していますが、私を悩ませているのは、テーブルが数十億から数兆の行に成長することです。これはうまく機能しないと思います。

このデータを分析する必要があります。例:

  • XとYの間でどの動画が大きく成長したか
  • 1日あたりのクリック数をプロットする
  • 週あたりのクリック数をプロットします...
  • まだ知らないことがいくつかあります

それで、私のWeb 2.0の頭に浮かんだのは、NoSQLデータベースがこれをより適切に処理できる方法はあるのでしょうか。私はこれらの(ほとんど)新しいデータベースを完全には学びませんでしたし、それらが何ができるのかわかりません。

あなたのアドバイスは何ですか、どのタイプのデータベースを使用しますか?リレーショナルかどうか?そうでない場合、どのNoSQLデータベースですか?

PS:最優先事項は結果の迅速な評価と挿入であり、2番目は高可用性(または単に複製)です。

4

1 に答える 1

2

データベースシステムは常に依存しているため、アドバイスを与えることは非常に困難です。ただし、FacebookがMySQLに基づいて構築されていることを考えると、おそらくパフォーマンスがMySQLに制限されていないことを示しています。

役立つこととおそらくあなたがやったことは、テーブル構造がどのように見えるべきかという構造を作成することです。次に、テーブルに対して実行するクエリについても考えます。

適切なインデックス(クエリ速度が依存する主な重要な要素)があれば、MySQLのパフォーマンスについて心配する必要はありません。考慮すべきことは(私が経験しなければならなかったこと)、MySQLがインデックスを処理する方法には多くの興味深いことがあるということです。その間に私が理解しなければならなかったいくつかの例を挙げましょう:

  • 範囲スキャンにインデックスを使用する場合、そのインデックスは使用できなくなりORDER BYます
  • 完全なインデックスを使用するには、範囲列が連結インデックスの最後である必要があります。これも同じですORDER BY

詳細については、mysqlperformanceblog.comの便利なリンク:http ://www.mysqlperformanceblog.com/2009/09/12/3-ways-mysql-uses-indexes/

一般に、データベースの構造がよく考えられており、インデックス付けが適切であれば、私の経験では、実際には10,000行または100億行しかない場合でも、クエリ時間はほぼ同じになります。

于 2012-06-29T20:36:11.553 に答える