티스토리 뷰

1. 관계형 데이터베이스(RDBMS, Relational Database Management System)


1.1 정의

- 데이터를 표 형태로 저장, 관계를 정의한 시스템


1.2 구성(행렬 + 관계 + Fiexd Schema)

  • 2차원(행렬) 구조 데이터에 각 요소 간의 관계(Relation)를 기반으로 데이터의 종속성을 표현
    1) 데이터는 테이블이라는 2차원 배열 형식(행렬)으로 저장
    2) 복잡한 다차원 데이터를 다수의 2차원 Entity(테이블)에 분할
    3) 고정된 Column의 정의에 맞게 데이터 적재(Fiexd Schema)

  • Fiexd Schema를 이용하여
    - ORM 형성 :: 관계형(DB - 2차원 구조 데이터) + 객체 지향(Application - 트리 구조 객체데이터)
    - 자체 쿼리 최적화 :: Parsing → Query Plan → Query Optimization // 빠른 분류, 정렬, 탐색

  • 구조적 단점 :: 스키마 수정이 어려우며, 수평적 확장에 대한 한계
    ==> 수평적 확장 시, Guaranteed Consistency의 보장을 위해 대기 시간이 긺 

1.3 목적

:: 데이터 무결성, 일관성 (Integrity, Consistency)을 보장
:: 고신뢰성(High Reliability)을 보장


1.4 RDBMS, SQL의 종류

:: 관계형 데이터베이스는 정형화된 2차원(행렬) 데이터 구성을 갖기에, 수많은 RDBMS 종류가 있어도 쿼리만 다르다

  • 쿼리가 다름 == 쿼리 문법이나 쿼리 수행 시 최적화 방식이 다르다
    - 쿼리 문법 :: 표준 ANSI SQL 문법을 기반으로 DBMS 각자 독자적인 기능을 위한 다양한 SQL Dialect
    - 쿼리 수행 시 최적화 방식 :: Query Optmization, 어떻게 적은 탐색 비용으로 더 빠르게 결과 반환할지
    - 방법 비교 ::  (Procedural Language) PL/SQL (Oracle), PL/pgSQL (PostgresQL), T-SQL (MS-SQL) 등

2. 특징

1. 데이터의 정규화

2. SQL을 통한 데이터 조작

3. 트랜잭션 처리(ACID - compaliant 준수)

4. Guaranteed Consistency(데이터의 일관성 보장 - Pessimistic Lock)


2.1 트랜잭션의 특징(ACID)

:: DBMS에서는 Operation(Query) 수행 시마다 트랜잭션을 생성 및 활용

항목 내용
1. 원자성 / Atomicity 트랜잭션 내의 모든 작업이 완료 or 아예 취소
2. 일관성 / Consistency 트랜잭션이 실행되기 전과 후에 데이터가 일관된 상태를 유지
-> 데이터 저장 시, 모든 제약 조건에 만족
-> 데이터 조작 시, 최신 값 반영
3. 격리성 / Isolation 각 트랜잭션은 다른 트랜잭션의 영향을 받지 않고 독립적으로 실행
4. 지속성 / Durability 트랜잭션이 성공적으로 종료되면 그 결과는 영구적으로 저장
-> 로그 및 백업을 통한 보완

2.1.1 격리성에서의 격리 레벨

  • Isolation Level (격리 수준) 을 통해 독립(고립)의 정도를 정의
    - 데이터베이스 :: 데이터베이스에 기본 설정 + 쿼리마다 세부 설정 가능
    - 어플리케이션 :: 쿼리마다 세부 설정 가능 (DB 호출 함수에 각각에 대해, Spring JPA)
Isolation Level 독립의 정도에 대한 정의
0 Level : Read Uncommitted -에러 Dirty Read 발생
1 Level : Read Committed -에러 Non-Repeatable Read 발생
2 Level : Repeatable Read - 에러 Phantom Read 발생
3 Level : Serializable - 에로 발생 X, 시간(성능) 하락
위배 시 “Could not serialize access due to concurrent update” 발생

2.2 Guarnteed Consistency / Pessimistic Lock

:: DB가 데이터의 일관성을 보장하는 방법

:: DB built-in lock - 개발자나 애플리케이션에서 비일관적인 데이터(Inconsistent)를 DB가 알아서 관리

  •  Pessimistic Lock
    :: Pessimistic Concurrency Control(비관적 동시성 제어)의 일환
    :: DB가 특정 데이터 수정 시, Lock으로 다른 트랙잭션의 접근을 제한
    :: 경쟁 조건(Race Condition) or 데이터 충돌 방지
더보기

- 경쟁 조건(Race Condition) 

:: 2개 이상의 스레드가 공유 데이터에 엑세스하여 동시 변경할 때, 발생하는 문제

:: 갱신 전에 값에 대한 수정 / 읽기 등을 통해 실제 갱신 값에 대한 누락 발생 

 


참고

ASAC 수업자료 

 

읽어보기

Guarnteed Consistency

 

[동시성] DataBase Concurrency Controll(Pessimistic, Optimistic, Named Lock)

🎯 DataBase Concurrency ControllRace Condition경쟁상태는 두 개 이상의 스레드가 공유 데이터에 액세스 할 수 있고, 동시에 변경을 하려고 할 때 발생하는 문제Race Condition 으로 동시에 들어오는 요청들이

data-make.tistory.com

 

Pessimistic Lock

 

 

[database] 낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)

안녕하세요. 오늘은 낙관적 락과 비관적 락의 개념에 대해서 알아보는 시간을 가져보도록 하겠습니다.DB 충돌 상황을 개선할 수 있는 방법database에 접근해서 데이터를 수정할 때 동시에 수정이

sabarada.tistory.com

 

RDBMS, SQL의 종류별 차이

 

Exploring SQL Dialects: A Guide to Popular Database Management Systems

Structured Query Language (SQL) is a powerful programming language that enables users to manage and manipulate relational databases…

medium.com

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
글 보관함