2017-11-07 10 views
2

オーディオ/ビデオファイルをデータベースに保存しようとしました。Cassandraにメディアファイルを保存

それはカサンドラができますか?はいの場合は、どのようにメディアファイルをcassandraに保存しますか?

どうカサンドラ

+0

https://docs.datastax.com/en/cql/3.1/cql/cql_reference/blob_r.html –

答えて

7

にメタデータと元のオーディオファイルを格納についてはい、カサンドラは、「しみ」、バイトの文字列として、間違いなく、そのデータベースにファイルを保存することができます。

まず、あなたがBlobサイズに制限されています:

しかし、それはこのユースケースのためのない理想的です。ハードリミットは2GBのサイズなので、大きなビデオは問題になりません。しかし、悪いことに、Datastax(Cassandraの開発の背後にある商用会社)の文書によれば、1 MB(!)も大きすぎると示唆されています。https://docs.datastax.com/en/cql/3.1/cql/cql_reference/blob_r.htmlを参照してください。

巨大なブロブが問題になる理由の1つは、Cassandraにはその一部を取得するためのAPIが用意されていないということです.1つのCQL操作でBLOBを読み込む必要があります。したがって、大容量のファイルをCassandraに保存したい場合、大規模なファイルを複数の小さなブロブに分割することをお勧めします。

次の問題は、カサンドラの実装の中には、データベースにファイルが含まれている場合(たとえ小さなブロブの束に分割されていても)非効率的であることです。問題の1つは、コンパクションアルゴリズムで、ディスク上のすべてのデータを何度も何度もコピーすることになります(ログの回数)。ファイルを格納するために最適化された実装は、ファイルデータとメタデータを別々に保持し、メタデータを「コンパクト」にします。残念ながら、CassandraもScyllaもこのようなファイル形式を実装していません。

オールインワンでは、メタデータをCassandraに保存する方がよいでしょうが、実際のファイルコンテンツは別のオブジェクトストア実装に保存する方がよいでしょう。

+0

大きなファイルをCassandraに保存することはできますが、小さなファイルに分割する必要があります。 –

関連する問題