2013-06-04 1 views
0

저는 5 번에 대답했습니다.하지만 정답은 실제로 20 번입니다. 나는 20 번 계산 방법을 모른다.메모리 내 DB 압축 요소 : 계산 방법?

정확히 어떻게 계산할 수 있습니까?

enter image description here

이 예는 "하소 플래트너 연구소"이 질문은 SO에 적합하지 않은 경우

enter image description here

에서의 올바른 SE 사이트 날 직접하시기 바랍니다.

+0

이것은 프로그래밍 질문하지 않습니다 ... –

+0

당신이 dba.stackexchange.com 생각 해 봤나 : 남아있는 모든 것은 간단한 부문인가? –

답변

1

의 단순화 (이들 예에서 HPI 의해 사용되는)

1KB = 1000B 
1MB = 1000KB 

는 상기 압축 사전의 크기를 계산하는 행의 수에 의해, 각 필드의 크기의 합을 사용 곱할 :

Name: CEILING(Log2(2000)) = 15 
Surname: CEILING(Log2(100000)) = 17 
Age:  CEILING(Log2(128)) = 7 
Gender: CEILING(Log2(2))  = 1 
:
(49+49+1+1)*50 000 000 = ~5000 MB 

이제 각 열의 고유 값의 수로서 최대의 둘레를 표현할 수있는 비트의 최소 수를 계산

(15+17+7+1)*50 000 000/8 = ~250MB "divide by 8 to convert from bit to byte 

이제 우리는 필드의 크기에 고유 값의 개수를 승산하여 데이터 저장소에서 각 항목의 크기를 계산할 수있다 : 53,691,363,210

전체 속성 벡터의 크기는 다음과 같이 번호가있다 .

Name: 49 * 20 000 = 980 000 
Surname: 49 * 100 000 = 4 900 000 
Age:  1 *  128 =  128 
Gender: 1 *  2 =   2 
--------------------------------- 
Total:     5 880 130 "~5MB 

이제는 열 저장소의 전체 크기가 ~ 255MB이고 압축되지 않은 데이터의 크기는 ~ 5000MB입니다.

5000/255 = 19.6 "~20 
+0

대단히 감사합니다. 귀하의 솔루션은 유용했습니다! :) – kilobaik