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

时间:2017-07-10 16:54:05

标签: string utf-8 cassandra ascii cql

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

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

1 个答案:

答案 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"