# SQL(관계형 DB)
- 관계형 데이터베이스에서는 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있습니다.
- 관계형 데이터베이스는 행(row)과 열(column)로 구성된 테이블에 데이터를 저장합니다.
- 관계형 데이터베이스에서는 SQL을 활용해 원하는 정보를 쿼리할 수 있습니다.
- 관계형 데이터베이스에서는 테이블 간의 관계를 직관적으로 파악할 수 있습니다.
대표적인 관계형 데이터베이스는 MySQL, Oracle, SQLite, PostgresSQL 등이 있습니다.
- DDL (데이터 정의 언어) : 스키마 생성 및 수정에 사용되는 쿼리입니다. SQL의 일반적인 DDL 명령에는 CREATE, ALTER 및 DROP이 포함됩니다.
- DML (데이터 조작 언어) : 이 쿼리는 데이터베이스에서 선택, 삽입, 업데이트 및 삭제 작업을 수행하는 데 사용됩니다. SQL의 일반적인 DML 명령은 SELECT, INSERT, UPDATE 및 DELETE입니다.
- DCL (데이터 제어 언어) : 이러한 쿼리는 액세스를 제어하고 데이터베이스에 대한 권한을 제공하는 데 사용됩니다. SQL의 일반적인 DCL 명령은 GRANT 및 REVOKE입니다.
- TCL (트랜잭션 제어 언어) : 이러한 쿼리는 데이터 무결성을 유지하기 위해 트랜잭션을 제어하고 관리하는 데 사용됩니다. SQL의 일반적인 TCL 명령에는 BEGIN, COMMIT 및 ROLLBACK이 포함됩니다.
# NOSQL(비관계형 DB)
NoSQL은 SQL 앞에 붙은 'No'에서 알 수 있듯이, 주로 데이터가 고정되어 있지 않은 데이터베이스를 가리킵니다. NoSQL이 SQL과 반대되는 개념처럼 사용된다고 해서, NoSQL에 스키마가 반드시 없는 것은 아닙니다.
관계형 데이터베이스에서는 데이터를 입력할 때 스키마에 맞게 입력해야 하는 반면, NoSQL에서는 데이터를 읽어올 때 스키마에 따라 데이터를 읽어 옵니다. 이런 방식을 'schema on read'라고도 합니다. 읽어올 때에만 데이터 스키마가 사용된다고 하여, 데이터를 쓸 때 정해진 방식이 없다는 의미는 아닙니다. 데이터를 입력하는 방식에 따라, 데이터를 읽어올 때 영향을 미칩니다.
1. NOSQL 특징
- Key-Value 타입 : 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장합니다. 여기서 Key는 속성 이름을 뜻하고, Value는 속성에 연결된 데이터 값을 의미합니다.
- 문서형(Document) 데이터베이스 : 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미합니다. 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장합니다.
- Wide-Column 데이터베이스 : 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스입니다. 각 열에는 key-value 형식으로 데이터가 저장되고, 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있습니다. 하나의 행에 많은 열을 포함할 수 있어서 유연성을 높습니다. 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식입니다.
- 그래프(Graph) 데이터베이스 : 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스입니다. 노드(nodes)에 속성별(entities)로 데이터를 저장합니다. 각 노드간 관계는 선(edge)으로 표현합니다.
# 장단점
SQL 장점
- 명확하게 정의된 스키마, 데이터 무결성 보장
- 관계는 각 데이터를 중복없이 한번만 저장
SQL 단점
- 덜 유연함. 데이터 스키마를 사전에 계획하고 알려야 함. (나중에 수정하기 힘듬)
- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있음
- 대체로 수직적 확장만 가능함
NoSQL 장점
- 스키마가 없어서 유연함. 언제든지 저장된 데이터를 조정하고 새로운 필드 추가 가능
- 데이터는 애플리케이션이 필요로 하는 형식으로 저장됨. 데이터 읽어오는 속도 빨라짐
- 수직 및 수평 확장이 가능해서 애플리케이션이 발생시키는 모든 읽기/쓰기 요청 처리 가능
NoSQL 단점
- 유연성으로 인해 데이터 구조 결정을 미루게 될 수 있음
- 데이터 중복을 계속 업데이트 해야 함
- 데이터가 여러 컬렉션에 중복되어 있기 때문에 수정 시 모든 컬렉션에서 수행해야 함 (SQL에서는 중복 데이터가 없으므로 한번만 수행이 가능)
'SQL' 카테고리의 다른 글
데이터베이스 트랜잭션의 ACID에 대해 배워보자! (3) | 2022.06.16 |
---|