쏭의 개발 블로그
[DB] SQL vs NoSQL 본문
요약
- 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에서 데이터를 저장, 수정, 삭제, 검색 할 수 있음
특징
- 데이터는 정해진 데이터 스키마에 따라 테이블에 저장됨
- 스키마를 따르지 않는 레코드는 테이블에 추가 불가능
- 데이터는 관계를 통해 여러 테이블에 분산됨
- 중복을 피하기 위해 관계를 이용
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 데이터베이스
- 속성을 Key-Value의 쌍으로 나타내는 데이터를 배열의 형태로 저장하는 구조
- key : 속성 이름
- value : 속성에 연결된 데이터 값
- 속도가 빠르고 분산 저장 시 용이함
- Redis, Dynamo 등
(2) Wide-Column 데이터베이스
- 데이터베이스의 열(column)에 대한 데이터를 집중적으로 관리하는 데이터베이스
- 각 열에는 key-value형식으로 데이터가 저장되고 컬럼 패밀리(column families)라고 하는 열의 집합체 단위로 데이터를 처리할 수 있음
- 데이터 처리에 필요한 열을 유연하게 선택가능
- → 규모가 큰 데이터 분석에 주로 사용되는 데이터베이스 형식
- Cassadra, HBase 등
(3) 문서형(Document) 데이터베이스
- 데이터를 테이블이 아닌 문서처럼 저장하는 데이터베이스
- 많은 문서형 데이터베이스에서 JSON과 유사한 형식의 데이터를 문서화하여 저장
- 각 문서는 하나의 속성에 대한 데이터를 가지며 컬렉션이라고 하는 그룹으로 묶어서 관리
- MongoDB, Azure Cosmos DB 등
(4) 그래프(Graph) 데이터베이스
- 데이터 간의 관계를 구성하는 데이터베이스 (자료구조의 그래프와 비슷한 형식)
- 노드에 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 |