관계형 데이터베이스(SQL)
- 관계형 데이터베이스는 데이터베이스 유형중 하나이다.
- 고정된 행과 열로 구성된 테이블에 데이터를 저장한다.
- 테이블의 구조와 데이터 타입 등을 사전에 정의하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입 가능하다.
- 특정한 형식을 지키기 때문에 데이터를 정확히 입력했다면 데이터를 사용할 때 매우 수월하다.
- 관계형 데이터베이스에서는 테이블 간의 관계를 직관적으로 파악할 수 있다.
관계형 데이터베이스 관리 시스템(RDBMS)
- MySQL
- Oracle
- SQLite
- MariaDB
- PostgresSQL
정리
- 관계형 데이터베이스는 테이블 기반으로 데이터를 저장하고 SQL을 사용하여 데이터를 다룬다.
간단하게 말하면 SQL은 관계형 데이터베이스 전용 프로그래밍 언어인 것이다. - 테이블의 관계가 구조화된 데이터의 모음이기 때문에 구조화된 쿼리 언어인 SQL을 사용할 수 있는 것이다.
비관계형 데이터베이스(NoSQL)
- 비관계형 데이터베이스는 관계형 데이터베이스를 뺀 나머지 유형을 총칭하는 뜻이다.
- 관계형 데이터베이스와 방식은 다르지만 비관계형 데이터베이스로도 관계 데이터를 저장할 수 있다.
- 표 형식이 아니며, 관계형 테이블과는 다른 방식으로 데이터를 저장한다.
- 주로 데이터가 고정되어 있지 않은 데이터베이스를 가리키며 데이터 모델에 따라 유형이 다양하다.
- 주요 유형으로는 문서, 키 값, 와이트 컬럼, 그래프가 있다.
- 유연한 스키마를 제공하기 때문에 대량의 데이터와 높은 사용자 부하에서도 손쉽게 확장이 가능하며,
데이터를 읽어올 때 스키마에 따라 데이터를 읽어 온다. - 데이터를 입력하는 방식에 따라 데이터를 읽어올 때 영향을 미친다.
NoSQL 데이터베이스 유형
- Key-Value 타입
- 속성을 Key-Value의 쌍으로 나타대는 배열의 형태로 저장한다.
- Key는 속성 이름을, Value는 속성에 연결된 데이터 값을 의미한다.
- 대표적으로는 Redis, Dynamo가 있다.
- 문서형 데이터베이스
- 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스를 의미한다.
- 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장한다.
- 각각의 문서는 하나의 속성에 대한 데이터를 가지고 있고, 컬렉션이라고 하는 그룹으로 묶어서 관리한다.
- 대표적으로는 MonogoDB가 있다.
- Wide-Column Store 데이터베이스
- 데이터베이스의 열에 대한 데이터를 집중적으로 관리하는 데이터베이스이다.
- 각 열에는 Key-Value 형식으로 데이터가 저장되고, 컬럼 패밀리라고 하는 열의 집합체 단위로 데이터를
처리할 수 있다. - 하나의 행에 많은 열을 포함할 수 있어서 유연성이 높다.
- 데이터 처리에 필요한 열을 유연하게 선택할 수 있다는 점에서 규모가 큰 데이터 분석에 주로 사용된다.
- 대표적으로는 Cassandra, HBase가 있다.
- 그래프 데이터베이스
- 자료구조의 그래프와 비슷한 형식으로 데이터 간의 관계를 구성하는 데이터베이스이다.
- 노드에 속성별로 데이터를 저장한다.
- 각 노드간 관계는 선으로 표시한다.
- 대표적으로는 Neo4J, InfiniteGraph가 있다.
SQL 데이터베이스와 NoSQL 데이터베이스의 차이점
데이터 저장(Storage)
SQL 데이터베이스
- SQL을 이용해서 데이터를 테이블에 저장한다.
- 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장해야 한다.
NoSQL 데이터베이스
- Key-Value, 문서, 와이드 컬럼, 그래프 등의 방식으로 데이터를 저장한다.
스키마(Schema)
SQL 데이터베이스
- 고정된 형식의 스키마가 필요하다. 즉, 처리하려는 데이터 속성별로 열에 대한 정보를 미리 정해두어야 한다.
- 스키마는 나중에 변경할 수 있지만, 이 경우 데이터베이스 전체를 수정하거나 오프라인으로 전환할 필요가 있다.
NoSQL 데이터베이스
- 관계형 데이터베이스보다 동적으로 스키마의 형태를 관리할 수 있다.
- 행을 추가할 때 즉시 새로운 열을 추가할 수 있고, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지
않아도 된다.
쿼리(Querying) - 데이터베이스에 대해서 정보를 요청하는 질의문
SQL 데이터베이스
- 테이블의 형식과 테이블간의 관계에 맞춰 데이터를 요청해야 하기 때문에 SQL과 같이 구조화된 쿼리(SQL)
언어를 사용한다.
NoSQL 데이터베이스
- 데이터 그룹 자체를 조회하는 것에 초점을 두고 있기 때문에 구조화 되지 않은 쿼리(NoSQL) 언어로도
데이터 요청이 가능하다.
확장성(Scalablity)
SQL 데이터베이스
- 일반적으로 관계형 데이터베이스는 수직적으로 확장한다.
- 높은 메모리, CPU를 사용하는 확장이라고도 한다.
- 데이터베이스가 구축된 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 든다.
- 여러 서버에 걸쳐서 데이터베이스의 관계를 정의할 수 있지마, 매우 복잡하고 시간이 많이 든다.
NoSQL 데이터베이스
- NoSQL로 구성된 데이터베이스는 수평적으로 확장한다.
- 보다 값싼 서버 증설 또는 클라우드 서비스를 이용하는 확장이라고도 한다.
- NoSQL 데이터베이스를 위한 서버를 추가적으로 구축하면 많은 트래픽을 보다 편리하게 처리할 수 있다.
- 수직적 확장보다 상대적으로 비용이 저렴하다.
참고 블로그
SQL(구조화 쿼리 언어) vs NoSQL(비구조화 쿼리 언어)
PPT
'CS(Computer Science)' 카테고리의 다른 글
CS Study : 9주차 - 멀티 프로세스와 멀티 스레드 (0) | 2023.01.13 |
---|---|
CS Study : 9주차 - 프로세스와 스레드 (0) | 2023.01.13 |
CS Study 8주차 : SQL Injection (0) | 2023.01.06 |
CS Study 8주차 : 교착상태(Dead Lock) (0) | 2023.01.06 |
CS Study 7주차 : 트랜잭션(Transaction) (0) | 2022.12.22 |