Computer science/Database

데이터베이스 격리 수준이란?동시에 여러 트랜잭션이 데이터를 변경하거나 조회할 때 한 트랜젝션의 작업 내용이 다른 트랜젝션에 어떻게 보일지를 결정하는 기준. MySQL MVCC와 Undo logMySQL MVCCMySQL에서는 락을 사용하지 않고 일관된 읽기를 지원하기 위해 Multi-Version Concurrency Control(MVCC)을 사용한다. MVCC란 원본 데이터와 변경 데이터를 동시에 유지하는 방식으로 MySQL에서는 Undo log를 통해 이를 구현한다.Undo LogUndo log는 트랜잭션 실행 이후 Rollback할 경우 기존 값을 복구하기 위해 만들어놓은 로그 영역이다.위와 같이 Update 문을 실행하면 Commit 여부와는 관계 없이 Undo log에 먼저 기록이 남게 된다...
레디스란?레디스는 Remote Dictionary Server의 약자로 모든 데이터를 디스크가 아닌 메모리에 저장하는 in-memory 데이터베이스이자, key-value 구조의 저장소이다.(이미지 출처: ByteByteGo) 위의 이미지처럼 메모리 상에서 운영되는 NoSQL 데이터베이스이기 때문에 빠른 입출력이 가능하지만 장애가 발생하면 모든 데이터를 잃을 위험이 있다. 레디스의 저장소 구현 코드레디스의 핵심 구조는 다음과 같이 계층적으로 구성되어 있으며, 오픈소스이기 때문에 코드를 보면서 실제 구현을 확인할 수 있다.dictdict는 dictType과 dictEntity를 포함하고 있는 해시 테이블이다.// redis/deps/hiredis/dict.h typedef struct dict { dict..
개요 MongoDB의 마이그레이션을 진행하면서 이미 배열인 aggregate 값을 toArray() 함수로 다시 배열 값으로 바꾸는 스니펫이 있어 그 이유를 찾아보았다. var ids = db.someSchema.aggregate([ { $group: { _id: "$enterpriseId" } } ]).toArray().map(function(doc) { return doc._id; }); Cursor 커서는 MongoDB에서 find 메서드를 실행하면 반환되는 문서의 집합으로, 기본적으로 자동으로 loop 되지만 명시적으로 특정 인덱스 문서를 가져올 수도 있다. Cursor는 특정 인덱스 값을 값는 포인터와 유사하다. 출처: https://www.softwaretestinghelp.com/mongod..
Isolation과 연관된 이상 현상의 종류 데이터베이스는 고립성과 관련되어 다양한 오류가 발생한다. (예시 SALES 테이블) NAME QNT PRICE PR1 10 1000 PR2 20 9000 Dirty reads 하나의 트랜잭션이 다른 트랜잭션에 의해 커밋 되지 않은 데이터를 읽는 것. TR1 - SELECT QNT*PRICE FROM SALES // 10000, 18000 TR2 - UPDATE SALES SET QNT = QNT + 5 WHERE NAME = PR1 TR1 - SELECT QNT*PRICE FROM SALES // 15000, 18000 TR2 Rollback Commit조차 되지 않은 데이터를 읽어 오기 때문에 Inconsistance한 정보를 얻는 문제가 발생한다. Non-..
ACID 원칙이란? Atomicity, Consistency, Isolation, Durability의 약자로 데이터베이스 관리 시스템(DBMS)에서 트랜잭션을 안전하게 수행하기 위한 속성이다. Transaction 트랜젝션은 하나의 단위로 수행되는 쿼리의 집합이다. 작업이 하나라도 실패하면 트랜젝션도 실패가 되며, 모든 작업이 성공해야 트랜젝션이 성공한다. 데이터베이스 트랜젝션은 ACID라는 특성을 가지고 있다. Atomicity (원자성) 트랜잭션 내의 모든 연산은 전부 성공하거나 전부 실패해야 하며 부분적으로 실행 되어서는 안된다. 트랜잭션이 중간에 실패하면 변경 사항은 모두 롤백 되어야 한다. 사용자 A가 사용자 B에게 1000원을 입금할 때 1. A 계좌에서 1000원을 삭제 2. B의 계좌에 ..
Licence 저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR) 이용자는 다음의 권리를 갖습니다: 공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함) 정규화(normalization) 함수 종속성을 이용해 릴레이션을 연관성이 있는 속성들로만 구성되도록 분해해서 이상 현상이 발생하지 않는 바람직한 릴레이션으로 만들어 가는 과정. 정규화를 통한 릴레이션은 무손실 분해(nonloss decomposision)되어야 한다. 무손실분해 1. 릴레이션은 의미적으로 동등한 릴레이션들로 분해되어야 하고 분해로 인한 정보의 손실이 발생하지 않아야 한다. 2. 분해된 릴레이션들을 자연 조인하면 분해 전의 릴레이션으로 복원 가능해야 한다. 정규형(NF; Normal From)..
Licence 저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR) 이용자는 다음의 권리를 갖습니다: 공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함) 이상현상과 정규화 이상현상 불필요한 데이터 중복으로, 릴레이션에 대한 데이터 삽입, 수정, 삭제 연산을 수행할 때 발생할 수 있는 부작용. 삽입 이상: 새 데이터를 삽입하기 위해 불필요한 데이터도 같이 삽입해야 하는 문제 이벤트에 참여하지 않은 melon이라는 고객은 이벤트번호가 NULL값이라 이벤트참여 릴레이션에 넣을 수 없다. 이벤트참여 릴레이션에 삽입하기 위해서는 임시 이벤트번호라는 불필요한 데이터 값도 같이 삽입해야 한다. 갱신 이상: 중복 투플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제..
Licence 저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR) 이용자는 다음의 권리를 갖습니다: 공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함) 논리적 설계 DBMS에 적합한 논리적 스키마 설계 규칙 1: 모든 개체는 릴레이션으로 변환한다 개체 이름 -> 릴레이션 이름 개체의 속성 -> 릴레이션의 속성 개체의 키 속성 -> 릴레이션의 기본키 개체의 속성이 복합 속성인 경우에는 복합 속성을 구성하고 있는 단순 속성만 릴레이션의 속성으로 변환한다 규칙 2: 다대다(n:m) 관계는 별도의 릴레이션으로 변환한다 각 개체를 릴레이션으로 변환한 후 이 릴레이션의 기본키를 관계 릴레이션에 포함시켜 외래키로 지정하고 외래키들을 조합하여 관계 릴레이션의 기본키로 지정..
Licence 저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR) 이용자는 다음의 권리를 갖습니다: 공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함) 관계 데이터 모델의 기본 개념 릴레이션 (relation): 하나의 개체에 관한 데이터를 2차원 테이블의 구조로 저장한 것 속성 (attribute): 릴레이션의 열(column), 애트리뷰트 튜플 (tuple): 릴레이션의 행(row) 도메인 (domain): 하나의 속성이 가질 수 있는 모든 값의 집합 (INT, CHAR(10) 등) 널 (null): 속성 값을 아직 모르거나 해당되는 값이 없음을 표현한다 카디널리티 (cardinality): 하나의 릴레이션에서 투플의 개수 차수 (degree): 하나의 ..
Licence 저작자표시-비영리-변경금지 2.0 대한민국 (CC BY-NC-ND 2.0 KR) 이용자는 다음의 권리를 갖습니다: 공유 — 복제, 배포, 전시, 공연 및 공중송신 (포맷 변경도 포함) 데이터 베이스 설계 단계 사용자의 다양한 요구사항을 고려하여 데이터베이스를 생성하는 과정 E-R 모델과 릴레이션 변환 규칙을 이용한 설계의 과정 단계 내용 1단계 요구 사항 분석 2단계 개념적 설계 3단계 논리적 설계 4단계 물리적 설계 5단계 구현 데이터 모델링과 데이터 모델 1단계: 요구사항 분석 - 데이터베이스의 용도 파악 결과물: 요구사항 명세서 2단계: 개념적 설계 - DBMS에 독립적인 개념적 구조 설계 결과물: 개념적 스키마(E-R 다이어그램) 3단계: 논리적 설계 - DBMS에 적합한 논리적 구..
cslee00
'Computer science/Database' 카테고리의 글 목록