구글, 오픈소스 NoSQL '레벨DB' 공개

일반입력 :2011/08/01 10:00    수정: 2011/08/01 10:21

구글은 자체 개발한 노SQL(NoSQL) 기술 '레벨DB'를 오픈소스로 공개했다. 노SQL은 관계형 데이터베이스(RDBMS)가 아닌 데이터 저장기술을 총칭하는데 최근 웹서비스를 중심으로 확산 추세다.

구글은 지난달말 공식 블로그를 통해 오픈소스 협업 개발 사이트 '구글코드'에 레벨DB를 오픈소스로 공개했다고 밝혔다. 회사는 레벨DB를 '문자열 키, 값 형식으로 순차 매핑 기능을 제공하는 구글의 빠른 키-값 스토리지 라이브러리 기술'이라고 소개했다. 이는 C++ 언어에 기반한다.

레벨DB는 '키(항목명)'와 그에 대한 '값(내용)'을 바이트 문자열로 저장한다. 키는 데이터들을 정렬시킬 때 쓰인다. 기본 명령어는 데이터를 집어넣는 'Put', 값을 가져오는 'Get', 삭제하는 'Delete'로 단순하다. 한꺼번에 여러 명령을 입력할 때는 일괄 지정해 한 번에 실행할 수도 있다. 저장되는 데이터들은 '스내피 압축 라이브러리' 기술로 자동 압축된다. 또 사용자는 일관된 형식으로 특정 시점에 대한 데이터 스냅샷을 찍을 수 있다. 이밖에도 파일 시스템 작업 등 외부 동작을 가상화된 인터페이스로 처리할 수 있어 운영체제(OS)와의 상호작용도 최적화할 수 있다는 설명이다.

레벨DB를 쓸 수 있는 OS는 유닉스 기반 시스템, 맥OS X, 윈도, 안드로이드다. 레벨DB는 오픈소스 라이선스가운데 'BSD라이선스'에 기반한다. 구글의 분산형 저장기술 '빅테이블' 프로젝트에 참여했던 제프리 딘, 산제이 게마와트가 만들었다.

■웹앱용 DB 표준 노린다

회사는 이것을 완전한 독립형 저장기술 보다는 좀더 수준높은 저장시스템에 포함될 수 있는 요소 기술로 고안했다는 설명이다. 일례로 이는 HTML5에 포함돼 웹애플리케이션용 DB로 쓰일 '인덱스DB(IndexedDB)' API의 기반이 될 예정이다. 구글은 표준화에 앞서 자사 크롬 브라우저에 이를 지원할 것이라고 예고했다.

해외 온라인IT미디어 리드라이트웹은 이를 소개하며 DB서버형 '레디스'나 '멤베이스'같은 여타 키-값 저장기술과 다르다고 묘사했다. 여러 클라이언트가 DB서버에 동시에 접속해서 원격이나 로컬 환경으로 명령을 처리할 수 없다는 얘기다.

대신 SQL라이트(SQLite)나 버클리(DB)처럼 애플리케이션용 임베디드DB 기술로 쓰일 것이라는 설명이다. 다른 키-값 저장기술 대신 레벨DB를 씀으로써 순차정렬된 데이터를 다룰 수 있으며. 버클리DB같은 '슬리피캣' 라이선스보다 자유로운 BSD라이선스 기반으로 이용 가능한 게 장점이라고 평했다. GPL과 호환되는 슬리피캣 라이선스는 오라클이 지난 2006년 사들인 업체 슬리피캣소프트웨어의 회사명에서 비롯됐다.

■레벨DB 성능은

구글은 레벨DB가 다양한 워크로드에서 광범위하게 쓰일 때 괜찮은 성능을 보인다고 강조했다. 구글코드 소개페이지에 들어가 보면 레벨DB 성능을 엿보이기 위한 측정기록이 들어 있다. 측정 방식은 데이터 크기를 원본 절반수준으로 압축하는 데 걸린 시간을 재는 것이었다.

구글은 16바이트길이 키와 100바이트크기 값으로 된 항목 100만개를 저장한 DB를 동원했다. 레벨DB 1.1 버전을 인텔 쿼드코어 프로세서 Q6600 2.40기가헤르쯔(GHz), CPU 캐시 4메가바이트(MB) 시스템에 돌려 110.6MB 정도인 원본 크기를 62.9MB까지 줄였다.

관련기사

새 DB를 생성시 순차쓰기 방식은 초당 62.7MB, 랜덤 쓰기방식은 초당 45.0MB, 기존 DB에 들어있는 키를 덮어쓰는 방식은 초당 46.5MB 성능을 보였다.

읽기 속도는 보통 상태시 정방향으로 초당 232.3MB, 역방향으로 초당 152.9MB였다. DB 간소화 작업을 수행하면 다소 빨라져 정방향 읽기가 초당 261.8MB, 역방향 읽기가 초당 166.9MB로 나타났다. 무작위 읽기는 단위시간당 용량이 아니라 초당 항목 개수로 측정돼, 보통상태시 초당 6만개, 간소화 상태시 초당 8만5천개 정도로 나타났다.