728x90
RDBMS를 설명하기에 앞서, 데이터 모델의 종류에는 계층형, 네트워크형, 관계형(RDB)이 있다.
계층형, 네트워크형은 잘 사용하지 않고, 관계형 데이터 모델을 주로 사용한다.
우리가 사용하는 대표적인 데이터베이스 관리 시스템도 대부분이 관계형이라고 보면 된다.
계층형, 네트워크형은 잘 사용하지 않고
관계형 데이터 모델만을 사용하는 이유가 뭘까?
계층형, 네트워크형은 데이터가 저장되어 있는 구성을 변경하면 그에 맞춰 프로그램도 보완해야 하기 때문에 불편하다.
반면, 관계형은 그러한 영향이 적고 프로그램과 데이터를 독립적으로 관리하기 쉽다.
따라서 이번 게시물에서는 RDBMS에 대해서 다뤄보도록 하겠다.
RDB란?
- 정의: 키와 값들의 간단한 관계를 테이블화 시킨 데이터베이스
- 장점
- 여러 가지 표를 조합하여 다양한 데이터에 유연하게 대응할 수 있음
- 프로그램과 데이터를 독립적으로 관리하기 쉬움 - 갱신 비용 감소
- 정형화된 데이터를 저장하기 때문에 데이터의 형태와 크기를 미리 정하고 테이블 단위로 구분하여 데이터를 저장할 수 있음
- 트랜잭션을 통해 ACID를 보장하여 안정적인 데이터 관리가 가능함
- 조인을 포함해 복잡한 조건을 포함하는 데이터 검색이 가능함 (복잡한 질의 가능)
- 데이터베이스 정규화: 관계형 데이터베이스는 데이터 중복성을 줄이고 데이터 무결성을 개선하는 정규화라는 설계 기법을 사용함
- 데이터에 세세하게 규칙을 설정함으로써 정합성을 유지할 수 있음
- 정보의 등록이나 취득을 정확하게 할 수 있음
- 단점
- 데이터가 방대해져 처리하는 속도가 느려짐
- 데이터의 일관성이 철저하게 유지되고 있기 때문에 데이터를 별도의 서버로 나누어놓고 분산처리하는 능력을 높이기는 어려움
- 그래프 형태, XML, JSON 등 비구조화된 데이터 등 계층적이고 자유도가 높은 데이터를 표현하는 것 어려움
RDBMS란?
- 행과 열을 가져오는 표 형식 데이터를 저장하는 형태의 데이터베이스
- SQL 언어를 써서 조작함
- MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MariaDB 등
- 관계 데이터베이스의 경우 표준 SQL을 지키기는 하지만, 각각의 제품에 특화시킨 SQL을 사용함
NoSQL이란?
NoSQL의 정의
- NoSQL(Not only SQL)
- 관계형 이외의 데이터베이스 관리 시스템
NoSQL이 생긴 이유
- 웹이 기하급수적으로 성장하면서, 이미지, 동영상 같은 멀티미디어 데이터뿐 아니라, sns를 통해 작성되는 자유로운 형태의 텍스트와 로그 기록 같은 비정형 데이터가 빠른 속도로 대량 생산되고 있음
- 이런 환경에서 관계 데이터베이스의 장점을 유지하면 엄청나게 많은 비용이 든다.
- 단일 컴퓨터 환경에서 주로 사용되는 관계 데이터베이스는 여러 컴퓨터가 연결되어 하나의 시스템의 구성하는 클러스터 환경에서 효율적으로 동작하도록 설계되지 않았다는 문제점도 지니고 있다.
- 이러한 웹에서 대량의 비정형 데이터의 저장과 처리를 위해 관계 데이터베이스를 대신할 새로운 대안으로 제시한 것이 NoSQL
- 실제로 소셜 네트워크 서비스를 제공하는 기업들을 중심으로 NoSQL 관련 기술이 발전해왔다.
NoSQL이 사용되는 사례
- 대규모 데이터 분석
- 실시간 처리가 요구되는 게임
- Rich Web 콘텐츠
NoSQL 특징
- 빠른 속도로 생성되는 대량의 비정형 데이터를 저장하고 처리하기 위해 ACID를 위한 트랜잭션 기능을 제공하지 않는 대신, 저렴한 비용으로 여러 대의 컴퓨터에 데이터를 분산, 저장, 처리하는 것이 가능한 DB
- 더 융통성 있는 데이터 모델을 사용하고 스키마 없이 동작하기 때문에 데이터 구조를 미리 정의할 필요가 없고, 수시로 그 구조를 바꿀 수 있어서 비정형 데이터를 저장하기에 적합하여 대부분 오픈 소스로 제공됨
- NoSQL은 엄청난 속도로 대량 생상되는 빅데이터를 처리하기 위해, 관계 데이터 모델을 고집하지 않고 미리 정의된 스키마를 사용하지 않는 대신 클러스터 환경에 맞는 데이터베이스를 만들기 위해 노력해온 결과물
- 관계 데이터베이스와 NoSQL의 사용 목적이 다르기 때문에 NoSQL이 관계 데이터베이스를 완전히 대체하기는 어려움
- 관계 데이터베이스는 트랜잭션을 통해 일관성을 유지하고 외래키로 테이블 간의 관계를 표현함으로써 조인과 같은 복잡한 질의를 처리할 수 있지만 빠른 속도로 증가하는 대량의 비정형 데이터를 저장하기에는 확장성 측면에서 비효율적임
- NoSQL은 트랜잭션 기능을 제공하지 않고 정해진 스키마도 없기 때문에 자유롭게 구조를 바꾸며 대량의 비정형을 데이터를 빠르게 저장하고 처리할 수 있음. 하지만 데이터 마이닝과 같은 별도의 분석 기술을 적용해 숨겨진 의미를 찾아내야 함
- NoSQL 종류에는 대표적으로 MongoDB, Redis 등이 있음
- 장점
- 처리가 신속하고 많은 양의 데이터를 다룰 수 있음
- 다양한 구조의 데이터를 저장할 수 있음
- 데이터를 분산해서 처리하는 것이 가능함
- 단점
- 관계형인 데이터끼리 결합이 지원되지 않음
- 데이터의 일관성이나 정합성을 유지하는 기능은 약함
- 트랜잭션은 사용할 수 없는 경우가 많음
NoSQL 데이터베이스 종류
키와 밸류를 조합한 모델
키 밸류형
- 키, 밸류 2개의 데이터를 쌍으로 묶은 것을 저장할 수 있는 모델
- 키를 기반으로 정보를 빠르게 끄집어내고 싶을 때 가장 적합한 모델
- 간단한 구성이기 때문에 고속으로 읽고 쓸 수 있음
- 나중에 정보를 분산하기 쉬움
컬럼 지향형
- 하나의 행을 식별하는 키에 대해 여러 개의 키와 밸류 세트를 가질 수 있는 모델
- 열의 이름이나 개수가 고정되어 있는 것이 아니라, 행마다 나중에 열을 동적으로 추가할 수 있고 다른 행에 존재하지 않는 열도 생성할 수 있음
- 행마다 형태가 정해지지 않은 데이터를 저장하는 것이 가능
계층구조와 관계성을 나타내는 모델
Document 지향형
- JSON이나 XML로 불리는 계층구조를 가진 형식의 데이터를 저장할 수 있는 모델
- 예: MongoDB
- 장점: 미리 테이블 구조를 정해둘 필요가 없고 자유로운 구조의 데이터를 그대로 가져올 수 있음
- 받은 데이터를 그 상태 그대로 저장할 수 있기 때문에 나중에 데이터 구조가 바뀐 경우에도 데이터베이스의 설계를 바꿀 필요가 없음
그래프형
- 관계성을 표현하는데 최적인 모델
- 노드, 릴레이션십, 프로퍼티를 저장할 수 있음
- 장점: 어떤 사용자의 친구의 친구라는 관계를 둘러싼 검색을 고속으로 실시할 수 있음
RDBMS vs NoSQL
- 둘 중 자신이 데이터베이스를 사용하는 업무 환경과 역량에 가장 적합한 것을 고르면 됨
- 즉, 저장될 데이터의 형태와 처리 목적에 더 적합한 것을 선택하면 됨
- RDBMS는 기업의 인사, 회계 자료와 같이 일관성이 중요하고 조인과 같이 복잡한 질의 처리가 필요한 정형화된 데이터를 관리하는 용도일 때 더 적합함
- NoSQL은 SNS를 통해 양산되는 이미지와 텍스트 데이터, CCTV를 통해 촬영되는 영상들, 센싱 데이터와 같이 빠른 속도로 엄청난 양이 생성되지만 수정보다는 삽입 연산 위주의 데이터를 저장하고 관리하는 용도일 때 더 적합함
- 관계형: 데이터는 통일되게 관리되어 대규모 데이터는 취급하기 곤란함
- NoSQL: 데이터의 정합성보다는 대량의 데이터를 빠르게 처리하는 것이 우선
구분 | RDB | NoSQL |
처리 데이터 | 정형 데이터 | 정형 데이터, 비정형 데이터 |
대용량 데이터 | 대용량 처리 시 성능 저하 | 대용량 데이터 처리 지원 |
스키마 | 미리 정해진 스키마가 존재 | 스키마가 없거나 변경이 자유로움 |
트랜잭션 | 트랜잭션을 통해 일관성 유지를 보장함 | 트랜잭션을 지원하지 않아 일관성 유지를 보장하기 어려움 |
검색 기능 | 조인 등의 복잡한 검색 기능 제공 | 단순한 데이터 검색 기능 제공 |
확장성 | 클러스터 환경에 적합하지 않음 | 클러스터 환경에 적합함 |
라이선스 | 고가의 라이선스 비용 | 오픈소스 |
대표적 사례 | MySQL, PostgreSQL, Oracle, Microsoft SQL Server, MariaDB | MongoDB, Redis |
참고
더보기
사카가미 코오다이, 「 그림으로 배우는 데이터베이스 」 , 영진닷컴, 2022, p.32-45
https://github.com/devSquad-study/2023-CS-Study/blob/main/DB/db_rdbms_and_nosql.md
'Computer Science > DB' 카테고리의 다른 글
[DB] 저장 프로시저 Stored Procedure, SP (0) | 2024.03.27 |
---|---|
[DB] 스키마 (1) | 2024.03.26 |
[DB] 트랜잭션(3) - 격리 수준(Isolation level)과 이상 현상 (0) | 2024.03.14 |
[DB] 트랜잭션(2) - 병행 수행과 병행 제어(Concurrency Control) (0) | 2024.03.14 |
[DB] 트랜잭션(1) - 정의, ACID, 상태, 문법, 예외 (0) | 2024.03.13 |