我正在使用 Snappy-java 对 JSON 数据进行编码,我想将结果存储在数据库中的 varchar 列中。
数据库为oracle数据库,编码为ISO-8859-1。
我在插入数据时遇到编码问题。 Oracle 似乎无法识别某些字符。
我找到了一种解决方法,即在插入压缩数据之前对其使用 Base64 编码。然后我就可以很好地检索它:)
问题是 Base64 编码增加了我要存储的数据的长度,从而减少了使用 Snappy 节省的成本...
所以我的问题是:如何存储该数据而不用 Base64 进行编码? 我想使用 varchar 的原因是因为我希望能够使用 oracle 索引访问表而无需访问表(性能绝对是一个问题)。
我也尝试过其他压缩算法,但它们似乎都有同样的问题。 我也看过 yEnc 但我找不到任何 java 编码器。而且我不确定我是否理解 yEnc 列出的所有问题,所以我有点不愿意使用它。
非常感谢您的帮助!
最佳答案
您正在压缩数据。压缩的结果几乎总是二进制数据,而不是文本......我认为 Snappy 也是如此。
要准确地将二进制数据存储为文本,您应该使用诸如 Base64 之类的东西。您没有有字符 - 您有字节。
为了有效地存储压缩文本,您应该将数据库列更改为面向二进制的类型而不是面向文本的类型(基本上是 BLOB 而不是 CLOB)。
关于java - 在 varchar 列中存储快速编码数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11689749/