Cassandra:差异b/w TEXT(VARCHAR)和ASCII

Ted*_*ing 7 string ascii cql utf-8 cassandra

我知道text和varchar是别名,它们存储UTF-8字符串.怎么样的ASCII,在文档中说"US-ASCII字符串"?除编码之外有什么区别?

有什么尺寸差异吗?当我存储大字符串(~500KB)时,这两者之间是首选吗?

ruh*_*hul 10

关于这个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更节省空间.同样,所有事情都取决于您如何序列化/编码/解码这些数据.如需更多退房,请参阅"选择优势-ascii-encoding-over-utf-8 "