RDBMS (SQL)
정의
데이터베이스 유형 중에 하나로, 각 열은 하나의 속성에 대한 정보를 저장하고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다. 테이블의 구조와 데이터 타입 등을 사전에 정의한다. 그리고 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다. 특정한 형식을 지키키 때문에, 데이터를 정확히 입력했다면 데이터를 사용할 때에 수월하다는 장점이 있다.
종류
- MySQL
- Oracle
- SQLite
- MariaDB
- PostgresSQL
SQL
관계형 데이터베이스는 테이블 간의 관계가 구조화된 데이터 모음이기에 SQL(구조화된 쿼리 언어)를 사용한다. RDBMS 프로그램은 기본적인 SQL을 지원한다.
특징
- 행/열 데이터로 표현된다.
- 상호관련성을 가진 테이블의 집합으로 구성된다.
- 테이블 사이의 관곌르 외래키로 나타낸다.
- 스키마 변경이 어렵다.
- 수직확장(하드웨어 스펙 확장), 행 구간 확장(양적 확장)은 클수록 힘듬
- 유지보수에 대한 비용이 크다.
- SQL을 사용해 데이터를 다룬다.
- ACID 성질을 갖는다.
장점
- 스키마는 명확하게 정의되어 있으며, 데이터의 무결성을 보장한다.
- 관계는 각 데이터를 중복없이 한번만 저장한다.
단점
- 스키마는 매우 신중하게 정해야한다.(향후 수정이나 변경이 어렵다)
- 스키마간 관계에 대한 쿼리를 사용해야하는 경우, 매우 복잡하고 방대한 쿼리가 사용될 수 있다.
- 수평적 확장이 어렵다.
비관계형 DB (NoSQL)
정의
Not only SQL의 약자로, 일반적으로 SQL을 사용하는 관계형 데이터베이스가 아닌 모든 데이터베이스를 총칭한다.
종류
Key-Value
속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장한다. Redis가 대표적인 Key-Value 형식의 데이터베이스이다.
도큐먼트
데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미한다. 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다. 대표적으로 MongoDB가 있다.
특징
- 스키마리스 함. (형식이나 명시된 제약이 정해지지 않음)
- 행 구간 확장이 쉽다.
- 유연하다.
- 비용이 저렴하고 오픈소스도 많다.
- 다른 스키마를 신경쓰지 않아도 됨
장점
- 스키마가 없기 때문에 유연하다.
- 어플리케이션에 최적화된 형식으로 저장할 수 있다. 이는 일반적으로 스키마의 관계를 통해 조회하는 것 보다 훨씬 빠른 조회 속도를 보여주는 경우가 많다.
- 수직 및 수평확장이 가능하다.
단점
- 중복되는 데이터가 존재, 여러 컬렉션에 동일한 데이터가 들어감. 이 경우 업데이트시 한번의 업데이트는 여러 컬렉션에 업데이트가 반영되어야 함
- 구조화되어 있지 않기 때문에 데이터의 상대적으로 원자성을 보장하기 어려움
SQL vs NoSQL
- 데이터가 자주 변경되며, 향후 데이터 구조를 계속 이어가면서 사용자와 데이터가 중요한 경우는 SQL
- 데이터가 자주 변경되지 않으며, 데이터 구조를 알 수 없거나 상황에 따라 구조에 대한 예외사항들이 존재하거나, 데이터베이스를 수평적으로 확장할 여지가 존재하는 경우는 NoSQL
참고
SQL vs NoSQL (MySQL vs. MongoDB)
[데이터베이스] SQL(구조화 쿼리 언어) vs NoSQL(비구조화 쿼리 언어)