我们支持一个有一些糟糕设计的应用程序。此应用程序将数据存储在文本列中的Cassandra集群中,有时会在该列中写入相当大的字符串,我们将得到一个WriteFailureException.
Cassandra对写入大小有限制(默认为16 is:kb),这是很好的。我们想通知用户,如果达到这样的限制,他们正在尝试编写大量数据。据我所知,没有办法区分这个异常是因为这个限制而发生的,还是由于Cassandra集群中的任何其他错误而发生的。
在试图用Cassandra编写它之前,检查日期的大小是否超过了极限的会更好。Java是UTF-16,Cassandra的文本是UTF-8,所以我天真的方法是将字符串转换为UTF-8,并检查它的大小:s.getBytes(StandardCharsets.UTF_8).lenght()
然而,这似乎是相当昂贵的转换字符串到UTF-8,只是为了扔掉它。有什么明智的办法吗?在编写数据之前,人们如何检查数据是否符合卡桑德拉的要求?
Java 8,Cassandra 3.11
https://stackoverflow.com/questions/67572280
复制相似问题