[CS] 8. RDBMS, NoSQL
사전 지식
DB
컴퓨터 시스템에 전자 방식으로 구조화된 정보나 데이터의 집합
DBMS
DBMS(DataBase Management System)은 사용자와 DB 사이에서 사용자의 요구에 따라 데이터를 생성하고 DB를 관리해주는 소프트웨어이다. DBMS는 데이터를 계층이나 탐색 형식으로 저장한다. 파일 시스템을 사용해 저장하며 테이블 간에는 아무런 관계가 존재하지 않는다. 데이터에 대한 많은 보안을 제공하지 않으며 정규화를 수행할 수 없어 데이터는 높은 중복성을 가질 수 있다.
SQL
SQL(Strucured Query Language)는 관계형 DBMS의 데이터 관리를 위해 설계된 프로그래밍 언어. 자료 검색, 관리, DB 스키마 생성, 수정, DB 객체 접근 조정 관리를 위해 고안
RDB
관계형 데이터베이스(RDB, Relational DataBase)는 데이터가 하나 이상의 열과 행의 테이블(또는 '관계')에 저장되어 서로 다른 데이터 구조가 어떻게 관련되어 있는지 쉽게 파악하고 이해할 수 있도록 사전 정의된 관계로 데이터를 구성하는 DB이다. 관계는 이러한 테이블 간의 상호작용을 기반으로 설정되는 여러 테이블 간의 논리적 연결. 모든 데이터를 2차원 테이블 형태로 표현.
➕RDB 장점
-유연성: 전체 DB 구조를 변경하거나 기존 애플리케이션에 영향을 주지 않고 필요할 때마다 간편하게 테이블, 관계를 추가 또는 삭제하고 데이터를 변경 가능
-사용 편의성: 기술자가 아닌 사용자도 DB와 상호작용하는 방법을 배울 수 있는 SQL을 사용하여 복잡한 쿼리를 쉽게 실행 가능
-내장된 보안 기능: 역할 기반 보안을 통해 데이터 엑세스가 특정 사용자로 제한
-ACID 규정 준수: 데이터 유효성 검사 가능
-공동작업: 여러 사용자가 동시에 데이터 운영, 액세스가 가능
RDBMS(Relationsal DataBase Management System)
RDB를 생성하고 수정하고 관리할 수 있는 소프트웨어로, DBMS 유형 중 하나이다. MySQL, PostgreSQL, MariaDB, Microsoft SQL Server, Oracle Database이 대표적인 RDBMS이다. RDBMS는 RDB가 관계를 맺고 모여있는 집합체라고 할 수도 있으며, 이러한 관계를 나타나기 위해 외래 키를 사용하고, 이 외래 키를 이용해 테이블 간 join이 가능하다는 것이 RDBMS의 가장 큰 특징이다.
정규화를 통해 데이터의 중복성을 최소화하며 트랜잭션을 수행하는 것이 더 쉽다. 데이터의 원자성, 일관성, 격리 및 내구성을 유지하며 데이터 무결성을 높인다. 이러한 데이터들을 활용하기 위해 사용자는 SQL이라는 언어를 활용한다.
RDBMS의 장점
- 정해진 스키마(DB 설계도)에 따라 데이터를 정리해야 하기 때문에 명확한 데이터 구조를 보장한다. (완전성 보장, 데이터 분류, 정렬, 탐색 속도가 비교적 빠르다)
- 각 관계는 데이터를 중복없이 한 번만 저장할 수 있다.
RDBMS의 단점
- 테이블-테이블 간 관계를 맺고 있어 join문이 많은 복잡한 쿼리가 만들어질 수 있다.
- 성능 향상을 위해서 서버의 성능을 향상시켜야 한다. (비용이 기하급수적으로 증가)
- 스키마에 따라 데이터를 정리하므로 스키마가 변경될 경우 번거롭다
NoSQL(Not Only SQL)
RDB 형태의 관계형 DB가 아닌 다른 형태의 데이터 저장 기술을 의미한다. NoSQL에서는 테이블 간 관계를 정의하지 않고, 테이블 간 join도 일반적으로 불가능하다. 정해진 스키마가 없기 때문에 보다 자유롭게 데이터를 저장할 수 있다. key값만 가지고 데이터에 대한 입-출력을 수행할 수 있다. 수평적 확장성을 가진다.(속도는 변화가 없으며 안정적인 확장이 가능함)
NoSQL 종류
1. Key-Value DB
데이터가 K-V 쌍으로 저장된다. 간단한 API를 제공하기 때문에 질의의 속도가 빠른 편이다. (ex: NoSQL Key-Value Model로는 Redis, Riak, Amazon Dynamo DB)
2. Document DB
데이터가 K-V 쌍으로 저장된다. Key-Value 모델과 다른 점은 Document DB는 Value가 계층적인 Document로 저장된다는 것이다. Value는 객체지향에서의 객체와 유사하다. Value가 하나의 단위로 취급되어 저장되기 때문에 Value를 여러 테이블에 나눠 저장할 필요가 없어졌으며, 객체-관계 mapping이 필요하지 않다.(객체를 Document 형태로 바로 저장 가능). K-V로 저장되어 있어서 검색이 수월하다. 위 모델에서는 질의의 결과가 JSON이나 xml 형태로 출력된다. (ex: NoSQL Document Model로는 MongoDB, CouthDB)
3. Wide Column DB
키에서 필드를 결정하는 특징을 가진다. 키는 Row와 Column-family, Column-name을 가진다. 연관 데이터들은 Column-family 안에 속해 있으며, 각자의 Column-name을 가진다. 질의는 Row, Column-family, Column-name을 통해 수행된다.
(ex: NoSQL Column-family Model로는 HBase, Hypertable)
4. Graph DB
데이터를 Node, Edge, Property와 함께 Graph 구조를 사용해 데이터를 표현하고 저장하는 DB이다. 개체와 관계를 그래프 형태로 표현해 관계형 모델이라고도 할 수 있으며, 데이터 간 관계가 탐색의 키일 경우 적합하다. (연관 데이터를 추천하는 추천 엔진 등에 적합.)
NoSQL 장단점
장점
- 스키마가 없어 유연한 데이터 구조를 가질 수 있다.(언제든 저장된 데이터 조정과 새로운 필드 추가 가능)
- 데이터 분산이 용이하여 성능 향상에 큰 비용이 들지 않는다.
단점
- 데이터 중복이 발생할 수 있으며 중복된 데이터가 변경될 경우 모든 컬렉션에서 수정을 해야 한다.
- 스키마가 존재하지 않아 명확한 구조가 없으며 데이터 구조 결정이 어렵다.
RDBMS는 데이터 구조가 명확해 변경될 여지가 없고 명확한 스키마가 중요한 경우 사용하는 것이 좋다. 중복된 데이터가 없어 변경이 용이하기 때문에 관계를 맺고 있는 데이터가 자주 변경이 이루어지는 시스템에 적합하다.
NoSQL은 정확한 데이터 구조를 알 수 없고 데이터가 변경/확장 될 수 있는 경우 사용하는 것이 좋다. 중복된 데이터가 변경될 시에는 모든 컬렉션이 수정되어야 하기 때문에 업데이트가 많이 이루어지지 않는 시스템이 좋다.
Reference
https://m.blog.naver.com/cjhol2107/221758915414
[DB] DBMS와 RDBMS의 개념, 차이, 관계
DBMS - DBMS는 DataBase Management System의 약자로 데이터베이스를 관리하는 시스템이다. - ...
blog.naver.com
https://cloud.google.com/learn/what-is-a-relational-database?hl=ko
관계형 데이터베이스(RDBMS)란 무엇인가요? | Google Cloud
관계형 데이터베이스의 작동 방식, 관계형 데이터를 사용하여 조직 데이터를 저장하는 경우의 이점, 비관계형 데이터베이스의 비교에 대해 알아봅니다.
cloud.google.com
https://khj93.tistory.com/entry/Database-RDBMS%EC%99%80-NOSQL-%EC%B0%A8%EC%9D%B4%EC%A0%90
[Database] RDBMS와 NoSQL의 차이점
이번 포스팅에서는 RDBMS와 NoSQL의 차이점을 알아보려고 합니다. 그전에 RDBMS는 무엇이고 왜 사용하며 NoSQL은 무엇이고 왜 사용을 할까요? 그리고 그 두 DB의 차이점은 무엇이며 서로에 대한 장단점
khj93.tistory.com
'CS' 카테고리의 다른 글
| [CS] 10. DB 정규화 (0) | 2023.04.05 |
|---|---|
| [CS] 9. 트랜잭션, 쿼리문 정리 (0) | 2023.03.30 |
| [CS] 7. 쿠키와 세션 (0) | 2023.03.02 |
| [CS] 6. 서버, 클라이언트, WAS, DB 서버 (0) | 2023.02.23 |
| [CS] 4. 라우팅과 라우터 (0) | 2023.02.14 |
