Offcanvas

개발자 / 빅데이터 | 애널리틱스 / 애플리케이션

RDB부터 검색엔진까지··· 내게 꼭 맞는 DB 고르기

2018.04.25 Humberto Farias  |  InfoWorld
기술적 내용이 많은 데이터베이스 사용기는 수백 건이 나와 있지만, 데이터베이스 선택의 첫번째 단계를 명확히 알려주는 글은 별로 없다. 원칙은 특정 응용프로그램에 가장 적합한 일반 유형을 선택하는 것이다. 모든 데이터베이스는 각자 강점과 약점이 있다. 원하는 데이터베이스를 쓸 수 있게 하는 편법이 있지만, 이렇게 사용하다 보면 쓸데없이 복잡해진다.



따라서 특정 데이터베이스를 고려하기에 앞서, 현재 프로젝트를 가장 잘 지원할 유형이 무엇인지 곰곰이 생각해야 한다. “SQL이냐 NoSQL이냐”라는 것보다 훨씬 더 심도 있는 문제이기 때문이다. 가장 일반적인 데이터베이스 유형은 관계형 데이터베이스, 문서 저장소, 키값 저장소, 와이드 칼럼 저장소, 검색 엔진 등이다. 이제 각 데이터베이스의 장점과 나에게 맞는 데이터베이스 선택법을 살펴보자.

관계형 데이터베이스 관리 시스템(오라클, 마이SQL, MS 서버, 포스트그리SQL)
관계형 데이터베이스는 늘어나는 데이터를 처리하기 위해 1970년도에 개발됐다. 탄탄한 기본 이론을 갖고 있으며 오늘날 사용 중인 거의 모든 데이터베이스 시스템에 영향을 미쳤다. 관계형 데이터베이스는 데이터 집합을 “관계”로 저장한다. 모든 정보가 특정 셀의 값으로 저장되는 행과 열을 갖춘 테이블 형태다. 관계형 데이터베이스 관리 시스템(RDBMS)에 있는 데이터는 SQL을 사용해 관리된다. 여러 가지 다른 버전이 있지만 SQL이 표준화돼 있고 일정 수준의 예측 가능성과 유용성을 제공한다.

초기에 쏟아져 나온 업체가 관계형이라고 볼 수 없는 제품을 잇달아 내놓자 에드거 F.커드가 모든 관계형 데이터 베이스 관리 시스템이 따라야 할 일정한 규칙을 제시했다. 커드의 12가지 규칙은 엄격한 내부 구조 프로토콜을 실시하고, 검색 결과 요청한 데이터가 안정적으로 반환되며, 구조 변경(최소한 사용자에 의한 변경)을 방지하는 것이 주 목적이다. 이러한 체계 덕분에 오늘날까지 관계형 데이터베이스는 일관성과 신뢰성을 갖춘 데이터베이스로 널리 쓰이고 있다.

강점. 관계형 데이터베이스는 고도로 정형화된 데이터 처리에 뛰어나며 ACID(원자성(Atomicity), 일관성(Consistency), 고립성(Isolation), 지속성(Durability)) 트랜잭션을 지원한다. 데이터 저장 및 검색은 SQL 질의를 사용해 쉽게 처리할 수 있다. 기존 데이터를 수정하지 않고 데이터를 간단히 추가할 수 있기 때문에 구조를 빠르게 확장할 수 있다. 어떤 사용자 유형이 접근이나 수정이 가능한지는 RDBMS의 구조 내부에서 설정할 수 있다. 따라서, 관계형 데이터베이스는 계층화된 접근이 필요한 응용프로그램에 매우 적합하다. 예를 들면, 고객은 본인의 계정을 열람만 할 수 있지만 에이전트는 열람은 물론 필요할 경우 변경할 수도 있다.

약점. 관계형 데이터베이스의 가장 큰 약점은 가장 큰 강점과 맞닿아 있다. 정형 데이터 처리에 뛰어난 만큼 비정형 데이터 처리에는 한계를 보이는 것이다. 그래서 문맥 상의 실체를 표현하기 어렵다. 테이블로부터 “썰어낸” 데이터를 가독성이 높은 것으로 재조립해야 하고 이는 속도에 부정적인 영향을 미칠 수 있다. 고정된 스키마(schema) 역시 변화에 유연하게 대응하기 힘들다.

비용은 관계형 데이터베이스에서 특히 고려해야 할 사항이다. 관계형 데이터베이스는 구성과 확장에 비용이 많이 드는 경향이 있다. 서버를 여러 개 더 추가하는 방식의 수평 확장은 서버 하나에 자원을 더 추가하는 수직 확장에 비해 더 빠르고 경제적인 경우가 대부분이다. 그러나 관계형 데이터베이스는 그 구조 때문에 수평 확장 과정이 복잡하다. 관계형 데이터베이스를 확장하려면 샤딩(sharding)(데이터가 수평적으로 분할되고 기기의 모음 전반에 걸쳐 분산되는 경우)이 필요하다. ACID 준수를 유지하면서 관계형 데이터베이스를 샤딩하는 것은 매우 까다로운 작업이다.

적합한 경우. 관계형 데이터베이스를 쓰기 좋은 경우는 데이터 완전성이 무엇보다 중요한 상황이다. 재무 응용프로그램, 방어 및 보안, 개인 건강 정보가 대표적이다. 이밖에 고도로 정형화된 데이터, 내부 프로세스의 자동화에도 이 데이터베이스가 적합하다.

문서 저장소(몽고DB, 카우치베이스(Couchbase))
문서 저장소란 데이터를 JSON, BSON 또는 XML 문서에 저장하는 비관계형 데이터베이스이다. 유연한 스키마가 특징이다. 사용자가 데이터를 입력하기 전에 테이블의 스키마를 선언해야 하는 SQL데이터베이스와 달리 문서 구조를 강요하지 않는다. 문서에는 원하는 어떤 데이터도 넣을 수 있다. 키-값 짝이 있지만 속성 메타데이터를 포함해 더 쉽게 질의할 수 있다.

강점. 문서 저장소는 매우 유연하다. 반정형 데이터와 비정형 데이터를 잘 처리한다. 설정 과정에서 사용자는 어떤 유형의 데이터가 저장될지 몰라도 된다. 따라서 어떤 유형의 데이터가 들어올지 미리 확실히 알 수 없는 경우에 적합하다. 사용자는 모든 문서에 영향을 주지 않고도 특정 문서에 원하는 구조를 만들 수 있다. 스키마는 중단 시간 없이 수정할 수 있기 때문에 가용성이 높다. 작성 속도 역시 전반적으로 빠르다. 개발자가 문서 저장소를 좋아하는 이유는 유연하면서도 수평 확장이 용이하기 때문이다. 수평 확장에 필요한 샤딩이 관계형 데이터베이스보다 훨씬 더 직관적이다. 이 때문에 문서 저장소는 빠르고 효율적으로 확장할 수 있다.

약점. 문서 데이터베이스는 유연성을 위해 ACID 준수를 희생한다. 또한, 질의가 한 문서 내에서만 가능하며 여러 문서에 걸친 질의는 불가능하다.

적합한 경우. 문서 데이터베이스가 유용한 경우는 비정형 또는 반정형 데이터가 있는 경우다. 이밖에 내용 관리, 심도 있는 데이터 분석, 빠른 프로토 타입 작업에도 안성맞춤이다.

키-값 저장소(레디스(Redis), 멤캐시드(Memcached))
키-값 저장소란 각 값이 특정 키와 연관된 일종의 비관계형 데이터베이스다. 연관 배열(associative array)이라고도 한다. “키”는 값에만 연관된 고유의 식별자다. 키는 DBMS에서 허용하는 어떤 것이라도 될 수 있다. 예를 들어 레디스에서 키는 최대 512MB의 어떤 2진 시퀀스(binary sequence)라도 될 수 있다. “값”은 블롭(blob)으로 저장되지만 미리 정의한 스키마는 필요 없다. 거의 모든 형태가 가능하다. 숫자, 문자열, 계수기, JSON, XML, HTML, PHP, 2진수, 이미지, 짧은 동영상, 목록, 심지에 객체에 압축된 또 다른 키-값 짝도 가능하다. 일부 DBMS는 데이터 유형 명시가 가능하지만 의무적인 것은 아니다.

강점. 이러한 방식의 데이터베이스는 긍정적인 점이 많다. 유연성이 뛰어나고 광범위한 유형의 데이터를 쉽게 처리할 수 있다. 키는 인덱스 검색이나 조인(join) 없이 값으로 곧장 가는데 사용되기 때문에 성능이 빠르다. 이동성 역시 장점이다. 키-값 저장소는 코드를 다시 작성하지 않고도 한 시스템에서 다른 시스템으로 옮길 수 있다. 수평 확장성이 뛰어나며 전체적인 운영 비용이 낮다.

약점. 유연성에는 대가가 따른다. 값 질의가 불가능하다. 블롭으로 저장돼 있어 블롭으로만 반환되기 때문이다. 따라서 보고 작업을 하거나 값의 일부를 편집하기 어렵다. 모든 객체를 다 키-값 짝으로 모델화하기 쉬운 것도 아니다.

적합한 경우. 추천, 사용자 프로필 및 설정, 상품 사용기나 블로그 댓글 등 비정형 데이터 작업이 많은 경우다. 이밖에 대규모 세션 관리, 자주 접근하지만 자주 업데이트되지는 않는 데이터에 적합하다.


와이드 칼럼(wide-column) 저장소(카산드라(Cassandra), HBase)
와이드 칼럼 저장소는 칼럼 저장소, 확장 가능 기록 저장소라고도 한다. 동적인 칼럼 지향 비관계형 데이터베이스다. 일종의 키-값 저장소라고 보는 경우도 있지만 전통적인 관계형 데이터베이스의 속성도 갖고 있다. 와이드 칼럼 저장소는 스키마 대신 키스페이스(keyspace) 개념을 사용한다. 키스페이스는 칼럼 군을 포괄한다. 테이블과 비슷하지만 구조 면에서 더 유연하다. 각 칼럼 군에는 열이 구별된 여러 개의 행이 들어 있다. 각 행은 똑같은 개수나 유형의 열을 갖고 있을 필요가 없다. 타임스탬프(timestamp)를 통해 가장 최근 버전의 데이터를 판별한다.

강점. 이 유형의 데이터베이스는 관계형 데이터베이스와 비관계형 데이터베이스의 장점을 모두 갖고 있다. 다른 비관계형 데이터베이스보다 정형 데이터 및 반정형 데이터 처리에 더 능하고 업데이트하기도 더 쉽다. 관계형 데이터베이스보다 수평 확장성이 더 크고 속도가 더 빠르다. 열형 데이터베이스는 행 기반 시스템보다 압축이 더 잘 된다. 또한, 대규모 데이터 집합을 간단하게 탐색할 수 있다. 와이드 칼럼 저장소는 예를 들면 집계 질의에 특히 능하다.

약점. 소규모로 사용할 때 비용이 많이 든다. 한꺼번에 업데이트하는 것은 쉽지만 개별 기록을 업로드하고 업데이트하기 어렵다. 또한, 와이드 칼럼 저장소는 트랜잭션을 처리할 때 관계형 데이터베이스보다 느리다.

적합한 경우. 와이드 칼럼이 유용한 경우는 속도가 중요한 빅데이터 분석이다. 빅데이터에 대한 데이터 웨어하우스 작업, 대규모 프로젝트에도 적합하다. 이 데이터베이스 방식은 일반적인 트랜잭션 응용프로그램에 좋은 도구가 아니다.

검색 엔진(일래스틱 서치(Elasticsearch))
데이터베이스 유형에 대한 글에 검색 엔진이 등장하는 것이 이상하게 느껴질 수도 있다. 그러나, 개발자가 검색 지연을 줄일 수 있는 더 혁신적인 방식을 찾으면서 일래스틱서치의 인기도 커졌다. 일래스틱서치는 비관계형 문서 기반 데이터 저장 및 검색 솔루션이다. 데이터의 저장과 고속 검색에 맞게 배열되고 최적화돼 있다.

강점. 일래스틱서치는 확장성이 매우 뛰어나다. 유연한 스키마와 기록의 빠른 검색이 특징이다. 전문 검색, 추천, 복잡한 검색 표현 등 고급 검색 옵션이 있다. 가장 흥미로운 검색 기능 중 하나는 스테밍(stemming)이다. 단어의 원형을 분석해 다른 형태가 사용된 경우라도 관련 기록을 찾아낸다. 예를 들면, 사용자가 고용 데이터베이스에서 “보수 있는 일자리(paying jobs)”라는 말을 검색할 경우 (‘paying’의 다른 형태인) “paid” 및 “pay”로 태그된 일자리도 검색된다.

약점. 일래스틱서치는 기본 데이터베이스로 사용하기 보다는 중간 또는 보완 저장소로 더 많이 사용된다. 지속성이 낮고 보안이 부실하기 때문이다. 고유의 인증 또는 접근 통제 기능도 없다. 또한, 일래스틱서치는 트랜잭션을 지원하지 않는다.

적합한 경우. 검색 엔진을 쓰기 좋은 경우는 빨라진 검색 결과로 사용자 경험 개선이 필요한 경우다. 로깅에도 적합하다.

결론
어떤 응용프로그램은 하나의 특정 데이터베이스 유형의 강점에 잘 들어맞지만, 대부분의 프로젝트에서는 2가지 이상이 겹친다. 그런 경우에는 다른 방식의 특정 데이터베이스 중 어떤 것을 대신 쓰면 좋을지 검토하는 것이 도움이 된다. 업체는 데이터베이스를 개별 기준에 맞출 수 있는 다양한 기능을 제공한다. 그 중에는 보안, 확장성, 비용 등과 같은 요소에 대한 불확실성을 해소하는 데 도움이 되는 기능도 있다. ciokr@idg.co.kr 
CIO Korea 뉴스레터 및 IT 트랜드 보고서 무료 구독하기
추천 테크라이브러리

회사명:한국IDG 제호: CIO Korea 주소 : 서울시 중구 세종대로 23, 4층 우)04512
등록번호 : 서울 아01641 등록발행일자 : 2011년 05월 27일

발행인 : 박형미 편집인 : 천신응 청소년보호책임자 : 한정규
사업자 등록번호 : 214-87-22467 Tel : 02-558-6950

Copyright © 2024 International Data Group. All rights reserved.