데이터베이스의 종류
계층형 데이터베이스
특징
- 데이터를 레벨 또는 순위로 배열하여 트리와 유사한 구조로 데이터를 구성한다.
- 부모 데이터는 그 아래에 하나 이상의 자식 데이터를 가진다. 하나의 자식 데이터에 둘 이상의 부모 데이터를 가질 수 없다.
장점 / 단점
- ✅ 부모-자식 구조의 엄격하고 복잡한 탐색에 이 이루어지기 때문에, 데이터베이스에 대한 쉬운 접근과 빠른 질의 시간으로 높은 성능을 제공.
- ❌ 유연성이 떨어지고 확장하기 어렵다.
- ❌ 새로운 데이터를 추가하려면 계층 구조를 탐색해야 하는 경우가 많으므로 시간이 오래 걸릴 수 있다.
사용되는 곳
- Windows 레지스트리
- 파일 시스템 (NTFS, HFS+ 등)
- XML 파일
관계형 데이터베이스 (SQL 데이터베이스)
특징
- 데이터 간에 사전 정의된 관계가 있으며, 이러한 관계를 통해 데이터를 저장하고, 데이터에 액세스 한다.
- 행(혹은 레코드) 과 열로 구성되는 테이블 형식으로 데이터를 저장한다. 행과 열은 데이터의 속성과 값 간의 다양한 관계를 나타낸다.
- 각 행에 존재하는 고유 식별자인 기본 키라는 속성과, 다른 테이블의 기본 키에 대한 참조인 외래 키를 사용하여 서로 다른 테이블 간의 관계를 만들 수도 있다.
- 이전까지 자주사용되었던 계층형 데이터베이스의 데이터간의 관계를 파악하는 점이 힘들다는 한계를 가능하게 해준다. 또한, 물리적 데이터 스토리지 와 데이터베이스 관리 / 사용 을 분리했다. 따라서, 물리적 데이터 스토리지를 관리할 필요 없이 데이터를 저장하고 검색할 수 있다.
장점 / 단점
- ✅ 전체 데이터베이스 구조를 변경하거나 기존 애플리케이션에 영향을 주지 않고 테이블이나 관계, 데이터를 추가 및 업데이트, 삭제할 수 있다.
- ✅ 테이블끼리 조인하여, 다양한 데이터 간의 상호 연결에 대한 더 깊은 인사이트를 얻을 수 있다.
- ✅ 일련의 제약 조건(프라이머리 키, 외래 키, ‘Not NULL’ 제약 조건 등)을 사용하여 데이터베이스 내에서 데이터 무결성을 적용하기 때문에, 데이터의 정확성과 신뢰성을 보장된다.
- ✅ ACID(원자성, 일관성, 격리, 내구성) 규정 을 준수하여, 오류, 실패 또는 기타 잠재적 오작동에 관계없이 데이터 유효성을 보장한다.
SQL (구조적 쿼리 언어)
- 관계형 데이터베이스에 정보를 저장하고 처리하기 위한 프로그래밍 언어
- SQL 문(혹은 SQL 쿼리) 을 사용하여 데이터베이스에서 정보를 저장, 업데이트, 제거, 검색 및 검색할 수 있다.
- 데이터베이스 성능을 유지 관리하고 최적화하는 데에도 사용될 수 있다.
사용되는 곳
- MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database
비-관계형 데이터베이스 (NO-SQL 데이터베이스)
특징
- SQL 데이터베이스에 대한 모든 대안 데이터베이스를 포괄하는 용어로써, 특정 데이터 모델에 맞춰 설계된다는 점에서 목적별 데이터베이스라고도 불리운다.
- 현대적인 애플리케이션 구축을 위한 유연한 스키마를 갖춘다.
장점 / 단점
- ✅ 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발을 가능하게 해준다. 이같은 유연한 데이터 모델은 NoSQL 데이터베이스를 반정형 및 비정형 데이터에 이상적으로 만들어 준다.
- ✅ 일반적으로 고가의 강력한 서버를 추가하는 대신 분산형 하드웨어 클러스터를 이용하여, 확장에 용이하도록 설계되었다.
- ✅ 특정 데이터 모델 및 액세스 패턴에 최적화되어있다. 따라서 관계형 데이터베이스로 유사한 기능을 수행할 때보다 더 높은 성능을 얻을 수 있다.
유형
-
문서 데이터베이스 : JSON, BSON, XML 형식으로 데이터를 저장하며, 유연한 구조 덕분에 개발자들이 선호한다. 전자 상거래, 거래 플랫폼, 모바일 앱 개발 등에 사용된다. MongoDB가 대표적이다.
-
키-값 저장소 : 키와 값의 쌍으로 데이터를 저장하는 가장 단순한 형태이다. 사용자 기본 설정, 쇼핑 카트 등에 활용되며, Redis와 Riak KV 가 있다.
-
컬럼 기반 데이터베이스 : 데이터를 컬럼 단위로 저장하여 특정 컬럼에 대한 분석에 효율적이다. 데이터 압축률이 높고 읽기 속도가 빠르며, 분석 작업에 주로 사용된다.
-
그래프 데이터베이스 : 데이터 요소 간의 관계를 노드와 링크로 표현하는 데 특화되어 있다. 사기 탐지, 소셜 네트워크 분석 등에 사용되며, Neo4j가 대표적이다.
사용되는 곳
- Redis, Firebase 의 Realtime Databse / Cloud Firestore, MongoDB