2010-03-18 2 views
2

시스템 LAN에서 많은 대형 로그 파일을 검색하는 응용 프로그램이 있습니다.db에 저장하기 전에 큰 텍스트 데이터를 압축 하시겠습니까?

현재 모든 로그 파일을 Postgresql에 저장하고 테이블에 TEXT 열 유형이 있고 야간에 모든 외부 파일을 검색하여 민감한 패턴을 스캔하기 때문에이 텍스트 열에 대한 검색을 계획하지 않습니다.

그래서 열 값도 BLOB 또는 CLOB 일 수 있지만 지금 내 질문은 다음과 같습니다. 데이터베이스에 이미 압축 시스템이 있지만 일반 압축 유틸리티와 마찬가지로이 압축을 수동으로 향상시킬 수 있습니까? 그리고 무엇보다도 수동으로 큰 파일을 미리 압축 한 다음 데이터 테이블에 바이너리를 넣는다면 데이터베이스 시스템이 내부 압축을 제공 할 때 유용하지 않습니까?

답변

1

필자가 여기에있는 검색 또는 쿼리 기능이 필요하지 않으면 파일을 압축하여 디스크 사용량을 줄이고 데이터베이스에 직접 바이너리 데이터를 저장할 수 있습니다.

2

누가 데이터를 더 효율적으로 압축할지 모릅니다. 당신이나 db는 사용 된 algo에 따라 달라집니다.하지만 압축한다면 db에 다시 압축하도록 요청하는 것이 좋습니다. CPU 낭비. 일단 압축되면 압축을 다시 시도하면 결과적으로 더 많은 공간을 소비하게 될 때까지 매번 이득이 줄어 듭니다.

+0

단순한 CPU 낭비가 아니라 응용 프로그램 스택을 복잡하게 만듭니다. 모든 것은 일반 텍스트를 필드에 적용한 특수 압축과주고받는 방법을 알아야하며 깨지기 쉽습니다 (더 많은 코드 의미 더 많은 버그). 상당한 개선 가능성은 거의 없으므로이를 따르는 것이 바람직하지 않습니다. – bignose

2

PostgreSQL에서 사용되는 내부 압축은 특히 압축 해제의 경우 속도 측면에서 오류를 발생 시키도록 설계되었습니다. 따라서 실제로 필요하지 않은 경우 응용 프로그램에서 압축하면 더 높은 압축률을 얻을 수 있습니다.

데이터베이스가 압축을 수행하면 데이터는 데이터베이스와 응용 프로그램 서버 사이를 압축되지 않은 형식으로 이동하므로 네트워크에 따라 문제가 발생할 수 있습니다.

다른 사람이 언급했듯이 이렇게하면 내장 압축을 해제해야합니다. 그렇지 않으면주기가 낭비됩니다.

당신이 묻는 질문은 데이터베이스가 제공하는 것보다 더 많은 수의 압축이 필요하며 응용 프로그램 서버에서 이에 대한 CPU주기를 절약 할 수 있습니다. 얼마나 많은 압축을 데이터에 올릴 수 있는지 알아내는 유일한 방법은 시도해 보는 것입니다. 실질적인 이익이 발생하지 않는 한 그 일을 귀찮게하지 마십시오.