data_buddha.log
로그인
data_buddha.log
로그인
[DB] DB의 큰 그림
data_buddha
·
2024년 11월 12일
팔로우
0
db
0
DB와 DBMS
DB : 원하는 기능을 동작시키기 위해 마땅히 저장해야 하는 정보의 집합
DBMS : DB 관리 시스템
서버로서의 DBMS
DBMS는 사용자와 직접 상호작용하기보다는 사용자(개발자)가 만든 프로그램과 상호작용
응용 프로그램들 입장에서 DBMS는 마치 서버와 같음
쿼리 : 사용자와 응용 프로그램이 DBMS의 언어를 통해 DB를 다룰 수 있게함
대표적인 DB 언어 : SQL
데이터베이스에 질의하기 위한 구조화된 언어
SQL은 크게 4가지 종류
DDL : 데이터 정의
DML : 데이터 조작
DCL : 데이터 제어
TCL : 트랜잭션 제어
파일 대신 DB를 이용하는 이유
데이터 일관성 및 무결성 제공이 어려움
불필요한 중복 저장이 많아짐
데이터 변경 시, 연관 데이터 변경이 어려움
정교한 검색이 어려움
백업 및 복구가 어려움
DB의 저장 단위와 트랜잭션
DB의 저장 단위
DB에는 다양한 속성을 가진 독립적 객체들이 저장될 수 있음
"독립적으로 존재할 수 있는 객체"를 "엔티티"라고 함
어떠한 특성을 가진 대상이라고 보면 됨
"속성"은 엔티티의 특성을 의미
같은 "속성"을 공유하는 개별 엔티티는 같은 "엔티티 집합"에 속한다고 할 수 있음
그렇다면 DBMS에서는 엔티티와 엔티티 집합을 어떻게 각각 표현하고 저장할까?
RDBMS는 엔티티 집합을 이차원 테이블 형태의 표로 표현하고, 이를 "릴레이션"이라고 부름
NoSQL DBMS의 MongoDB에서는 엔티티 집합을 "컬렉션"이라고 부름
각각의 엔티티를 "레코드"라고 부름 (테이블의 행)
엔티티의 속성은 "필드"라고 함 (테이블의 열)
MongoDB에선 개별 레코드를 JSON 형태의 "도큐먼트"라는 단위로 표현
필드를 JSON 키의 형태로 표현
스키마
RDBMS와 NoSQL의 가장 주요한 구분점 : 스키마
스키마는 DB에 저장되는 레코드의 구조와 제약조건을 정의한 것
레코드가 지켜야할 틀이자 청사진
RDBMS에서는 명확한 스키마가 정의되며, 레코드들은 이 스키마로 정해진 테이블의 구조, 필드의 데이터 타입 및 제약 조건을 따라야 함
NoSQL은 스키마-리스 DB로도 불림
트랜잭션과 ACID
트랜잭션 : DB와의 논리적 상호작용 단위를 의미
DB가 처리하는 작업의 단위를 나타내므로 "초당 트랜잭션"이라는 지표로 DB의 작업 성능을 나타내기도 함
여러 작업을 내포하는 트랜잭션이 동시다발적으로 실행될 때는 안전한 트랜잭션을 보장하기 위해 지켜야 하는 성질이 있음
이를 ACID라고 함
원자성 A
트랜잭션이 하나의 단위로 처리되는 것을 원자성이라고 함
ALL OR NOTHING
주어진 작업을 모두 성공하거나 모두 실패할 뿐, 일부 성공이나 일부 실패는 허용하지 않음
커밋과 롤백
원자성을 트랜잭션이 반드시 커밋되거나 롤백되는 성질이라고 표현
커밋 : 트랜잭션을 성공적으로 수행하여 트랜잭션을 종료하는 것을 의미
롤백 : 이전 트랜잭션을 취소하는 작업을 의미, DB를 롤백하면 트랜잭션이 이루어지기 전으로 되돌릴 수 있음
일관성 C
트랜잭션 전후로 DB가 일관된 상태를 유지하는 성질을 "일관성"
"일관된 상태"란 DB가 지켜야하는 일련의 규칙들을 지키는 상태
격리성 I
동시에 수행되는 여러 트랜잭션이 서로 간섭하지 않도록 보장하는 것
한 트랜잭션이 어떤 데이터에 접근하여 조작 중일 때는 다른 트랜잭션이 접근할 수 없음
지속성 D
트랜잭션이 성공적으로 완료된 후에 그 결과가 영구적으로 반영되는 성질
data_buddha
来日方长 : 앞길이 구만리 같다; 앞길이 희망차다. 장래의 기회가 많다.
팔로우
이전 포스트
[네트워크] 전송 계층 - TCP와 UDP
다음 포스트
[DB] RDBMS의 기본
0개의 댓글
댓글 작성