01 - 2 데이터베이스 종류
계층형 데이터베이스
계층형 데이터베이스는 데이터가 부모와 자식 관계를 이루는 트리 구조입니다. 부모 레코드가 여러 개의 자식 레코드를, 자식 레코드는 하나의 부모 레코드만 가질 수 있습니다. 이러한 구조는 일대다 관계가 무너지면 변경하기가 매우 어렵습니다. 이처럼 계층형 데이터베이스는 데이터 중복이 발생하기 쉬우며, 데이터는 상하 종속 관계로 이루어지므로 초기에 이 방식을 채택하면 이후 프로세스 변경이 어려워 현재는 거의 사용되지 않습니다.
※ 레코드 : 데이터베이스 테이블에 저장된 값들의 모임으로 행(row) 또는 튜플(tuple)이라고도 부릅니다.
네트워크형 데이터베이스
네트워크형 데이터베이스는 데이터를 노드로 표현한 모델입니다. 노드는 네트워크상에 있으며 서로 대등한 관계입니다. 이러한 구조는 계층형 데이터베이스의 단점인 데이터 중복 문제, 상하 종속 관계를 해결했습니다.
멤버 노드는 여러 주인 노드를 가지는데, 멤버 노드는 반드시 주인 노드와 연결되어야 하며 멤버 노드는 주인 노드에 있는 레코드와 연관되어야 합니다. 이처럼 네트워크형 데이터베이스는 레코드 간의 관계를 일대다 또는 다대다로 표현할 수 있지만, 종속성 문제가 생기기 쉬워 데이터베이스 구조를 변경하기 어렵습니다.
키-값 데이터베이스
키-값 데이터베이스(key-value database)는 NoSQL의 한 종류로 키-값을 일대일 대응해 데이터를 저장합니다. 데이터 중복이 발생하며 비정형 데이터 저장에 유리합니다.
※ 비정형 데이터(unstructured data) : 쉽게 말해 형식이 없는 데이터입니다. 흔히 텍스트, 음성, 영상과 같은 데이터가 비정형 데이터 범위에 속합니다. 반대로 정형 데이터(structured data)는 데이터베이스의 정해진 규칙(rule)에 맞게 데이터를 저장하며, 각 데이터는 열 이름으로 의미를 쉽게 파악할 수 있습니다.
※ NoSQL : 비관계형 데이터베이스를 가리킬 때 사용합니다. 기존 관계형 데이터베이스의 한계를 극복하는 데이터 저장소로 도큐먼트, 그래프, 키-값, 검색 등 다양한 데이터 모델을 사용합니다.
키-값 데이터베이스는 관계형 데이터베이스와 함께 가장 많이 사용합니다. 키-값 스토어(key-value store)라 불리기도 하며, 키와 값을 한 쌍으로 데이터를 저장하는 비관계형 데이터베이스 유형입니다. 키-값 데이터베이스는 고유한 식별자로 사용하며 단순한 객체에서 복잡한 집합체에 이르기까지 무엇이든 키와 값이 될 수 있습니다.
이 구조의 특징은 스키마 없이 작동한다는 점입니다. 따라서 데이터 구조를 미리 정의할 필요가 없으며 시간이 지나더라도 언제든지 바꿀 수 있으므로 비정형 데이터를 쉽게 저장할 수 있습니다. 키-값은 다양한 형태로 표현할 수 있습니다.
※ 스키마 : 데이터베이스의 구조와 제약 조건에 대하여 전반적인 명세를 기술한 것을 말합니다. 즉, 데이터베이스를 구성하는 자료개체의 성질, 관계, 조작, 자룟값 등의 정의를 총칭한 것 입니다.
NoSQL 유형 | 특징 | 종류 |
키 - 값 데이터베이스 (Key-Value Database) |
키-값 형태로 저장하며 수평으로 확장하기 쉽다. 값의 내용으로 쿼리할 수 없다. | Memcached, Redis, LevelDB 등 |
도큐먼트 데이터베이스 (Document Database) |
키-값 모델이 진화한 형태로 키-도큐먼트 형태로 저장된다. 값이 계층적인 형태로 저장된다. | MongoDB, CouchDB, MarkLogic 등 |
컬럼 데이터베이스 (Column Database) |
키에 해당하는 값에 각기 다른 스키마를 가질 수 있다. 대용량 데이터 압축, 분산 처리, 집계 처리 등에 뛰어나다. | HBse, Cassandra, Hypertable 등 |
그래프 데이터베이스 (Graph Database) |
데이터를 노드로 표현하며 노드 사이의 관계를 엣지로 표현한다. 소셜미디어나 네트워크 다이어그램 등에서 사용할 수 있다. | Neo4j, Blazegraph, OrientDB 등 |
NoSQL 데이터베이스의 종류와 특징
관계형 데이터베이스
관계형 데이터베이스는 실무에서 많이 사용하는 데이터베이스 종류의 하나입니다. 관계형 데이터베이스에서는 데이터를 테이블 형태로 저장합니다. 데이터를 열(column)과 행(row)으로 구성한 테이블로 정리하며 고유키(primary key)가 각 행을 식별합니다. 데이터는 행 단위로 저장되며, 각 항목의 속성은 열이라고 표현합니다. 열 속성에 따라 데이터 유형이 정해지며 각 속성에 맞게 저장된 데이터를 행이라고 합니다. 그리고 이렇게 저장된 행의 집합을 테이블이라고 합니다.
용어 | 설명 |
열 | 각 열은 고유한 이름을 가지며 자신만의 타입을 가진다. 열은 필드(field) 또는 애트리뷰트(arrtibute)라고도 한다. |
행 | 관계된 데이터의 묶을을 의미하며 한 테이블의 모든 행은 같은 수의 열을 가진다. 행은 튜플(tuple)또는 레코드(record)라고도 한다. |
테이블 | 행과 열 값들의 모음을 나타내며, 도메인 특성에 따라 데이터를 논리적으로 그룹화해 놓은 것이다. |
관계형 데이터베이스의 구성
관계형 데이터베이스는 100여 개 이상의 다양한 제품들이 있으며 그중 대중적으로 잘 알려진 대표적인 데이터베이스는 다음 표처럼 정리할 수 있습니다.
데이터베이스 | 상용 유무 | 특징 |
SQL Server | 상용 | 마이크로소프트(Microsoft)에서 개발한 RDBMS |
Oracle | 상용 | 오라클(Oracle)에서 개발한 RDBMS |
DB2 | 상용 | IBM에서 개발한 RDBMS |
PostgreSQL | 오픈 소스 | 버클리 대학교에서 개발한 RDBMS |
MySQL | 오픈 소스 | 오픈 소스 커뮤니티에서 개발한 RDBMS |
SQLite | 오픈 소스 | 오픈 소스 커뮤니티에서 개발한 RDBMS로 임베디드 시스템에 주로 사용 |
데이터베이스의 종류