4

(XML 데이터)에 많은 텍스트 데이터를 저장하려는 열이 있습니다. 행당 약 8,000 자, 분당 약 100-500 자SQL Server의 열 수준 압축

많은 데이터는 내가 열을 상당히 공격적으로 제거해야 함을 의미합니다. (우리 회사의 SAN에 SQL Server를 호스팅해야하므로 저장 공간이 상당히 비쌉니다.) 그러나이 데이터를 압축하는 방법을 찾을 수 있다면 더 오래 사용할 수 있습니다.

나는 또한 SQL 서버 2005

모두를위한 도구 SQLCompress.NET을 보았다 SQL 2005

에서 using CLR Integration to compress BLOBs에이 기사 같은 것들을 보았다는 내가 원하는 정확히 무엇을 말하는 것 같다. 단일 열이 저장되는 동안 데이터를 압축합니다.

그러나이 도구는 포기되었으며 (2008 년 이후 업데이트가 없음) 문제가 발생할 수 있다고 들었지만 CLR 통합에 대해 많이 알지 못합니다. 또한이 두 가지 솔루션은 SQL Server 2005 용입니다.

여기 내 질문이 있습니다. SQL Server 2008 R2를 사용하고 있습니다. 이러한 SQL Server 2005 솔루션 중 어느 것이 나에게 잘 맞습니까?

데이터를 압축하는 데 사용할 수있는 다른 솔루션이 있습니까?

참고 : 행 압축과 페이지 압축 내가 행 압축 가변 길이 필드 및 페이지 압축 고정 길이 데이터를 저장한다. (적어도 지금까지 내가 볼 수 있습니다) 필요에 도움이되지 않습니다 중복의 인스턴스를 감소 데이터. 이들 중 어느 것도 큰 텍스트 블록으로는 도움이되지 않습니다.

참고 II :question을 보았지만 그 대답은 행 및 페이지 압축 또는 FILESTREAM을 사용합니다. 데이터베이스 미러링 기능이 느슨해지기 때문에 FILESTREAM을 사용하고 싶지 않습니다.

+0

를 참조하십시오? 일부 C# 응용 프로그램? –

+0

@ChrisShain - C# 응용 프로그램 (IIS에서 호스팅되는 WCF/NServiceBus)을 사용하여 쓰기 작업을하고 있습니다. SSMS를 사용하여 읽습니다. – Vaccano

+1

현재 두 가지 답변을 고려할 때 누군가가 "문제가 발생할 수 있다는 말을 제외하고는 CLR 통합에 대해 많이 알지 못합니다"라고 말할 수 있습니까? 최근에 CLR 통합을 직접 사용해 보았습니다 (많은 부분을 알지 못했지만). 아무런 문제가 없었습니다. – bfavaretto

답변

0

나는 최상의 방법을 사용하는 것이 클라이언트 라이브러리를 사용하여 SQL Server에 저장하기 전에 데이터를 압축하고 압축을 풀거나 XML의 특정 요소 나 특성으로 쿼리하려는 경우 추출 할 수 있다고 생각합니다. 그것들을 별도의 열 또는 정규화 된 행에 저장하십시오 (어쨌든 수행하고 싶을 것입니다. 특히 중첩 된 요소의 경우 큰 XML 텍스트 열을 쿼리하면 이 느림)입니다.

+0

XML 내부를 쿼리 할 필요가 없으며 SSMS 쿼리에서 전체 XML을 가져올 수 있습니다. (마치 일반 텍스트 데이터 인 것처럼). 클라이언트 측에서는 압축하지 않을 것입니다. SSMS를 사용하여 데이터를 볼 수 없기 때문입니다. CLR 통합을 사용하는 열 수준 압축이 나쁜 생각입니까? SQL Server에서 흔히 볼 수있는 영역입니까? – Vaccano

+0

클라이언트가 압축 및 압축 해제하는 경우. SQL Server의 열 압축만큼 좋지 않지만 얻을 수있는 것을 취할 것입니다. – Vaccano

0

filestream을 사용하여 XML 문서를 저장하고 NTFS를 사용하여 압축 할 수 있습니다.

당신이에 데이터를 쓰기 (및 데이터 읽기) SQL 서버를 위해 사용하고있는이 기사에

Using Filestream in SQL2008

+1

아아, FileStream을 사용하면 데이터베이스 미러링 기능이 느슨해집니다. 이것이 DBA가 필요로하는 기능입니다. 그렇지 않으면 아마이 솔루션을 선택할 것입니다. – Vaccano