쏭의 개발 블로그

[DB] SQL vs NoSQL 본문

DB

[DB] SQL vs NoSQL

songu1 2023. 1. 31. 12:19

요약

  • RDB(관계형 데이터베이스)RDBMS(데이터베이스를 관리)로 생성하고 수정,관리
  • SQL은 RDBMS를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
  • NoSQL(비관계형 데이터베이스)는 RDB형태의 관계형 데이터베이스가 아닌 다른 형태의 데이터 저장방식
  • RDBMS : 클라이언트/서버 환경에 맞는 데이터 저장 기술
  • NoSQL : 클라우드 환경에 맞는 저장 기술

[1] RDB/RDBMS/SQL

💡 RDB/RDBMS가 SQL?

  • 관계형 데이터베이스는 데이터베이스의 한 유형이며 하나의 데이터 조직화 컨셉
  • RDBMS 솔루션까지 묶어서 관계형 데이터베이스하고도 함
  • 관계형 데이터베이스에서는 모두 SQL이라는 언어를 사용 → RDB를 SQL이라고 부름

1. RDB (관계형 데이터베이스 : Relational Database)

  • 관계형 데이터 모델을 기초로 두고 모든 데이터를 2차원 테이블 형태로 표현하는 데이터베이스
  • 구성된 테이블이 다른 테이블과 관계를 맺고 모여있는 집합체
    • 이러한 관계를 나타내기위해 외래키(foreign key)사용
  • RDBMS에서 데이터를 저장, 수정, 삭제, 검색 할 수 있음

 

특징

  1. 데이터는 정해진 데이터 스키마에 따라 테이블에 저장
    • 스키마를 따르지 않는 레코드는 테이블에 추가 불가능
  2. 데이터는 관계를 통해 여러 테이블에 분산
    • 중복을 피하기 위해 관계를 이용

https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

2. RDBMS (Relational Database Management System)

  • RDBMS
    • 사용자의 요구에 따라 정보를 생성해 관계형 데이터베이스를 생성하고 수정하고 관리할 수 있는 소프트웨어
  • MySQL, Oracle Database, MariaDB, PostgreSQL

3. SQL (Structured Query Language)

  • RDBMS(데이터베이스 관리 시스템)의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어
  • 관계형 데이터베이스 관리 시스템에서 자료를 검색과 관리함
  • 데이터베이스 스키마 생성 및 수정, 데이터베이스 객체 접근 조정 관리를 위해 고안

💡 스키마

  • 데이터베이스에 저장되는 데이터 구조와 제약조건을 정의
  • 스키마 : 평면도
  • 데이터베이스 : 집
  • 테이블 : 방

 

[2] NoSQL

 

1. NoSQL (Not Only SQL)이란?

  • SQL을 사용하지 않는 데이터베이스 관리 시스템 (비관계형 데이터베이스)
  • 대량의 분산된 데이터를 저장하고 조회하는데 특화되었으며 스키마 없이 사용 가능하거나 느슨한 스키마를 제공하는 저장소
  • mongoDB, redis 등

 

2. NoSQL의 특징

  • RDBMS와 달리 테이블간의 관계를 정의하지 않음
    • 테이블은 하나의 테이블이며 테이블간 관계를 정의하지 않아 테이블간 join 불가능
  • RDBMS에 비해 대용량의 데이터 저장 가능
  • 분산형 구조
    • 여러 곳의 서버에 데이터를 분산 저장하여 특정 서버에 장애가 발생했을 때도 데이터 유실 혹은 서비스 중지가 발생하지 않도록 함
  • 고정되지 않은 테이블 스키마를 가짐
    • 스키마가 유동적. 데이터를 저장하는 컬럼이 서로 다른 이름과 데이터타입을 갖는 것이 허용됨

💡 JOIN 하고 싶을 때?

  • 컬렉션을 통해 데이터를 복제하여 각 컬렉션 일부분에 속하는 데이터를 정확하게 산출
    • ⇒ 데이터가 중복되어 서로 영향을 줄 위험이 있으므로 조인을 잘 사용하지 않고 자주 변경되는 데이터일때 NoSQL 사용하는 것이 효과적

 

3. NoSQL의 종류

(1) Key-Value 데이터베이스

https://en.wikipedia.org/wiki/Key%E2%80%93value_database

  • 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장하는 구조
    • key : 속성 이름
    • value : 속성에 연결된 데이터 값
  • 속도가 빠르고 분산 저장 시 용이함
  • Redis, Dynamo 등

(2) Wide-Column 데이터베이스

https://database.guide/what-is-a-column-store-database/

 

  • 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스
  • 각 열에는 key-value형식으로 데이터가 저장되고 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있음
  • 데이터 처리에 필요한 열을 유연하게 선택가능
  • → 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식
  • Cassadra, HBase 등

(3) 문서형(Document) 데이터베이스

https://inyl.github.io/programming/2017/05/09/database.html

  • 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스
  • 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장
  • 각 문서는 하나의 속성에 대한 데이터를 가지며 컬렉션이라고 하는 그룹으로 묶어서 관리
  • MongoDB, Azure Cosmos DB 등

(4) 그래프(Graph) 데이터베이스

https://database.guide/what-is-a-graph-database/#more-896

  • 데이터 간의 관계를 구성하는 데이터베이스 (자료구조의 그래프와 비슷한 형식)
  • 노드에 entity별로 데이터를 저장
  • 노드간의 관계는 선(edge)로 표현
  • Neo4J, InfiniteGraph

 

[3] SQL vs NoSQL

 

 

 


https://gyoogle.dev/blog/computer-science/data-base/SQL%20&%20NOSQL.html

 

SQL과 NOSQL의 차이 | 👨🏻‍💻 Tech Interview

SQL과 NOSQL의 차이 웹 앱을 개발할 때, 데이터베이스를 선택할 때 고민하게 된다. 보통 Spring에서 개발할 때는 MySQL을, Node.js에서는 MongoDB를 주로 사용했을 것이다. 하지만 그냥 단순히 프레임워크

gyoogle.dev

https://im-designloper.tistory.com/67

 

[ DataBase ] RDB, RDBMS, SQL, NOSQL 간단 개념정리

데이터베이스 종류인 RDB, RDBMS, SQL, NOSQL에 대한 간단한 개념 정리!! 일단 자세한 설명전에 간단하게 용어들의 관계를 정의하자면 아래와 같습니다. 🅐RDB(관계형 데이터베이스)를 🅑RDBMS(데이터

im-designloper.tistory.com

http://www.incodom.kr/NoSQL_DB_%EC%9D%98_%EC%A2%85%EB%A5%98

 

생물정보 전문위키, 인코덤

Wikipedia for Bioinformatics

www.incodom.kr

 

'DB' 카테고리의 다른 글

[DB] 정규화  (0) 2023.01.31
[DB] 이상현상(Anomaly)  (0) 2023.01.31
[DB] Index 색인  (1) 2023.01.30
[DB] Key  (0) 2023.01.30
[DB] 데이터베이스 개념  (0) 2023.01.30