Database Management system의 준말로 데이터를 한곳에 모은 저장소를 만들고 그 저장소에 여러 사용자가 접근하여 데이터를 저장 및 관리 등의 기능을 수행하며 공유할 수 있는 환경을 제공하는 응용 소프트웨어 프로그램
공유 저장소(서버)를 구축하고 사용자들에게 접근정보를 공유하여 데이터를 처리할 수 있는 인터페이스를 제공하고 복구기능과 보안성 기능 또한 제공
테이블에서 행을 의미
레코드(record) or 로우(row)라고도 부름
릴레이션에서 중복되는 값을 가질 수 X
튜플의 수 : 카디날리티(Cardinality)
테이블에서 열을 의미
칼럼(Column)이라고도 부름
Attribute의 수 : Degree(디그리)
관계형 데이터베이스에서 정보를 구분하여 저장하는 기본 단위
ex) 유저 정보 > 유저 테이블, 게시글 정보 > 게시글 테이블 등
테이블에서 행의 식별자로 이용되는 테이블의 열
ex) 유저ID, 게시글ID
식별자(identifier)
주키와 외래키로 나뉘며 하나의 테이블에서 주키는 1개 또는 1쌍으로만 구성되고, 외래키는 여러개로 구성될 수 있음
하나의 어트리뷰트가 취할 수 있는 같은 타입의 원잣값들 집합
ex) 성별 어트리뷰트의 도메인은 남과 여의 데이터의 값만 가능
나이 어트리뷰트의 도메인은 숫자의 값만 입력 가능 그 외의 값은 입력될 수 X
DB를 효율적이고 직관적이고 안전하게 사용할 수 있게 해주는 기능을 가지고 있음
효율적
직관적
안전하게
DBMS의 요구사항을 충족시킬 핵심 기능
데이터베이스의 상태를 변환시키는 하나의 논리적 기능을 수행하기 위한 작업의 단위
ex) 회원가입 절차 = 가입 Transaction, 결제 절차 = 결제 Transaction
데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위로 사용
ex) 회원가입, 결재는 작업 단위로 병행(따로) 처리됨
ex) 회원가입 처리중 잘못된 항목이 존재하여 가입불가시 가입취소(회복)됨
ex) 결재 처리중 잔액부족 등으로 결재가 불가능할경우 결재취소(회복) 됨
사용자가 시스템에 대한 요구 시 시스템이 응답하기 위한 상태 변환과정의 작업 단위로 사용
ex) 회원가입 요구시 가입완료 응답을 하기까지의 작업단위 = 가입 Transaction
ex) 결재 요구시 결재완료 응답을 하기까지의 작업단위 = 결재 Transaction
데이터의 무결성을 보장하기 위해 가져야할 특성
원자성(Atomicity)
일관성(Consistency)
독립성(Isolation)
영속성, 지속성(Durability)
데이터 관리의 원칙 중 안전, 공유, 일관성, 손상방지 등의 원칙을 트랜잭션 단위로 해결
현재 가장 많이 사용되고 있는 데이터베이스의 한 종류
테이블(table)로 이루어져 있으며, 테이블은 키(key)와 값(value)으로 나타냄
데이터 종속성을 관계(Relationship)로 표현하는 것이 큰 특징
데이터의 분류, 정렬, 탐색 속도가 빠름
신뢰성인 높고, 어떠한 상황에서도 데이터의 무결성을 보장
SQL이라는 표준 언어로 관리가 가능하기에 개발 언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능
기존에 작성된 스키마를 수정하기가 어려움
데이터베이스의 부하를 분석하는 것이 어려움
관계
관계형데이터 베이스에 들어있는 “관계형”에서의 “관계”는 뭘 의미하는 걸까?
- 각 테이블의 행과 행이 연결되는 관계를 의미
- 테이블 간 관계는 일대일(1:1), 일대다(1:N), 다대다(N:N)의 관계 존재
각 테이블들은 기본키(Primary key)와 외래키(Foreign key)를 통해 맺어짐
일대일(1 : 1)
하나의 테이블과 다른 하나의 테이블만 연결된 것
ex) 나 : 내 핸드폰 = 유저 : 프로필
일대다(1 : N)
ex) 나 : 담임 선생님 = 유저 : 게시글
다대다(N : M)
ex) 나 : 동아리 = 게시글 : 해시테그
관계형 데이터베이스에서 사용되는 언어로, ‘에스큐엘’ 또는 ‘시퀄’로 읽음
관계형 DBMS 중 MySQL를 배우려면 SQL을 필수
데이터베이스를 조작하는 ‘언어’이긴 하지만 일반적인 프로그래밍 언어(C, 자바, 파이썬 등)와는 조금 다른 특성을 갖음
특정 회사에서 만드는 것이 아니라 국제표준화기구에서 SQL에 대한 표준을 정해서 발표하고 있는데 이를 표준 SQL이라고 함
SQL을 사용하는 DBMS를 만드는 회사가 여러 곳이기 때문에 표준 SQL이 각 회사 제품의 특성을 모두 포용하지 못해 DBMS를 만드는 회사에서는 되도록 표준 SQL을 준수하되, 각 제품의 특성을 반영한 SQL을 사용
표준 언어로 관리가 가능하기에 개발 언어, 데이터베이스 종류 등에 변화가 있어도 기존에 사용하던 애플리케이션은 그대로 사용이 가능
서비스를 위한 데이터는 데이터베이스(DBMS)를 사용하게 됨
Oracle
미국 오라클(Oracle) 사의 관계형 데이터베이스 관리 시스템(RDBMS)
오픈 소스 DBMS가 있음에도 안정성과 유지보수를 보장받을 수 있다는 장점 때문에 비 IT업종 기업에서 많이 사용
기업용으로 주로 사용
대량의 정보관리를 할 때 타 DBMS에 비해 좋은 성능을 보임
오라클 자체 SQL 쿼리를 사용해 표준 형식과 약간 다름
MySQL
관계형 데이터베이스 관리 시스템(RDMS)
오픈 소스이며, 다중 사용자와 다중 스레드 지원
오픈 소스 라이선스를 따르기 때문에 무료로 사용 가능
표준 SQL 형식 사용
오픈 소스이기 때문에 기술 지원의 한계가 있음
PostgrsSQL
MariaDB
SQLite
독립형 파일 기반의 오픈소스 RDBMS
구글 안드로이드 운영 체제에 기본 탑재된 데이터베이스
ACID 준수
이름과 같이 매우 가벼움
완전히 독립형이라 SQLite가 작동하기 위해 시스템에 설치해야 하는 외부 종속성 X
이식성이 뛰어남
동시성의 제한, 사용자 관리 존재의 부재, 서버리스 데이터베이스이기에 보안이 약함
NoSQL이라고도 부르며, Not Only SQL(SQL 뿐만이 아닌. 이라는 뜻)의 줄임말
SQL뿐만 아니라 다른 여러 장점을 가지고 있다!!
기존의 관계형 데이터베이스의 한계를 뛰어넘기 위해 만들어진 새로운 형태의 데이터베이스라서, 관계형 데이터베이스보다 더 융통성 있는 데이터 모델을 사용하며, 데이터의 저장 및 검색에 특화된 메커니즘을 제공
대부분 분산 환경에서의 데이터 처리를 더욱 빠르게 하기 위해 개발됨
MongoDB
유연한 스키마
분산 아키텍처
문서형 DB 특징
Redis
인메모리 데이터 저장소
다양한 데이터 구조
Key-Value DB
NoSQL에서도 키값 데이터베이스가 존재함
대량의 데이터를 저장해야 하지만 검색을 위해 복잡한 쿼리를 수행할 필요가 없는 경우 사용
사용자 선호도 저장 또는 캐싱에서 사용
HBase
분산 저장 시스템
일관된 읽기/쓰기 성능
HBase는 일관된 읽기와 쓰기 성능을 제공하여 대규모 데이터에 대한 실시간 액세스를 지원
Wide-column store
Neo4j
그래프 데이터베이스
ACID 트랜잭션
그래프 DB 특징
소셜 네트워킹, 추천 엔진 등에서 사용
정점과 간선에 데이터를 저장
정점에는 사람, 장소 및 사물에 대한 정보가 저장
간선에는 정점과의 관계에 대한 정보가 저장
💡어떤 DBMS 를 사용해야하나요?
- 테이블 구조가 정해져 있고, 내부 데이터 수정이 빈번할 때 -> SQL DB(RDB)
- 테이블 구조가 정확히 잡혀있지 않고(추가적으로 수정이 될 가능성이 높을 때) 대량의 데이터를 처리할 때 -> NoSQL DB
- 그리고, DBMS(DB엔진) 트렌드를 잘 따라가는것도 중요!!