CS 스터디를 하면서 정리한 내용을 포스팅 하고 있습니다!
스터티 깃허브
이번 포스팅은 데이터베이스의 핵심 개념을 간단하게 정리한 글입니다.
해당 글은 DB, DBMS에 관한 개념과 특징만 다루고, 이와 함께 꼭 알아야 할 SQL, DB 자료구조(e.g. 인덱스) 등의 개념은 따로 작성 예정입니다.
데이터베이스(DataBase, DB)란, 여러 사람에 의해 공유되어 사용될 목적으로 통합하여 관리되는
데이터의 집합
이다.
논리적으로 연관된 하나 이상의 데이터의 집합으로, 이를 고도로 구조화하여 검색 및 갱신의 효율을 높인다.
특정 다수의 이용자들에게 필요한 정보를 제공하거나, 특정 조직 내에서 필요로 하는 정보를 체계적으로 축적하고 제공한다.
데이터베이스는 데이터의 구조와 특성에 따라 매우 단순하거나 복잡할 수 있다.
DBMS를 통해서 관리된다.
데이터(화물)은 데이터베이스(창고)에 저장되고, DBMS(관리자)는 화물을 창고에 적재하거나 창고에서 이용자로 보내주는 등의 역할을 한다.
DBMS(DataBase Management System)란, 데이터베이스를 관리하고 운영하는
소프트웨어
이다.
데이터를 파일 단위로 직접 관리하면, 적은 수는 무리 없이 사용할 수 있다.
하지만, 데이터 수가 증가하여 관리해야 할 파일이 늘어나면 한계에 부딪힌다.
따라서, DBMS를 활용하여 데이터를 데이터베이스로 정리하여 효율적
으로 데이터를 통제하고 관리할 수 있다.
DBMS는 데이터를 저장, 검색, 수정, 삭제하는 작업을 효율적으로 처리한다.
DBMS는 데이터를 관리하는 모든 시스템의 큰 틀이고, 유형에는 대표적으로 관계형 DBMS인 RDBMS, 비관계형 DBMS인 NoSQL이 있다.
데이터를 테이블 형식
으로 저장하고, 테이블 간 관계를 기반으로 데이터를 관리한다.
외래 키를 사용하여 테이블 간 join을 통해 여러 테이블의 데이터를 결합하여 가져올 수 있다.
ACID
원칙을 준수한다.
Atomicity(원자성): 트랜잭션은 모두 수행되거나 전혀 수행되지 않아야 한다.
Consistency(일관성): 트랜잭션이 완료되면 데이터베이스는 일관된 상태를 유지해야 한다.
Isolation(격리성): 동시에 실행되는 트랜잭션은 서로 간섭하지 않아야 한다.
Durability(지속성): 트랜잭션 완료 후 데이터는 영구적으로 저장되어야 한다.
MySQL, PostgreSQL, Oracle 등이 RDBMS에 해당한다.
명확한 데이터 구조
를 보장한다.데이터 정합성
-> 데이터들의 값이 서로 일치하는 상태중복 없이
한 번만 저장한다.데이터 무결성
-> 데이터가 처리되는 모든 과정에서 변경되거나 손상되지 않고 완전성, 정확성, 일관성을 유지하는 특성시스템이 커질수록
join이 많아져 쿼리가 복잡
해진다.Scale-up만 지원
한다.데이터가 유연하지 않다
.데이터 구조가 명확
하고 변경될 여지가 없으며, 스키마가 중요한 경우
에 사용한다.관계를 맺고 있는 데이터가 자주 변경
이 이루어지는 시스템에 적합하다.빅데이터의 등장으로 인해 데이터와 트래픽이 엄청나게 증가함에 따라 등장했다.
-> RDBMS는 빅데이터를 처리하기 위해 장비 업그레이드(Scale-up)을 하고 비용이 많이 든다.
NoSQL은 이런 RDBMS의 단점을 극복하고 데이터의 분산 저장(Scale-out)을 목표로 한다.
데이터를 문서, 키-값, 그래프 등 다양한 형식
으로 데이터를 관리한다.
유연하고 자유로운 데이터 구조
를 가지고 있다.Scale-up/Scale-out이 모두 가능
하다.데이터 분산
이 용이하고, RDBMS에 비해 대용량의 데이터
를 저장할 수 있다.데이터 구조를 결정하기 어려울 수 있다
.데이터의 중복이 발생 가능
하며, 중복된 데이터가 변경될 경우 모든 컬렉션에서 수정
해야 한다.데이터 구조를 알 수 없고 데이터가 변경/확장될 수 있는 경우
에 사용한다.수정이 많이 이루어지지 않는 시스템
에 적합하다.대용량의 데이터를 저장하는 경우
에 적합하다.구분 | RDBMS | NoSQL |
---|---|---|
데이터구조 | 관계형 테이블 형식 | 문서, 키-값, 그래프 등 다양한 형식 |
스키마 | 고정된 스키마 | 유연한 스키마 |
확장성 | 수직적 확장(Scale-up) | 수직적 확장(Scale-up) 및 수평적 확장(Scale-out) |
사용 사례 | 트랜잭션, 데이터 관계가 중요한 시스템 | 대규모 데이터, 비정형 데이터, 실시간 처리 |
Q 1)
DB의 특징은?
A 1)
동계실내(동시 공유, 계속적인 변화, 실시간 접근성, 내용에 의한 참조)
Q 2)
DBMS란?
A 2)
데이터베이스를 관리하는 시스템으로, 사용자가 효율적으로 데이터베이스에 데이터를 저장, 검색, 수정, 삭제할 수 있도록 해준다.
Q 3)
RDBMS와 NoSQL의 차이점은?
A 3)
RDBMS는 고정된 스키마와 중복 없는 데이터로 정합성과 무결성을 보장하고, Scale-up만 지원한다.
NoSQL은 유연한 스키마와 중복 허용으로 확장성에 강하며, Scale-out 또한 지원한다.
Q 4)
트랜잭션의 ACID 원칙이란?
A 4)