2017-06-24 5 views
2

私はYouTubeのような音楽ストリーミングウェブサイトは、負荷分散と高可用性のために、シャードされたDB(ビデオカテゴリのようないくつかの基準に基づいて)を使用している必要がありますと信じています。しかし、このようなリアルタイム/ストリーミングのためには、io/DBからの読書はうまくいかないと思います。彼らは(memcacheクラスタのように)すべてのビデオをメモリに保存するのか、人気のあるビデオだけを保存していますか?youtubeのような音楽ストリームウェブサイトのメモリキャッシュ/ CDNの役割?

さらに、CDNはすべての動画をキャッシュしますか?たとえば、 - New Yorkのユーザーが1日に100万の動画を見た場合、New YorkのCDNサーバーにキャッシュされます(上限サイズに関する制約など)。ビデオが見つからない場合、 はウェブサーバーにのみ当たっていますか?

答えて

2

ビデオファイルは非常に重い内容で、ファイルシステムやファイルシステムのように機能するいくつかのソフトウェアレイヤーに格納されているようです。別の方法は、ビデオメタデータ、ユーザー情報、統計などを格納する方法です。原則として、そのような種類のシステムは異なるデータソースとデータベースを使用します。

たとえば、ビデオファイルとそのサムネイルをファイルシステムに保存することができます。キーの値のストレージ(列指向のデータベース)のようなもので、ファイルのタイトル、説明、キーワード、ファイルの場所などのメタ情報。このようなdbsは高速で、スケールが容易です。 YouTubeの動画リンクのフォーマットはwww.youtube.com/watch?v=<code>です。コードは動画のユニークキーです。検索、統計、課金などのために、これらの目的に適した別のデータソースを使用しているようです。

このpostによると、YouTubeはMySqlデータベースを使用しています。しかし、明らかに、パフォーマンス、可用性、およびスケーラビリティを向上させるために、多くの制限とチューニングオプションを使用しています。

CNDは、高負荷のジオ分散スタティックトラフィックに対処するための標準的なアプローチのようなものです。 AWS、Microsoft Azureなどの大手クラウドプロバイダーのほとんどすべてがCNDをサービスとして提供しているため、CNDのみを設定する必要があります。もちろん、自分でビルドすることもできますが、これには多くのソリューションがあります。

独自のビデオホスティングを実装する場合は、ビデオや関連情報の保存方法、トラフィックの処理方法などを考慮する必要があります。シンプルなソリューションのためには、単純な1つのリレーショナルまたはドキュメントデータベース、ファイルシステム+ CDNにすることができます。

+0

'ビデオファイルは非常に重いコンテンツで、ファイルシステムやファイルシステムのように機能するいくつかのソフトウェアレイヤーに格納されているようです.'なぜビデオファイルもDBに保存しないのですか? DBよりもファイルシステムに格納する利点は何ですか? – user3198603

+0

数KBまでの小さなBLOBをDBに格納することはできますが、巨大なものはほとんどありません。それに関する多くの記事があります。例えば、これらのhttps://softwareengineering.stackexchange.com/questions/150669/is-it-a-bad-practice-to-store-large-files-10-mb-in-a-database、http:// sqlmag .com/storage/storage-blobsデータベース/ファイルシステム、https://stackoverflow.com/questions/211895/storing-documents-as-blobs-in-a-database-any-disadvantages –