Passion/Algorithm

Matrix를 Key, Value 쌍으로 저장하는 방법

sunshout 2011. 7. 14. 06:44
Matrix는 테이블 형식의 데이터를 저장하는 효율적인 방법이다.
하지만 <예1>과 같은 sparse matrix를 N*N 테이블에 넣으면 메모리 손실이 너무 많다.
 

  n1 n2  n3  ...  n100,000 
 n1    1      1
 n2          
 n3  1  1      
 ...          
 n100,000      1    
 <예1> 대용량 sparse matrix


 이를 관계형 데이터베이스로 구성하면

T_ROW
 n1
 n2
 n3
 ...
 
 n100,000

T_Column
 n1  n2  1
 n1  n1000,000  1
 n3  n1  1
 n3  n2  1
 n1000,000  n3  1
     

이렇게 구성하면 되나 데이터가 너무 큰 경우 db table로는 관리하기 힘들다. (주로 외래키 관리가 어려움)

Bigtable과 같은 Key, value 쌍으로 표현하면
 n1 n2:1
n100,000:1 
 n2  
 n3 n1:1
n2:1
 ...  
 n1000,000  n3:1


이렇게 표현하면 된다.

자 이걸 어떤 곳에 사용할지 고민해 보자.