DB와 DBMS

이승주·2024년 3월 13일
0

DATABASE

목록 보기
1/4

📌 DB와 DBMS

DB

데이터 저장소

  • CSV 혹은 EXCEL 같은 다양한 데이터 형태로 저장되어있는 저장소

DBMS

DB(데이터 저장소)기능 + 엔진(데이터를 정의 및 조작하는 기능)을 가진 응용 프로그램

  • DB Management System 으로써 위 DB 에 대한 CRUD 엔진, 관리 등 제공
  • DBMS마다 엔진이 다르므로 사용하는 쿼리문이 다름
    ex) Mysql Select 명령어, PostGres Select 쿼리 명령어가 다름

📌 관계형/비관계형 DBMS

데이터 베이스는 관계형 데이터베이스, 비관계형 데이터 베이스 두가지로 구분된다.
관계형 데이터 베이스는 데이터를 관리할 때 SQL을 사용하고 데이터마다 연결할 수있어 RDBMS라고도 불린다. 비관계형 데이터 베이스는 SQL을 사용하지 않기 때문에 NO SQL 데이터 베이스라고 불리기도 한다.

관계형 데이터베이스(RDBMS)

RDBMS는 데이터를 행과 열의 형태인 테이블로 데이터를 저장하며, 테이블 간의 관계를 정의할 수 있다.
ex) 쇼핑물 서비스에서 상품정보 테이블과 판매사 테이블을 연결하여 두 데이터를 함께 사용할 수 있다.

특징

  • 테이블간 데이터를 연결할 수 있기 때문에 복잡한 데이터를 표현할 수 있다.
  • SQL을 사용하려면 고정된 형식의 스키마가 필요하다. 처리하려는 데이터 속성별로 열(column)에 대한 정보를 미리 정해야 한다
  • Transaction으로 데이터 처리가 가능해 ACID를 준수할 수있음(고신뢰성, 무결성 준수 가능)

비관계형 데이터베이스(NO SQL)

NoSQL은 키-값(key-value) 저장, 문서(document) 저장, 그래프(graph) 데이터 저장 등 다양한 형태의 데이터 저장 방식을 사용한다.

특징

  • NoSQL의 경우, 다른 구조의 데이터를 같은 컬렉션(=테이블)에 추가할 수 있다. SQL이 정해진 스키마를 따르지 않는다면 데이터를 추가할 수 없는 것과는 다름.
  • 미리 정해둔 스키마가 없기 때문에 훨씬 더 유연하다. 언제든지 저장한 데이터를 조정할 수있음.
  • 수평적 확장이 가능함 (데이터 베이스를 분산되어 늘릴 수 있음)

용어 구분

SQL에서의 테이블(table) -> NoSQL에서는 컬렉션(Collection)
SQL에서의 레코드(record) -> NoSQL에서는 문서(document)


📌 관계형 vs 비관계형, 언제 사용하면 좋을까?

둘은 데이터 저장 방식이 다르고 DB 확장 방식도 다른 것을 확인했다.
그렇기에 각 DB를 사용하기 적절한 상황도 다르다. 다음은 어는 상황에 관계형, 비관계형 DB를 사용하면 좋은지 정리했다.

📖 SQL 기반의 관계형 데이터베이스를 사용하는 케이스

데이터베이스의 ACID 성질을 준수해야 하는 경우

ACID는 Atomicity(원자성), Consistency(일관성), Isolation(격리성), Durability(지속성)을 의미한다.
데이터베이스에서 트랜잭션이 실행되는 과정에서 안정성을 보장하기 위해 필요한 성질이다.

SQL을 사용하면 데이터베이스와 상호 작용하는 방식을 정확하게 규정할 수 있기 때문에, 데이터베이스에서 데이터를 처리할 때 발생할 수 있는 예외적인 상황을 줄이고, 데이터베이스의 무결성을 보호할 수 있다.

전자 상거래, 금융 서비스 등의 소프트웨어 개발에서는 반드시 데이터베이스의 ACID 성질을 준수해야 한다. 이러한 경우 일반적으로 SQL을 이용한 관계형 데이터베이스를 사용한다.

소프트웨어에 사용되는 데이터가 구조적이고 일관적인 경우

소프트웨어(프로젝트)의 규모가 많은 서버를 필요로 하지 않고, 일관된 데이터를 사용하는 경우 관계형 데이터베이스를 사용하는 사례가 많다.
다양한 데이터 유형과 높은 트래픽을 지원하도록 설계된 NoSQL 데이터베이스를 사용해야만 하는 이유가 없기 때문이다.

📖 NoSQL 기반의 비관계형 데이터베이스를 사용하는 케이스

데이터의 구조가 거의 없거나 전혀 없는 대용량의 데이터를 저장하는 경우

대부분의 NoSQL 데이터베이스는 저장할 수 있는 데이터의 유형에 제한이 없다. 필요에 따라 언제든지 데이터의 새 유형을 추가할 수 있으며 소프트웨어 개발에 정형화되지 않은 많은 양의 데이터가 필요할 경우 NoSQL을 적용하는 것이 효율적일 수 있다.

클라우드 컴퓨팅 및 저장공간을 최대한 활용하는 경우

클라우드 기반으로 데이터베이스를 구축하면 저렴한 비용으로 솔루션을 제공받을 수 있다. 소프트웨어에 데이터베이스의 확장성이 중요하다면 NoSQL 데이터베이스를 사용하는 것이 좋다.

빠르게 서비스를 구축하는 과정에서 데이터 구조를 자주 수정하는 경우

NoSQL 데이터베이스의 경우 스키마를 미리 준비할 필요가 없기 때문에 빠르게 개발하는 과정에 매우 유리하다. 따라서 시장에 프로토타입을 빨리 출시해야 하는 경우에 NoSQL이 적합하다.
또한, 소프트웨어 버전 별로 많은 다운타임 없이 데이터 구조를 자주 업데이트해야 하는 경우, 스키마를 매번 수정해야 하는 관계형 데이터베이스보다 NoSQL 기반의 비관계형 데이터베이스를 사용하는 게 적합하다.
다운타임(Downtime) : 은행 점검 시간과 같이 데이터베이스 서버를 오프라인으로 전환하여 데이터 처리를 진행하는 작업 시간


참고자료

- 관계형 vs 비관계형 적절한 사용 상황 참고
- 사진 참고
- DB 및 DBMS 참고

profile
반복되는 실수를 기록을 통해 줄여가보자!

0개의 댓글