27 Oct 08 Blob Quiz
요즘 고민하고 있는 문제인데, 보안상의 이유로 비유적으로 설명해보겠다. (실제로 이런 일을 하고 있는 건 아니다 -_-)
이글아이처럼 우리 국정원에서도, 1분 정도의 음성 통화를 대충 100K 로 압축할 수 있는 압축 알고리즘을 기반으로 하는 휴대폰 통화 감청 시스템을 구축한다고 가정하자. 하루에 10 테라바이트 씩 쌓이긴 하지만, 당연히 각 통화 데이터 끼리의 연관성은 없고, 오직 2개의 송신/수신 전화번호의 키값으로 구분될 뿐이다.
모든 데이터들은 프라이버시 보호보다는 HDD 부족으로 2주 정도만 지속되며, 오직 리만브라더즈 2명만 들을 수 있다. 물론 둘 다 바빠서 아무도 듣지 않을 수도 있지만, 그래도 무조건 남기긴 남겨야 하는 이 프로젝트를 당신이 맡게 되었다. (아싸 비유를 만들어내는 게 더 리얼하구나~)
문제는, 연기금을 모두 주가 부양에 써버린 나머지 PC 조립 서버 몇 대만으로 최대한 싸게 구현해야 한다면, 어떤 솔루션을 선택해야 할까? (한줄로 요약하면, 자잘한 BLOB 들이 산더미처럼 만들어질 때의 안정적인 관리 및 검색의 문제인데 검색의 비중이 상당히 낮은 케이스라고 할 수 있다.)
- 파일 시스템 : 분산 컴퓨터들의 RAID로 보호되는 파일 시스템에 남기고, 검색은 그냥 폴더명으로.. 백업이 없어서 좀 무섭다.
- 파일 시스템 + 복제 : 안전을 위해 남기는 넘과 읽는 넘을 분리. 안 읽는 넘도 복제해야 한다는게 좀 아깝지만.
- 분산 데이터베이스 : blob insert 는 좀 힘들지만 어쨌든 검색은 쿼리다.
- 분산 데이터베이스 + 복제 : 역시 불필요한 복제의 딜레마는 마찬가지.
- 분산 파일 시스템 + 데이터베이스 : 검색은 파일 시스템, DB는 2차 백업으로… (이건 오버인가;;)
- 기가비트 이더넷 + HTTP : 분산 컴퓨터들을 기가비트 이더넷으로 묶고, HTTP 서버가 공유 폴더로 인식, Rest 방식으로 다운로드
- in-memory 테이블이나 데이터베이스: 어차피 용량의 한계로 안될 듯!
- memory mapped file을 사용하려면 거의 무한한 크기를 지원하는 64비트 버전을 사용할 것
- 사용자 증가로 인해 시스템을 확장할때 스트레스 받지 않는 방법을 사용할 것. 안그러면 lock-in 됨.





