DBMS의 기능과 종류
📝 목차
- DBMS 정리
- 1-1. DBMS 개요
- 1-2. DBMS 용어
- DBMS 기능
- 2-1. DBMS 요구사항
- 2-2. 트랜잭션(Transaction)
- RDB(관계형 데이터베이스) = SQL DB
- NoSQL
1. DBMS 정리
1-1. DBMS 개요 🏛️
- DBMS (Database Management System): 데이터를 한 곳에 모아 여러 사용자가 접근하고, 데이터를 저장 및 관리할 수 있는 환경을 제공하는 응용 소프트웨어입니다.
- 주요 기능: 공유 저장소(서버) 구축, 사용자 접근 인터페이스 제공, 데이터 복구 및 보안 기능.
1-2. DBMS 용어 💬
- 튜플 (Tuple): 테이블의 행을 의미하며, 레코드 또는 로우라고도 불립니다. 튜플 수를 카디날리티(Cardinality)라고 합니다.
- 어트리뷰트 (Attribute): 테이블의 열을 의미하며, 칼럼이라고도 합니다. 어트리뷰트 수는 디그리(Degree)로 표현합니다.
- 릴레이션 (Relation=Table): 관계형 DB에서 정보를 저장하는 기본 단위입니다. 예: 유저 정보 테이블, 게시글 정보 테이블 등.
- 키 (Key): 테이블의 행을 식별하기 위해 사용하는 열. 주키(PK)와 외래키(FK)로 나뉩니다.
- 주키 (PK): 현재 테이블에서 행을 식별하는 식별자.
- 외래키 (FK): 다른 테이블과 연결하여 행을 식별하는 식별자입니다.
- 도메인 (Domain): 하나의 어트리뷰트가 가질 수 있는 값의 집합. 예: 성별 도메인은 '남'과 '여'만 가능.
2. DBMS 기능
2-1. DBMS 요구사항 📌
DBMS는 데이터를 효율적, 직관적, 안전하게 사용할 수 있게 해주는 기능을 가집니다:
- 효율성: 데이터 중복 방지, 무결성 제약 조건 정의 및 검사.
- 직관성: 데이터 간 관계 표현, 편리한 인터페이스 제공.
- 안전성: 사용자별 접근 통제, 잘못된 데이터 수정/삭제 시 복구 기능.
2-2. 트랜잭션 (Transaction) 🔄
- 트랜잭션: DB의 상태를 변경시키는 작업 단위로, 데이터 무결성을 유지하는 핵심 기능입니다.
- 트랜잭션 특성:
- 원자성 (Atomicity): 모든 연산이 완벽히 수행되거나 전혀 수행되지 않도록 보장.
- 일관성 (Consistency): 트랜잭션 성공 시 일관성 있는 상태가 유지됨.
- 독립성 (Isolation): 둘 이상의 트랜잭션이 동시에 실행돼도 상호 간섭이 없음.
- 영속성 (Durability): 성공한 트랜잭션의 결과는 영구적으로 유지됨.
3. 관계형 데이터베이스 (RDB, SQL DB)
3-1. 개요 🔍
- RDB (Relational Database): 테이블 형태로 구성된 데이터베이스로, 데이터 간의 관계를 표현하는 것이 특징입니다.
3-2. 특징 💡
- 속도와 신뢰성: 데이터 분류, 정렬, 탐색 속도가 빠르며, 무결성을 보장합니다.
- SQL 사용 가능: 표준 SQL 언어로 데이터를 관리할 수 있습니다.
- 관계 구조: 테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:M)로 표현됩니다.
- 예: 일대일 관계 (유저와 프로필), 일대다 관계 (유저와 게시글), 다대다 관계 (게시글과 해시태그).
3-3. SQL 언어 종류 🛠️
- DDL (Data Definition Language): 테이블 구조를 정의 (CREATE, ALTER, DROP).
- DML (Data Manipulation Language): 데이터를 조회, 삽입, 수정, 삭제 (INSERT, UPDATE, DELETE, SELECT).
- DCL (Data Control Language): 사용자 권한을 부여/회수 (GRANT, REVOKE).
- TCL (Transaction Control Language): 트랜잭션 제어 (COMMIT, ROLLBACK, SAVEPOINT).
3-4. 주요 RDBMS 종류 🌐
- Oracle: 기업용으로 많이 사용, 대용량 데이터 관리가 용이.
- MySQL: 오픈 소스, 다중 사용자와 다중 스레드를 지원.
- PostgreSQL: ACID와 MVCC 지원, 다양한 데이터베이스 객체 생성 가능.
- MariaDB: MySQL과 호환되는 오픈 소스 DB.
- SQLite: 경량형 파일 기반 DB, 모바일 환경에서 많이 사용됨.
4. NoSQL
4-1. 특징 🚀
- NoSQL: 관계형 데이터베이스의 한계를 넘기기 위해 설계된 데이터베이스. 분산 환경에서 빠르게 데이터 처리 가능하며 유연한 데이터 모델 제공.
4-2. NoSQL 종류 🔍
- MongoDB: 유연한 문서 지향 데이터 모델을 사용하며 대규모 데이터 처리 및 고가용성 지원.
- Redis: 메모리에 데이터를 저장하여 빠른 데이터 접근 가능, 캐싱 용도로 많이 사용.
- DynamoDB: AWS의 관리형 NoSQL 서비스, 높은 확장성 제공.
- HBase: Hadoop 기반 대용량 데이터 분산 저장에 적합, 실시간 데이터 액세스 지원.
- Neo4j: 그래프 DB로, 데이터 간의 관계를 효과적으로 저장하고 조회할 수 있음. 소셜 네트워킹 및 추천 시스템에 적합.
💡 결론
- SQL DB: 테이블 구조가 고정되고 데이터 수정이 빈번할 때 적합합니다.
- NoSQL DB: 테이블 구조가 유동적이고 대용량 데이터를 처리할 때 적합합니다.
- DBMS 트렌드: 최신 DB 엔진 트렌드를 잘 따르는 것이 중요합니다.