我正在尝试使用Datastax Academy数据建模课程中的公式计算具有任意数量的列和类型的表中每行的分区大小。
为了做到这一点,我需要知道一些常见的Cassandra数据类型的“字节大小”。我试图谷歌这个,但我得到了很多建议,所以我很困惑。
我想知道字节大小的数据类型是:
当然,对于Cassandra中的数据类型大小,也会有任何其他考虑因素。
添加更多信息,因为它似乎令人困惑,因为我只想估计“最糟糕的磁盘使用情况”,数据会占用任何压缩和Cassandra在幕后完成的其他优化。
我正在关注Datastax学院课程DS220(请参阅最后的链接)并实施公式,并将此处的答案中的信息用作该公式中的变量。
https://academy.datastax.com/courses/ds220-data-modeling/physical-partition-size
答案 0 :(得分:10)
我认为,从实用的角度来看,在设计时使用ds220课程中的公式获得最坏情况的背面估计是明智的。压缩的影响通常取决于数据中的算法和模式。来自ds220和http://cassandra.apache.org/doc/latest/cql/types.html:
uuid: 16 bytes
timeuuid: 16 bytes
timestamp: 8 bytes
bigint: 8 bytes
counter: 8 bytes
double: 8 bytes
time: 8 bytes
inet: 4 bytes (IPv4) or 16 bytes (IPV6)
date: 4 bytes
float: 4 bytes
int 4 bytes
smallint: 2 bytes
tinyint: 1 byte
boolean: 1 byte (hopefully.. no source for this)
ascii: equires an estimate of average # chars * 1 byte/char
text/varchar: requires an estimate of average # chars * (avg. # bytes/char for language)
map/list/set/blob: an estimate
希望有所帮助
答案 1 :(得分:1)
估算与某事物相关的开销的唯一可靠方法是实际执行度量。实际上,您无法获取单个数据类型并对其进行概括。如果您有4个bigint
列,并且您认为您的开销是X,那么如果您有400 bigint
列,您的开销可能会达到100倍。这是因为Cassandra在将数据存储到磁盘之前压缩(默认情况下,它是每个列族的设置tunable)。
尝试在群集中加载一些数据,我的意思是生产数据,然后让我们知道您的结果和压缩配置。你会发现一些惊喜。
了解您的数据。