전세계적으로 지금 만큼 데이터베이스가 다양하고 흥미로웠던 적은 없었다. 이미지 출처 : Thinkstock 몇 년
몇 년 전만 하더라도 데이터베이스 업무는 좋은 말로 IT에서 가장 지루한 작업이었다. 데이터는 주요 SQL 데이터베이스 중 하나에 입력되었고 나중에 입력된 그대로 출력되었다. 데이터베이스 작성자는 우수한 성능을 제공하는데 성공했기 때문에 모두가 당연한 것으로 받아들였다.
그러다 저장하고자 했던 것의 속성이 바뀌었다. 모두가 소셜 네트워크에서 데이터를 공유하기 시작했기 때문에 데이터베이스는 은행 계좌와 항공권의 수준을 넘어서야 했다. 갑자기 저장할 데이터가 크게 증가했으며 이 새로운 데이터의 대부분은 기존의 테이블에 맞지 않았다. 데이터베이스 관리자와 작성자의 역할이 바뀌었고 데이터베이스를 좀 더 흥미로운 기술로 발전시키는데 도움이 되는 일련의 광범위한 흥미로운 솔루션이 등장했다.
카산드라(Cassandra), 몽고DB(MongoDB), 카우치DB(CouchDB), 리아크(Riak), 네오포지(Neo4j) 등 현재까지 과거 수 년 동안의 혁신이 여러 조직에서 자리를 잡아가기 시작했다. 여기에 새로운 세대가 등장해 빠르게 가세하고 있다. 다양한 방식으로 쿼리가 가능하도록 더 많은 머신에 더 유연한 형태로 더 많은 데이터를 저장하도록 개발된 11종의 최신 데이터베이스에 관해 살펴보도록 하자.
파우나DB(FaunaDB)
트위터 출신의 기술자들이 수십 억 개의 트윗을 처리하던 경험을 살려 무엇인가 새로운 것을 구축하길 원했으며, 분산형 데이터베이스가 적합하다고 판단했다. ‘파우나DB 입력, JSON 입력, 분산형 노드(Node) 콜렉션에서 답 출력에 이르는 일련의 과정에서 파우나DB의 쿼리 언어는 소셜 네트워크와 데이터베이스의 다른 그래프 구조를 검색하면서 여러 노드로부터 데이터를 결합하는 복잡한 질문을 묻는 기능을 제공한다.
단순히 실험에 관심이 있거나 자체 DB 구축의 어려움을 원치 않는 사람들을 위해 파우나DB는 클라우드 서비스형 데이터베이스 버전으로도 제공된다. 좀더 강한 제어 기능을 원하는 경우 자체적으로 기업용 버전을 설치할 수 있다.
아랑고DB(ArangoDB)
손을 번쩍 들고 “우리가 문서 스타일의 데이터베이스의 유연성을 그래프 데이터베이스의 특수한 힘과 결합할 수 있으면서 표 데이터의 유연성을 유지할 수 있다면 성공한 것이다”고 가장 먼저 말할 수 있는 기회는 이미 사라졌다.
못 믿을 수도 있겠지만 이런 필요를 충족시키는 데이터베이스가 이미 존재한다. 아랑고DB는 데이터를 문서나 그래프 데이터베이스로 저장할 수 있다. 그리고 쿼리 처리를 더욱 빠르게 하는 집약성을 통해 데이터베이스에서 구동하는 조인(Join)으로 반복되는 쿼리를 작성할 수 있다. 그리고 쿼리 언어는 RESTful API를 통해 마이크로서비스(Microservice)를 노출하는 자바스크립트로 둘러 싸인다. 이것은 많은 사람들이 만족할 수 밖에 없는 보통 사람들의 접근 방식이다.
오리엔트DB(OrientDB)
그래프의 힘과 문서 데이터베이스를 합치려고 시도하는 것은 비단 아랑고DB에만 있게 게 아니다. 오리엔트DB도 유사하지만 그 자체를 ‘2세대 그래프 데이터베이스’로 패키지화 했다. 즉, 그래프의 노드는 임의의 키 값 쌍을 기다리는 문서가 된다.
이 때문에 오리엔트DB는 처음에 그래프 데이터베이스처럼 느껴지지만 키 값 저장 기능만을 사용하지 못할 이유가 없다. 또 쿼리를 기다리는 RESTful API도 포함되어 있다.
Crate.io
루씬(Lucene) 같은 검색 엔진의 힘에 SQL만큼 구조와 쿼리가 간단한 것을 바랬던 적이 있는가? 그런 적이 있다면 Crate.io가 해답이 될 수 있다.
루씬은 정형화되지 않은 대규모 텍스트 블록에서 키워드를 찾기 위한 검색 엔진으로 시작했지만 항상 각 문서에 키와 해당하는 값을 저장하는 기능을 제공했으며, 일각에서는 이를 NoSQL 혁명의 일환으로 보았다. Crate.io는 루씬 및 더 크고 확장 가능한 분산형 엘라스티서치(Elasticsearch)와 함께 시작되었지만 SQL 문법으로 쿼리 언어를 추가했다. Crate.io를 개발한 사람들은 Crate.io를 더욱 강력하게 만들어줄 JOIN을 추가하기 위해 노력하고 있으며 JOIN를 사용하게 될 것이다.
기존 SQL 사고 방식을 좋아하는 사람들은 Crate.io가 SQL 기반 시스템을 더욱 쉽게 사용할 수 있도록 새롭고 확장 가능한 기술을 통합한다는 점을 좋아할 것이다.
코크로치DB(CockroachDB)
이름이 매력적이지는 않더라도 감성적이기는 하다. 코크로치DB의 개발자들은 그 어떤 유기체도 바퀴벌레만큼 오래 살거나 민첩하지 않다는 아이디어에 착안하여 “코크로치DB는 업계에서 가장 강력한 재난복구 스토리(Story)로 애플리케이션을 설치할 수 있도록 해준다”고 자랑하고 있다.
이런 목표를 실제로 달성할 수 있는지 여부는 시간이 지나면 알 수 있겠지만 엔지니어링의 부재 때문은 아닐 것이다. 해당 팀의 계획은 코크로치DB의 확장을 쉽게 하는 것이다. 새로운 노드를 추가하는 경우 코크로치DB는 새로운 공간을 사용하기 위해 스스로 다시 균형을 조정한다. 노드를 죽이면 작아지고 백업 소스로부터 데이터를 복제한다. 보안을 강화하기 위해 코크로치DB는 클러스터 전반에 걸쳐 완전한 직렬화가 가능한 처리를 약속했다. 데이터가 ‘키와 값이 (유니코드가 아닌) 바이트 문자열이며 키로부터 값까지 하나의 통제된 맵’으로 부수적으로 저장되기 때문에 걱정할 필요가 없다.
리씽크DB(RethinkDB)
전통적인 데이터베이스에서는 사용자가 쿼리를 전송하고 데이터베이스가 답을 전송한다. 쿼리를 전송하지 않으면 데이터베이스가 아무 것도 전송하지 않는다. 일부 앱에는 단순하고 완벽하긴 하지만 그렇지 않은 경우도 있다.
리씽크DB는 기존의 모델을 뒤집어 데이터를 클라이언트로 전송한다. 쿼리 답변이 바뀌면 리씽크DB가 새로운 데이터를 클라이언트로 전송한다. 여러 사람들이 동시에 문서를 편집하거나 프레젠테이션을 작성하는데 도움이 되는 새로운 상호작용 앱 중 일부에 이상적이다. 한 사용자의 변경사항이 리씽크DB에 저장되면 즉시 다른 사용자에게로 전송된다. 데이터는 JSON 문서로 저장되기 때문에 웹 앱에 이상적이다.
인플럭스DB(InfluxDB)
어떤 데이터베이스는 전세계의 모든 정보를 저장하려 한다. 인플럭스DB는 끝 없이 흘러 들어오는 숫자인 시계열 데이터만을 원한다. 웹 사이트의 로그 파일이나 실험의 센서 감지 값일 수 있지만 계속해서 유입되고 분석해야 한다.
인플럭스DB는 데이터 편집을 위해 기본적인 HTTP(s) API를 제공한다. 쿼리의 경우 MEAN 등의 일부 기본적인 통계 연산자가 포함되어 있는 SQL과 유사한 문법이 있다. 따라서 시간에 따른 특정 값의 평균을 요청할 수 있으며 사용자에게 모든 데이터를 전송하지 않고 데이터베이스 내에서 답을 연산할 수 있다. 이 덕분에 시계열 웹 사이트를 쉽고 효율적으로 구축할 수 있다.
클러스트릭스(Clustrix)
클러스트릭스는 버전 6.0까지 출시되었기 때문에 더 이상 새로운 제품이라고 보기 어려울 수 있지만 인메모리 데이터베이스의 속도에 버금가는 자동 복제 및 클러스터링(Clustering)을 제공하기 때문에 스스로 NewSQL 혁명에 일조했다고 생각한다. 클러스트릭스 개발자들은 클러스터가 데이터베이스의 관리자의 과도한 관심 없이도 스스로를 관리할 수 있도록 많은 관리 툴을 추가했다.
버전 번호를 보면 그 성숙도와 경험의 수준을 알 수 있을 것이다. 새로운 아이디어의 즐거움을 모두 만끽하면서 수 년 동안의 시험을 거친 신뢰성도 누릴 수 있다.
누오DB(NuoDB)
분산형 데이터베이스 네트워크에서 전 세계적으로 확신시킬 데이터가 있는 경우 누오DB는 필요한 모든 동시 관리 및 처리 내구성을 통해 데이터를 저장할 준비가 되어 있다. 핵심은 쿼리를 흡수하고 결국 데이터를 끊임없이 지속되는 디스크로 전송하는 ‘내구성이 뛰어난 분산형 캐시(Cache)’이다. 원하는 경우 캐시와의 모든 상호작용은 ACID 처리 시맨틱스(Semantics)로 처리할 수 있다. 확인 프로토콜을 조정하여 속도를 포기하는 대신에 내구성을 얻을 수 있다.
소프트웨어 패키지에는 시스템에서 노드를 추적하기 위한 다양한 관리 툴이 포함되어 있다. 모든 쿼리는 SQL과 유사한 문법을 사용한다.
볼트DB(VoltDB)
일부 데이터베이스는 정보를 저장한다. 볼트DB는 이와 동시에 분석을 실시하여 ‘수 백만 분의 일 초 만에 판정을 제공하는 스트리밍 분석’을 제공한다. 데이터는 JSON 또는 SQL로 제공된 후에 동일한 프로세스로 저장 및 분석되며 하둡과 통합되어 정교한 연산을 간소화한다. 또한 스토리지에 ACID 처리 보증을 제공한다.
멤SQL(MemSQL)
RAM이 그 어느 때보다도 저렴하고 빠르며 멤SQL은 모든 데이터를 RAM에 저장하여 그 어느 때보다도 쿼리에 빠르게 응답할 준비가 되어 있다. 스마트 캐시와 유사하지만 클러스터 전반에 걸쳐 스스로를 복제할 수도 있다. 데이터가 RAM 안에 위치하게 되면 자체 분석으로 분석하기도 쉽다.
또 최신 버전은 저장 및 분석을 위해 지리 공간 데이터를 지원한다. 앱이 전세계를 이동할 때 분석 결과를 생성하는 위치 인식 모바일 앱을 작성하기 쉽다.
*Peter Wayner는 인포월드 정기 기고가이자 16권을 서적을 집필한 저술가다. 주로 다루는 영역은 오픈소스, 자동화 자동차, 프라이버시, 디지털 트랜잭션 등이다. dl-ciokorea@foundryco.com