我理解text和varchar是别名,它们存储UTF-8字符串。 怎么样的ASCII,在文档中说" US-ASCII字符串"?除了编码之外还有什么区别?
有任何尺寸差异吗?当我存储大字符串(~500KB)时,这两者是否是首选?
答案 0 :(得分:9)
关于this anwer:
如果数据是一段文本,例如Java中的String,它在运行时以UTF-16编码,但在使用文本类型在Cassandra中序列化时,则使用UTF-8。 UTF-16每个字符总是使用2个字节,有时使用4个字节,但UTF-8的空间效率很高,并且根据字符长度可以是1,2,3或4个字节。
这意味着有CPU工作来序列化这些数据以进行编码/解码。同样取决于例如158786464563的文本,数据将以12个字节存储。这意味着使用更多空间和更多IO。
注意cassandra提供了遵循US-ASCII字符集的ascii类型,并且每个字符始终使用1个字节。
有任何尺寸差异吗?
是强>
当我存储大字符串(~500KB)时,这两者之间是否是首选?
是强>
因为ascii比UTF-8更节省空间,UTF-8比UTF-16更节省空间。同样,所有事情都取决于您如何序列化/编码/解码这些数据。如需更多退房,请参阅" what-is-the-advantage-of-choosing-ascii-encoding-over-utf-8"