Cassandra:存储和检索大型值(50MB到100MB)

Cassandra:存储和检索大型值(50MB到100MB),cassandra,Cassandra,我想从Cassandra存储和检索50MB到100MB的值 根据文档,当列值大小小于10MB时,Cassandra工作良好。提及 我的桌子如下。有不同的方法吗 CREATE TABLE analysis ( prod_id text, analyzed_time timestamp, analysis text, PRIMARY KEY (slno, analyzed_time) ) WITH CLUSTERING ORDER BY (analyzed_time

我想从Cassandra存储和检索50MB到100MB的值

根据文档,当列值大小小于10MB时,Cassandra工作良好。提及

我的桌子如下。有不同的方法吗

CREATE TABLE analysis (
    prod_id text,
    analyzed_time timestamp,
    analysis text,
    PRIMARY KEY (slno, analyzed_time)
) WITH CLUSTERING ORDER BY (analyzed_time DESC)

至于我自己的经验,虽然理论上卡桑德拉可以处理大斑点,但在实践中可能真的很痛苦。至于我过去的一个项目,我们用C*存储protobuf blob,大小从3kb到100kb不等,但其中有一些(~0.001%)大小高达150mb。这造成了以下问题:

  • 写超时。默认情况下,C*有10秒的写入超时,这对于大的blob来说实在是不够的
  • 读取超时。读取超时、读取修复、提示切换超时等也存在同样的问题。您必须调试所有这些可能的故障并引发所有这些超时。C*必须将整个重行从磁盘读取到RAM,这很慢
我个人建议不要对大斑点使用C*,因为它不是很有效。还有其他选择:

  • 像HDFS这样的分布式文件系统。在C*中存储文件的URL,在HDFS中存储文件内容
  • DSE(商业C*发行版)在C*之上有自己的分布式FS,称为CFS,可以很好地处理大型文件
  • 重新考虑您的模式,使其具有更轻的行。但这实际上取决于您当前的任务(而且原始问题中没有足够的信息)

至于我自己的经验,虽然理论上卡桑德拉可以处理大斑点,但实际上可能会非常痛苦。至于我过去的一个项目,我们用C*存储protobuf blob,大小从3kb到100kb不等,但其中有一些(~0.001%)大小高达150mb。这造成了以下问题:

  • 写超时。默认情况下,C*有10秒的写入超时,这对于大的blob来说实在是不够的
  • 读取超时。读取超时、读取修复、提示切换超时等也存在同样的问题。您必须调试所有这些可能的故障并引发所有这些超时。C*必须将整个重行从磁盘读取到RAM,这很慢
我个人建议不要对大斑点使用C*,因为它不是很有效。还有其他选择:

  • 像HDFS这样的分布式文件系统。在C*中存储文件的URL,在HDFS中存储文件内容
  • DSE(商业C*发行版)在C*之上有自己的分布式FS,称为CFS,可以很好地处理大型文件
  • 重新考虑您的模式,使其具有更轻的行。但这实际上取决于您当前的任务(而且原始问题中没有足够的信息)

较大的值可能会有问题,因为协调器需要缓冲堆上的每一行,然后再将它们返回给客户端以回答查询。无法流式传输分析文本值


在内部,Cassandra也没有优化以很好地处理此类用例,您必须调整许多设置以避免出现shutty所描述的问题

较大的值可能会有问题,因为协调器需要缓冲堆上的每一行,然后再将它们返回给客户端以回答查询。无法流式传输分析文本值

在内部,Cassandra也没有优化以很好地处理此类用例,您必须调整许多设置以避免出现shutty所描述的问题