어딘가에 캐시해야하는 커다란 문자열이 있습니다. 파일로 쓸 수 없기 때문에이 유일한 옵션은 텍스트로 데이터베이스에 저장하는 것입니다. 특히, clob에서 JSON 파일의 특정 키 아래에 압축 된 문자열을 배치 할 JSON 파일을 저장하고 있습니다.문자열 압축 및 나중에 압축 해제를위한 문자열로 데이터베이스에 저장
저는 문자열을 압축하고 있습니다. 그러나 문자열 조작을 통해 데이터가 압축 해제되지 않는 상황이 발생합니다. 따라서 데이터를 64로 인코딩해야하는지는 압니까 압도적으로 줄어들 것입니다.
압축 된 문자열을 데이터베이스에 저장하여 나중에 가져올 수 있도록하려면 어떻게해야합니까?
나는 데이터베이스를 변경할 수 없습니다, 그래서 나는 그 CLOB 필드와 붙어있어
이 내 압축 기능은 다음과 같습니다
public static String compress(String text) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
OutputStream out = new DeflaterOutputStream(baos);
out.write(text.getBytes("UTF-8"));
out.close();
} catch (IOException e) {
//ooops
}
return baos.toString();
}
public static String decompress(String bytes) {
InputStream in = new InflaterInputStream(new ByteArrayInputStream(bytes.getBytes()));
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
byte[] buffer = new byte[8192];
int len;
while ((len = in.read(buffer)) > 0)
baos.write(buffer, 0, len);
return new String(baos.toByteArray(), "UTF-8");
} catch (IOException e) {
//ooops
}
}
성능을 향상시키기 위해 데이터를 검색하는 데 필요한 작업량을 제한하기 위해 * cache *가 사용됩니다. 그것을 압축하고 CLOB에 저장하는 것은 그 목적과는 거리가 멀다. 적어도 그것은 나에게 그렇게 보인다. –