이번 포스팅에서는 RDB 부터 여러 DB들의 강점과 약점을 알아보고, 어떠한 경우에 각 DB들을 적용하면 좋을지 정리해 보자.
관계형 데이터베이스로, 가장 오래되고 많이 알려져있다. Mysql, Oracle, PostgreSql등이 속해 있다. 여기서 관계(Relation)란 key와 value의 관계를 말하며 RDB에서는 이러한 관계들을 Shcema를 가지는 Table로 표현하여. 데이터들은 이 Schema를 통해 여러 개의 테이블에 분산되어진다. RDB는 아래와 같은 특징을 가진다.
강점
약점
적합한 상황
데이터의 완전성이 무엇보다 중요한 상황, 재무 응용프로그램, 방어 및 보안, 개인 건강 정보등이 대표적이다. 이 밖에도 고도로 정형화된 데이터, 내부 프로세스의 자동화 등에 적합하다.
데이터를 JSON, BSON 또는 XML 문서에 저장하는 비관계형 데이터베이스로 유연한 스키마가 특징이다. 스키마를 지정하지 않고 데이터를 입력 할 수 있고, 정형화된 구조를 강요하지 않는다. Document 기반으로 RDB와 비교했을 때 큰 하나의 테이블을 사용한다고 생각 할 수 있다. 대표적인 예로 몽고DB, Couchbase 등이 있다.
강점
약점
적합한 상황
데이터의 정확성보다 양이 중요한 빅데이터에 적합, 스키마를 작성하지 않고 시작이 가능하기에 빠른 프로토 타입등에 적합하다. 또한 비정형 데이터에 적합하다.
각 값이 특정 키와 연관된 비 관계형 데이터베이스의 일종으로 디스크가 아닌 메인 메모리에 모든 데이터를 저장한다. 때문에 데이터 접근이 훨씬 빠른 것이 장점이나 그 크기의 한계와 휘발성이라는 단점을 가지고 있어 주로 캐시 저장소로 많이 사용된다. 대표적으로 Redis, Memcached등이 있다.
휘발성을 보완하기 위해, 메모리에 CRUD 된 값들을 모두 디스크에 로그로 기록하기도 하고, 재구동 될 때 디스크로부터 로그파일을 읽어와 메모리에 구조를 재 구축하기도 한다.
강점
약점
적합한 곳
세션관리, 자주 접근하지만 자주 업데이트 되지 않는 데이터에 적합
확장가능 기록 저장소라고도 한다. 동적인 Column 지향 비관계형 데이터베이스다. 일종의 Key - Value Store로 보는 경우도 있지만 전통적인 RDB의 속성도 함께 가지고 있다. Wide Column Store는 스키마 대신 keyspace 개념을 사용한다. 테이블과 비슷하지만 구조 면에서 더 유연하다. keyspaces는 칼럼 군을 포괄하고, 각 칼럼 군은 구별된 여러 개의 행이 들어 있다. 이 중 타임스탬프를 통해 가장 최근 버전의 데이터를 판별한다. 대표적인 예로 Cassandra, HBase 등이 있다.
강점
약점
적합한 경우
속도가 중요한 빅데이터 분석, 빅데이터에 대한 웨어하우스 작업, 대규모 프로젝트에 적합 일반적인 트랜잭션 App에는 적합하지 않다.