[Database] SQL, NoSQL

2022. 10. 11. 21:12

https://www.r-bloggers.com/2022/02/sql-vs-nosql-for-data-science/

데이터베이스 (Database)

데이터베이스는 데이터들의 집합이다. 데이터베이스는 관계형 데이터베이스와 비관계형 데이터베이스로 구분해서 설명할 수 있다.

관계형 데이터베이스는 SQL을 기반으로 한 데이터베이스이고 비관계형 데이터베이스는 NoSQL을 기반으로 한 데이터베이스이다.

SQL과 NoSQL은 만들어진 방식, 저장하는 정보의 종류, 저장하는 방법 등에 차이가 있다.

 

SQL (Structed Query Language) - 관계형 데이터베이스

관계형 데이터베이스는 SQL을 기반으로 행과 열로 이루어진 테이블에 데이터를 저장한다. 

정해진 테이블의 구조에 맞추어 데이터를 저장하고 테이블 간 관계를 맺는다.

테이블의 구조가 정해져 있기 때문에 데이터를 테이블의 구조에 맞춰서 저장하지 않으면 저장할 수 없다. 

 

ex) MySQL, Oracle, SQLite, PostgresSQL, MariaDB,...

 

NoSQL (Non Structed Query Language) -  비관계형 데이터베이스

관계형 데이터베이스와는 반대로 데이터가 고정되어 있지 않은 데이터 베이스를 말한다. 엄격한 구조를 따르는 SQL에 비해 NoSQL은 유연하게 어떤 데이터의 형태이든 저장이 가능하다. NoSQL 기반의 비관계형 데이터 베이스는 보통 다음과 같이 구성된다.

https://learn.microsoft.com/ko-kr/dotnet/architecture/cloud-native/relational-vs-nosql-data

  • key-value 타입
    • key와 value 쌍의 데이터를 배열의 형태로 저장
    • ex) Redis, Dynamo
  • 문서형(Document)
    • 데이터를 테이블이 아닌 문서처럼 저장
    • JSON과 유사한 형식의 데이터를 문서화하여 저장. 
    • ex) MongoDB
  • Wide-Column
    • 데이터베이스의 컬럼(column)에 대한 데이터를 집중적으로 관리
    • 각 컬럼에는 key-value 형태로 저장되고 컬럼의 집합체 단위로 데이터를 처리
    • ex) Cassandra, HBase
  • 그래프(Graph)
    • 그래프와 비슷한 형식으로 데이터 간 관계를 구성
    • 노드에 속성별로 데이터를 저장.
    • ex) Neo4J, InfiniteGraph

SQL DB와 NoSQL DB의 차이점

1. 데이터 저장

관계형 데이터베이스는 SQL을 이용해서 데이터를 테이블에 저장. 미리 작성된 스키마를 기반으로 형식에 맞게 저장해야 한다.

비관계형 데이터베이스는 key-value, document, wide-column, graph 등의 방식으로 데이터를 저장

 

2.  스키마(Schema)

SQL을 사용하려면 고정된 스키마가 필요하기 때문에 데이터의 속성별로 컬럼에 대한 정보를 미리 정해야 한다. 반면에 NoSQL은 보다 동적으로 스키마의 형태를 관리할 수 있다. 행을 추가할 때 즉시 새로운 열을 추가할 수 있고, 개별 속성에 대해 데이터를 입력하지 않아도 된다.

 

3. 쿼리(Querying)

SQL은 관계형 데이터베이스의 테이블 형식과 테이블 간 관계를 고려하여 요청해야 한다. NoSQL의 쿼리는 데이터 그룹 자체를  조회하는 것에 초점을 두고 있다. 그래서 구조화되지 않은 언어로도 데이터 요청이 가능하다.

 

4. 확장성(Scalability)

일반적으로 관계형 데이터베이스는 수직적으로 확장한다. 높은 메모리, CPU를 사용하는 확장이라고도 한다. 하드웨어의 성능을 많이 이용하기 때문에 비용이 많이 들고 매우 복잡하고 시간이 많이 소모된다. 비관계형 데이터베이스는 수평적 확장으로 비교적 값싼 서버 증설 또는 클라우드 서비스를 이용한 확장이라고 한다. 


SQL 기반의 관계형 데이터베이스를 사용하는 케이스

1. 데이터베이스의 ACID 성질을 준수해야 하는 경우

ACID는 데이터베이스에서 실행되는 트랜잭션에 의한 상태의 변화를 수행하는 과정에서 안정성을 보장하기 위해 필요한 성질이다. SQL을 사용하면 발생할 수 있는 예외적인 상황을 줄이고, 무결성을 보장할 수 있다.

 

2. 소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우

일관된 데이터를 사용하는 경우 관계형 데이터베이스를 사용하는 경우가 많다. 

NoSQL 기반의 비관계형 데이터베이스를 사용하는 케이스

1. 데이터의 구조가 거의 없는 대용량의 데이터를 저장하는 경우

대부분의 NoSQL 데이터베이스는 저장할 수 있는 데이터의 유형에 제한이 없다. 필요에 따라 데이터의 유형을 추가할 수 있기 때문에 정형화되지 않은 많은 양의 데이터가 필요한 경우 사용하면 효과적일 수 있다.

 

2. 클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

클라우드 기반의 데이터베이스 저장소를 구축하면 저렴한 비용의 솔루션을 제공받는다. 확장성이 중요하다면 NoSQL을 사용하는 것이 좋을 수 있다.

 

3. 빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 업데이트하는 경우

NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기 때문에 빠르게 개발하는 과정에서 매우 유리하다.

 

'Computer Science > Database' 카테고리의 다른 글

[MySQL] 기본 문법 정리  (1) 2022.10.12

BELATED ARTICLES

more