![article thumbnail](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7zeuZ%2FbtsHlFOguCP%2FVFpkoy0uHmFeckl4ROw5x1%2Fimg.webp)
데이터베이스의 테이블과 인덱스가 디스크에 어떻게 저장이 되고 그리고 SELECT를 했을 때 어떤 식으로 데이터를 가져오는지 정리해보려고 한다! Table 데이터베이스에서 테이블은 저장소에 비트와 바이트 형태로 저장한다.가로: row(행), 세로: column(열)emp_idemp_nameemp_birthemp_salary2000Hussein1/2/1988$100,0003000Adam3/2/1977$200,0004000Ali5/2/1982$300,000 Row_ID1. 사용자가 직접 생성하거나 수정할 수 없는 내부 시스템에 의해 관리되는 열이다.2. 데이터베이스 관리 시스템이 내부적으로 사용하고 유지 관리하는 식별자로, 각 행을 고유하게 식별하는 데 사용된다.row_idemp_idemp_nameemp_bi..
설명 한 번 트랜잭션이 커밋되면, 그 결과가 영구적으로 데이터베이스에 반영되어 시스템 장애가 발생하더라도 유지된다는 것을 보장 내용 Durability techniques 구분 설명 예시 WAL(Write ahead log) 기본 원리 데이터를 데이터베이스 파일에 직접 쓰기 전에 모든 변경 사항(트랜잭션)을 로그 파일에 먼저 기록하는 것 작동 원리 로그 기록 - 데이터 쓰기 - 회복 절차 Redo, Undo Asynchronous snapshot 장점 1. 데이터 복구 지원 2. 성능 저하 최소화 3. 데이터 일관성 보장 buffer RDB / AOF RDB 특정한 시점의 스냅샷으로 백업하는 방식 AOF 모든 쓰기 명령에 대한 로그를 남기는 방식 Redis 정리 지속성은 데이터베이스 시스템에서 중요한 특..
설명 트랜잭션의 실행 전과 후에 데이터베이스가 정의된 비즈니스 규칙과 제약 조건을 계속해서 충족하도록 보장하는 속성 내용 구분 설명 비고 데이터의 일관성 데이터가 일관된 상태를 유지하는 것을 의미 사용자에 의해 정의, 참조 무결성(외래키) 원자성, 고립성(격리 레벨에 따라 달라짐) 읽기의 일관성 데이터를 읽을 때 사용자가 항상 최신의 일관된 데이터를 보게 되는 것 데이터의 변경 사항이 다른 트랜잭션에 어떻게 즉시 반영되는지는 격리 레벨에 따라 달라짐 이는 관계형 및 비관계형 데이터베이스 모두에 적용되며, 참조 무결성을 포함한 일관성을 보장하는 데 필수적 데이터의 일관성 예시 pictures 테이블 ID(PK) title LIKES 1 Sunset 2 2 Mountain View 1 picture_like..
설명 같은 데이터를 쓰고 읽기 위해 다중 트랜잭션의 동시성이 발생할 수 있는 가능성이 있는데 이것이 고립의 시작이며, 격리 레벨에 따른 읽기 현상이 발생한다. 내용 트랜잭션 격리 레벨(Transaction Isolation Level) [MySQL] 트랜잭션 격리 수준(간단한 정리) READ UNCOMMITTED 정의 다른 트랜잭션에서 아직 커밋되지 않은 데이터도 조회할 수 있다. 부정합 '더티 리드(Dirty Reads)'가 발생할 수 있다. 아직 확정되지 않은 데이터를 읽어서 그 트랜잭션이 롤백되 zambbon.tistory.com 읽기 현상(Read Phenomena) 구분 설명 Dirty Reads 아직 커밋되지 않은(즉, 최종 확정되지 않은) 데이터를 읽는 현상 Non-Repeatable Rea..
설명 트랜잭션의 모든 쿼리들은 성공해야만 한다. 하나의 쿼리가 실패한다면, 트랜잭션의 이전 성공한 쿼리들은 즉시 롤백 트랜잭션의 커밋 이전에 데이터베이스가 다운된다면, 트랜잭션의 이전 성공한 쿼리들은 즉시 롤백 내용 원자성을 구현하는 방법에는 여러 가지가 있다. 가장 일반적인 방법은 로깅과 체크포인트를 사용하는 것이다. 구분 설명 Logging 트랜잭션과 관련된 모든 변경 사항을 로그에 기록한다. 트랜잭션이 실패할 경우, 로그를 사용하여 변경 사항을 롤백하고 데이터베이스를 이전 상태로 복원할 수 있다. Checkpoints 주기적으로 또는 특정 조건에서 데이터베이스의 현재 상태를 안전한 저장 위치에 기록한다. 시스템 장애 발생 시, 최근 체크포인트부터 복구 과정을 시작하여 시간과 자원을 절약할 수 있다...
트랜잭션 이란? A Collection Of Queries(쿼리 모음) One Unit Of Work(하나의 작업 단위) 예시) 은행 거래(SELECT, UPDATE, INSERT) 트랜잭션 수명(Transaction Lifespan) 구분 설명 Begin 트랜잭션 시작 Execution 트랜잭션 실행 Validation 트랜잭션 검증 / 결정 Commit or Rollback 트랜잭션 커밋(디스크에 입력) or 트랜잭션 롤백(메모리에 있는것을 되돌리기) Unexpected Ending 예상치 못한 상황(=Rollback) ex) Crash, Bug 트랜잭션 특성(Nature of Transactions) 데이터베이스 트랜잭션이 안전하고 신뢰할 수 있도록 만드는 규칙 세트 구분 설명 Atomicity(원..
예시: 책을 출판한다. 1. 개념적 모델: 업무의 전반적인 요구 사항과 엔티티 간의 관계를 이해하고 정의 책의 아이디어를 고려하는 단계이다. 책의 주제는 무엇인가요? 주요 캐릭터는 누구인가요? 이들은 어떻게 상호작용하는가요? ex) 로맨스 소설을 쓰려고 한다면 주요 캐릭터들과 그들의 관계를 먼저 정의한다. 2. 논리적 모델: 개념적 모델을 바탕으로 논리적 구조를 설계한다. 테이블, 컬럼, 키(기본 키, 외래 키 등), 데이터 타입, 제약 조건 등을 정의하며, 어떤 DBMS를 사용할 것인지는 고려하지 않는다. 이것은 아이디어를 좀 더 구체적으로 만드는 단계이다. 책의 각 장은 어떤 내용을 담고 있을까요? 각 캐릭터는 어떤 역할을 하는가요? 책의 전체적인 구조는 어떻게 되는가요? ex) 각 장의 제목과 내용..
UNION(합집합 - 중복제거)두 SELECT문의 결과를 결합하고 중복된 결과는 제거된다.SELECT column_name(s) FROM table1UNIONSELECT column_name(s) FROM table2; UNION ALL(합집합 - 중복제거X)UNION과 같지만 중복된 결과를 제거하지 않는다.SELECT column_name(s) FROM table1UNION ALLSELECT column_name(s) FROM table2; EXCEPT(차집합)첫 번째 SELECT 문의 결과에서 두 번째 SELECT 문의 결과를 제외한다.SELECT column_name(s) FROM table1EXCEPTSELECT column_name(s) FROM table2; INTERSECT(교집합)두 SEL..
Join두 개 이상의 테이블에서 관련 있는 데이터를 결합 1) Inner Join두 테이블의 교집합즉, 두 테이블의 Join 조건에 일치하는 행만 반환SELECT * FROM table1INNER JOIN table2ON table1.matching_column = table2.matching_column; 2) Left (Outer) Join첫 번째 테이블의 모든 행과 두 번째 테이블에서 일치하는 행을 반환일치하지 않는 경우, 두 번째 테이블의 값은 NULL로 반환SELECT * FROM table1LEFT JOIN table2ON table1.matching_column = table2.matching_column; 3) Right (Outer) Join두 번째 테이블의 모든 행과 첫 번째 테이블에서..
클러스터여러 개의 노드로 구성된 하나의 분산 시스템을 의미하며, 각 노드에는 CPU, 메모리, 스토리지 등의 컴퓨팅 리소스가 있어 데이터 처리와 분석 작업을 병렬로 수행할 수 있다. 관계형 데이터베이스 사용자 / 세션1) 사용자 ID(User ID):- 사용자 ID는 데이터베이스에 저장된 각 사용자를 고유하게 식별하는 식별자(일반적으로 사용자 계정, 프로필, 인증 정보와 연관)- 사용자 ID는 데이터베이스의 다른 테이블에도 참조될 수 있으며, 이를 통해 사용자 관련 데이터를 연결하고 추적할 수 있다.2) 세션 ID(Session ID):- 세션 ID는 사용자가 웹 사이트나 애플리케이션을 사용하는 동안 지속되는 인터랙션을 식별하기 위한 고유한 식별자- 사용자가 로그인하거나 웹 사이트를 방문할 때, 서버는 ..