在Cassandra中存储媒体文件

nsk*_*nsk 3 cassandra

我试图将音频/视频文件存储在数据库中.

卡桑德拉能够做到吗?如果是的话,我们如何在cassandra中存储媒体文件.

如何在cassandra中存储元数据和原始音频文件

Nad*_*'El 7

是的,Cassandra绝对能够将文件存储在其数据库中,作为"blobs",字节串.

但是,这个用例并不理想:

首先,你的blob大小有限.硬限制是2GB大小,所以大视频是不可能的.但更糟糕的是,Datastax(Cassandra开发背后的商业公司)的文档表明即使1 MB(!)太大 - 请参阅https://docs.datastax.com/en/cql/3.1/cql/cql_reference/blob_r. HTML.

巨大blob存在问题的原因之一是Cassandra没有提供用于获取部分内容的API - 您需要在一个CQL操作中读取(并写入)blob,这会打开各种问题.因此,如果你想在Cassandra中存储大文件,你可能希望将它们分成许多小blob - 而不是一个大blob.

接下来的问题是,当数据库包含文件时,某些Cassandra的实现效率很低(即使分成一堆较小的blob).其中一个问题是压缩算法,它最终会在磁盘上反复复制所有数据(对数次数); 针对存储文件而优化的实现将单独保存文件数据和元数据,并且仅"压缩"元数据.不幸的是,Cassandra和Scylla都没有实现这样的文件格式.

总而言之,您可能最好在Cassandra中存储元数据,但在不同的对象存储实现中存储实际的文件内容.