관계형 데이터베이스 쓰는 이유 - gwangyehyeong deiteobeiseu sseuneun iyu

오늘은 관계형 데이터 베이스와 비관계형 데이터베이스에 대해서 공부했다.

간단하게 장단점과 어느 상황에서 어떤 데이터 베이스을 사용 해야 하는지 알아보았다.

  • SQL (Structured Query Language) 관계형 데이터 베이스 

SQL은 구조화된 쿼리 언어의 약자로 데이터베이스와 상호 작용하는 언어이다. 관계형 데이터 베이스는 테이블(Table)로 이루어져 있으며 이 테이블들은 행(row)과 열(column)으로 이루어져 있다. 이러한 테이블들의 관계(relationship)를 종속적으로 나타내는 것이 관계형 데이터 베이스의 특징이다.

관계형 데이터베이스 쓰는 이유 - gwangyehyeong deiteobeiseu sseuneun iyu
관계형 데이터 베이스 예시 (dbdiagram.io)

이처럼 다양한 정보들을 각각의 테이블에 분산시켜 담아두고 테이블들의 관계를 표현할 수 있다.

용어
세로줄 -> 열 -> column -> field -> attribute
가로줄 -> 행 -> row -> tuple -> recode

관계
1. 1 : 1 (일 대 일) 관계
2. 1 : n (일 대 다) 관계
3. m : n (다 대 다) 관계

장점

1. 명확하게 정의 된 스키마
2. 데이터 무결성이 보장된다.
3. 데이터의 분류, 정렬, 탐색 속도가 빠르다.

단점

1. 기존에 작성된 스키마를 수정하기 어렵다.
2. 대량의 데이터를 다루는데 비효율적이다.

예시

  • NoSQL 비관계형 데이터 베이스

NoSQL은 이름에서도 알 수 있듯이 SQL을 사용하지 않는 DB라고 할 수 있다. NoSQL 데이터베이스는 특정 데이터 모델에 비해 특정 목적에 맞추어 구축되는 데이터베이스로서 현대적인 애플리케이션 구축을 위한 유연한 스키마를 갖추고 있다. 
비관계형(none-relationship)이기 때문에 테이블 간의 관계가 있지 않고 데이터 저장 방식도 SQL과는 좀 다른 편이다.
얼핏 보면 JSON 데이터와 비슷하게 보이는 객체 형식으로 저장된다.

관계형 데이터베이스 쓰는 이유 - gwangyehyeong deiteobeiseu sseuneun iyu
NoSQL 예시

용어

SQL에서의 테이블(table) -> NoSQL에서는 컬렉션(Collection)
SQL에서의 레코드(record) -> NoSQL에서는 문서(document)

장점

1. NoSQL 데이터베이스는 일반적으로 유연한 스키마를 제공하여 보다 빠르고 반복적인 개발이 가능하게 된다.
  저장된 데이터를 언제든지 조정이 가능하고 새로운 필드를 추가 가능하다.
2. NoSQL 데이터베이스는 읽기 쓰기 작업이 빠르며 응답속도나 처리 효율 면에서도 SQL보다 성능이 뛰어나다.
3. 데이터를 분산 처리할 수 있다.

단점

1. 데이터가 여러 컬렉션에 중복된다면 수정 작업 시 모든 컬렉션에서 수행해야 한다.
2. 유연성으로 인한 데이터 구조 결정이 어렵다.

예시

MongoDB, DynamoDB 등등
aws.amazon.com/ko/nosql/

언제 어디서 어떤 DB를 사용해야 할까?

  • 여러 곳에 관계가 있는 데이터가 자주 변경되는 경우 -> SQL
  • 변경이 잘 안되고 명확한 스키마가 중요한 경우 -> SQL
  • 정확한 데이터 구조를 알 수 없거나 변경/확장의 가능성이 있는 경우 -> NoSQL
  • 데이터를 자주 읽어오지만 변경되지 않는 경우 (한 번의 변경으로 수십 개의 문서를 업데이트할 필요가 없는 경우) -> NoSQL
  • 데이터 베이스를 수평으로 확장하는 경우 (많은 양의 데이터를 다루는 경우) -> NoSQL