티스토리 뷰

관계형 데이터베이스란?

관계형 데이터베이스는 고정된 행(레코드)과 열(속성)로 구성된 테이블에 데이터를 저장한다.

각 열에는 하나의 속성에 대한 정보가 저장되고, 행에는 각 열의 데이터 형식에 맞는 데이터가 저장된다.

 

관계형 데이터베이스에는 핵심적인 특징이 두 가지 있다.

1. 데이터가 정해진 데이터 스키마에 따라 테이블에 저장된다.

2. 데이터가 관계를 통해 여러 테이블에 분산된다.

따라서, 테이블의 구조와 데이터 타입등을 사전에 정의해야만 하고, 테이블에 정의된 내용에 알맞은 형태의 데이터만 삽입할 수 있다.

 

RDB의 장점

- 스키마가 명확하게 정의되어 있다.

- 데이터 무결성을 보장한다.

- SQL을 사용하여 데이터에 대한 효율적인 질의를 수행할 수 있다.

- 정규화와 같은 방법을 이용하여 중복을 최소화 함(일관성 유지).

- 복잡한 질이를 처리하는데 효과적이며, 데이터간의 관계를 쉽게 표현할 수 있다.

 

RDB의 단점

- 유연성이 떨어져 데이터 스키마를 사전에 계획해야 하므로 추후 수정이 어렵다.

- 관계를 맺고 있어서 조인문이 많은 복잡한 쿼리가 만들어질 수 있다.

- 대체로 수직적 확장만 가능하다.

DBMS란?

Database Management System의 약자로 데이터베이스를 관리하고 운영하는 소프트웨어이다.

다양한 데이터가 저장된 데이터베이스는 여러 사용자 혹은 응용 프로그램에 데이터를 공유해야 하고 동시에 접근할 수 있어야 한다. 이렇게 동시에 접근할 수 있도록 해주는 것이 DBMS의 역할이다.

RDBMS란?

관계형 데이터베이스를 관리하는 소프트웨어 시스템을 의미한다.

RDBMS는 데이터베이스를 생성, 조작, 관리하는데 사용하는 시스템이며, SQL 쿼리를 처리하여 데이터베이스와 상호작용 한다.

대표적인 RDBMS로는 MySQL, Oracle, MariaDB, PostgreSQL 등이 있다.

SQL (DDL, DML, DCL)

DDL (Data Definition Language) - 데이터 정의어

데이터베이스, 테이블과 같은 데이터 구조를 정의하는데 사용하는 명령어들로 (생성, 수정, 삭제, 초기화)등 데이터 구조와 관련된 명령어들을 말한다.

• CREATE : 데이터 베이스, 테이블 등을 생성하는 역할을 한다.

• ALTER : 테이블을 수정하는 역할을 한다.

• DROP : 데이터베이스, 테이블을 삭제하는 역할을 한다.

• TRUNCATE : 테이블을 초기화 시키는 역할을 한다.

 

DML (Data Manipulation Language) - 데이터 조작어

정의된 데이터베이스에 입력된 레코드를 삽입, 조회, 수정, 삭제 하는 등의 역할을 하는 언어를 말한다.

쉽게 말하면, 테이블에 있는 행과 열을 조작하는 언어라고 생각하면 된다.

데이터베이스 사용자가 질의어를 통하여 저장된 데이터를 실질적으로 처리하는데 사용하는 언어이다.

• SELECT : 데이터를 조회하는 역할을 한다.

• INSERT : 데이터를 삽입하는 역할을 한다.

• UPDATE : 데이터를 수정하는 역할을 한다.

• DELETE : 데이터를 삭제하는 역할을 한다.

 

DCL (Data Control Language) - 데이터 제어어

데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 역할을 하는 언어를 말한다.

• GRANT : 특정 데이터베이스 사용자에게 특정 작업에 대한 권한을 부여 한다.

• REVOKE : 특정 데이터베이스 사용자에게 특정 작업에 대한 권한을 박탈, 회수한다.

 

+ TCL (Transaction Control Language) - 트랜잭션 제어어

논리적인 작업의 단위를 묶어서 DML에 의해 조작된 결과를 작업단위(트랜잭션)별로 제어하는 명령어를 말함.

• COMMIT : 트랜잭션이 성공적으로 완료되었음을 나타내며, 트랜잭션에서 수행한 모든 변경 사항을 데이터베이스에 영구적으로 적용하는데 사용한다.

• ROLLBACK : 트랜잭션이 실패하거나 롤백 명령이 수행되었을 때, 트랜잭션에서 수행한 모든 변경 사항을 취소하고 이전 상태로 되돌리는데 사용된다.

NoSQL(비관계형 데이터베이스)란?

NoSQL은 비관계형 데이터베이스로 관계형 데이터 베이스를 제외한 나머지 유형을 말한다.

비관계형 데이터 베이스를 칭할 때 NoSQL이라고 부른다.

최근에 웹 애플리케이션이 보다 보편화되고 복잡해지면서 NoSQL 데이터베이스의 인기가 높아졌다.

 

NoSQL 데이터베이스는 테이블 형식이 아니며, 관계형 테이블과는 다른 방식으로 데이터를 저장한다.

데이터 유형에 따라 다양한 유형을 갖추고 있으며, 주요 유형으로는 문서, 키 값, 와이드 컬럼, 그래프 등이 있다.

NoSQL이라고해서 꼭 스키마가 없는 것은 아니고, 유연한 스키마를 제공한다.

또한 대량의 데이터를 높은 사용자 부하에서도 손쉽게 확장할 수 있다는 점이 큰 장점이다.

 

NoSQL의 장점

- 유연한 데이터 모델 : NoSQL 데이터베이스는 스키마의 제약이 적거나 없어서 데이터 모델을 유연하게 변경할 수 있다. 이는 데이터 구조의 변동성이 크거나 예측하기 어려운 상황에서 유용하게 사용된다.

- 높은 확장성 : NoSQL은 수평적 확장이 쉽게 가능하다. 대부분의 NoSQL 데이터베이스는 분산 아키텍처를 통해 새로운 노드를 추가하거나 제거하여 데이터베이스를 확장할 수 있다.

- 빠른속도와 성능 : NoSQL은 대부분 단순한 데이터 모델과 인덱싱 기법을 사용하여 빠른 일긱 및 쓰기 성능을 제공할 수 있다. 특히, 특정 쿼리나 작업에 최적화된 NoSQL 데이터베이스가 있다.

- 대용량 및 분산 데이터 처리 : NoSQL은 대용량 데이터 및 분산 환경에서 효과적으로 작동할 수 있는 기능을 제공한다. 이는 대규모의 데이터셋 및 분산 컴퓨팅 환경에서 특히 중요하다.

- 다양한 데이터 모델 지원 : 다양한 NoSQL 유형이 다양한 데이터 모델을 지원한다. 키-값 스토어, 문서 지향 데이터베이스, 그래프 데이터베이스 등이 있어서 다양한 종류의 데이터를 효과적으로 저장하고 쿼리할 수 있다.

 

NoSQL의 단점

- 일관성 부족 : 일부 NoSQL 데이터베이스는 일관성 모델을 약화하여 확장성을 높이려고 한다. 이로 인해 일관성이나 트랜잭션 기능이 상대적으로 약할 수 있다.

- 복잡한 쿼리 처리의 어려움 : NoSQL은 주로 간단하고 빠른 읽기 및 쓰기를 위해 설계되었으며, 복잡한 쿼리에 대한 처리가 어려울 수 있다. 특히, 다양한 조인 연산이 필요한 복잡한 데이터 처리에는 관계형 데이터베이스가 더 적합할 수 있다.

- 중복을 허용하여 읽기 성능과 유연성을 강조하기 때문에, 이를 해결할 방안이 필요하다.

 

RDBMS VS NoSQL

데이터 저장

• RDBMS의 경우 데이터를 SQL언어를 통해 테이블에 저장하고, 미리 작성된 스키마를 기반으로 정해진 형식에 맞게 데이터를 저장해야만 한다.

• NoSQL의 경우 key-value, document, wide-column, graph 등의 방식으로 데이터를 저장한다.

 

스키마

- 스키마는 데이터베이스 전체 또는 일부의 논리적인 구조를 표현하는 것으로 데이터베이스 내에서 데이터가 어떤 구조로 저장되는지를 나타낸다.

• RDBMS를 사용하려면 고정된 스키마가 필요하다. 처리하려는 데이터 속성별로 열에 대한 정보를 미리 정해야만 데이터 처리가 가능하다. 스키마는 나중에 변경할 수 있지만, 데이터베이스 전체를 수정하거나 오프라인으로 전환해야 할 수도 있기 때문에 처음부터 신중하게 스키마를 정의하는 것이 중요하다.

• NoSQL에서는 관계형 데이터베이스에 비해 유연하게 스키마의 형태를 관리할 수 있다. 행를 추가할 때 즉시 새로운 열을 추가할 수 있고, 개별 속성에 대해서 모든 열에 대한 데이터를 반드시 입력하지 않아도 된다.

 

쿼리

- 쿼리는 데이터베이스에 대해서 정보를 요청하는 행위이다.

• SQL 기반이 관계형 데이터베이스는 테이블의 형식과 테이블 간의 관계에 맞춰 데이터를 요청해야 한다. 요청하는 방식이 정해져 있기 때문에 SQL 언어와 같이 구조화된 쿼리 언어를 사용하는 것이다.

• NoSQL의 쿼리는 데이터 그룹 자체를 조회하는 것에 초점을 두고 있기 때문에 구조화되지 않은 쿼리 언어로도 데이터를 요청할 수 있다.

이를 UnQL이라고도 부른다.

 

확장성

• SQL 기반의 관계형 데이터베이스는 수직적으로 확장하며 높은 메모리와 CPU를 사용한다. 데이터베이스가 구축된 하드웨어의 성능을 많이 이용하므로 비용이 비싼 편이며, 여러 개의 서버에 걸쳐서 데이터베이스의 관계를 정의할 수 있지만 매우 복잡하고 시간이 오래 걸리는 것이 단점이다.

• NoSQL로 구성된 데이터베이스는 반대로 수평적으로 확장한다. NoSQL 데이터베이스를 위한 서버를 추가로 구축하게 되면 많은 트래픽을 편리하게 처리할 수 있다는 장점이 있습니다. SQL보다 저렴한 범용 하드웨어나 클라우드 기반의 인슷턴스에 NoSQL 데이터베이스를 호스팅할 수 있어 상대적으로 비용이 저렴한 것이 장점이다.

RDBMS VS NoSQL 어떤 데이터 베이스를 사용해야 할까?

관계형 데이터베이스(RDBMS)를 사용해야 할 때

• 데이터베이스의 ACID 성질을 준수해야 하는 소프트웨어를 개발하는 경우

• 관계를 맺고 있는 데이터가 자주 변경되는 애플리케이션의 경우

• 변경될 여지가 없고 명확한 스키마가 사용자와 데이터에게 중요한 경우

 

NoSQL 데이터베이스를 사용해야 할 때

• 정학한 데이터의 구조를 알 수 없거나 변경, 확장될 가능성이 있는 경우

• 읽기는 자주 해도 데이터 변경은 자주 없는 경우

• 막대한 양의 데이터를 다뤄야 해서 데이터베이스를 수평으로 확장해야 하는 경우

'Web > DB' 카테고리의 다른 글

MySQL의 비정상 종료와 데이터 복구 방법  (0) 2024.10.12
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함