Cassandra的哪些限制使其在特定场景下不如其他数据库?
- 内容介绍
- 文章标签
- 相关推荐
本文共计941个文字,预计阅读时间需要4分钟。
当家庭使用Cassandra时,往往容易忽视Cassandra本身的限制。在Wiki中,我们可以看到Cassandra的局限性包括:
+ Cassandra的局限+ Cassandra的设计局限+ 这类局限是在当前体系结构中无法改变的。
大家在使用Cassandra的时候,往往容易忽视Cassandra本身的限制。
在Wiki中,我们可以看到Cassandra的限制:CassandraLimitations
Cassandra的设计限制这一类限制是在当前的体系架构中无法改变的。
每一个key对应的value不能超过磁盘本身的容量限制。
这是因为Cassandra是将每一个key对应的value存储在本地磁盘上面的,所以当某一个key对应的vaule的大小超过了本地磁盘的容量上限,那么当Cassandra记录commitlog的时候就会失败,写入到SSTable中同样会失败。
这一点与Hadoop中的DFS不同,DFS是将本机分块存储的,所以无所谓文件的最大上限。
Cassandra当前的版本限制这一类限制是在可以通过修改代码和版本升级改变的。
key的长度大小限制在65535之内
这个限制是由于Cassandra内部在将key写入到磁盘的时候,采用的是java.io.DataOutputStream.writeUTF(String, DataOutput),这个方法内部对key的大小有一个65535的限制。
本文共计941个文字,预计阅读时间需要4分钟。
当家庭使用Cassandra时,往往容易忽视Cassandra本身的限制。在Wiki中,我们可以看到Cassandra的局限性包括:
+ Cassandra的局限+ Cassandra的设计局限+ 这类局限是在当前体系结构中无法改变的。
大家在使用Cassandra的时候,往往容易忽视Cassandra本身的限制。
在Wiki中,我们可以看到Cassandra的限制:CassandraLimitations
Cassandra的设计限制这一类限制是在当前的体系架构中无法改变的。
每一个key对应的value不能超过磁盘本身的容量限制。
这是因为Cassandra是将每一个key对应的value存储在本地磁盘上面的,所以当某一个key对应的vaule的大小超过了本地磁盘的容量上限,那么当Cassandra记录commitlog的时候就会失败,写入到SSTable中同样会失败。
这一点与Hadoop中的DFS不同,DFS是将本机分块存储的,所以无所谓文件的最大上限。
Cassandra当前的版本限制这一类限制是在可以通过修改代码和版本升级改变的。
key的长度大小限制在65535之内
这个限制是由于Cassandra内部在将key写入到磁盘的时候,采用的是java.io.DataOutputStream.writeUTF(String, DataOutput),这个方法内部对key的大小有一个65535的限制。

