본문 바로가기
반응형

Back-End/Database23

CAP 정리 CAP 정리는 분산 데이터베이스 시스템이 CAP 중 2개의 속성만을 제공할 수 있다는 이론입니다. CAP 정리에 따르자면, 일관성(Consistency), 가용성(Availability), 분할 내성(Partition Tolerance) 등 3가지 속성을 모두 만족하는 분산 데이터베이스 시스템은 존재하지 않습니다.속성 설명일관성(Consistency)은 모든 클라이언트 요청은 어느 노드에 연결되어도 같은 데이터를 볼 수 있음을 의미합니다.가용성(Availability) 은 노드 일부에 문제가 발생하여도 시스템은 클라이언트의 모든 요청에 유효한 응답을 전해줄 수 있어야 함을 의미합니다.분할 내성(Partition Tolerance) 은 노드 사이에 통신이 불가능한 상황(파티션) 에서도 시스템이 계속 동작한.. 2025. 5. 8.
관계형, 비 관계형 데이터베이스 관계형 데이터베이스관계형 데이터베이스는 고정된 로우와 컬럼으로 구성된 테이블에 데이터를 저장한다. 그리고 SQL을 사용하여 여러 테이블에 존재하는 데이터와 관계에 따라서 조인하여 합칠 수도 있다. 관계형 데이터베이스는 데이터를 중복 없이 한 번만 저장하고, 데이터 무결성을 보장한다. 관계형 데이터베이스의 경우 일반적으로 스케일 업을 사용하여 확장한다. 관계형 데이터베이스는 스키마를 유연하게 바꾸기 어렵다는 한계가 존재한다. 또한, 관계가 존재하기 때문에 비즈니스 요구사항이 더욱 발전하면 복잡한 쿼리가 생기게 된다.비 관계형 데이터베이스반면, 비 관계형 데이터베이스는 NoSQL이라고 불리기도 하는데, 정해진 스키마가 존재하지 않으며 자유롭게 데이터를 저장하고 조회할 수 있다. 문서, 키-값, 와이드 컬럼,.. 2025. 4. 28.
ACID ACID는 원자성(Atomicity), 일관성(Consistency), 격리성(Isolation), 지속성(Durability)의 약자이며, 데이터베이스 트랜잭션이 안전하게 수행된다는 것을 보장하기 위한 성질을 의미한다.원자성(Atomicity)원자성(Atomicity) 은 트랜잭션 내부 연산들이 부분적으로 실행되고 중단되지 않는 것을 보장한다. 쉽게 말하자면, 트랜잭션은 전체 성공과 전체 실패 중 한 가지만 수행한다는 것이다. 예를 들면 계좌 이체 트랜잭션은 다음과 같은 연산으로 이루어져 있다. 이때 2번 과정에서 에러가 발생하면 1번 과정을 취소해야 한다.1. A 계좌에 3000원 출금2. B 계좌에 3000원 입금일관성(Consistency)일관성(Consistency) 은 트랜잭션이 성공적으로 완.. 2025. 4. 22.
DB Replication DB Replication은 데이터베이스의 고가용성과 데이터 안정성을 보장하기 위해 널리 활용되는 핵심 기술이다. 특히, 대규모 애플리케이션 환경에서는 데이터의 지속적인 가용성과 신뢰성이 매우 중요하기 때문에, 원본(Source) 서버와 복제(Replica) 서버 간의 데이터 동기화는 필수다.MySQL 기준으로 설명바이너리 로그(Binary log) 저장 방식Replication은 Source 서버에서 발생하는 모든 데이터 변경 사항을 Replica 서버로 복제하여 두 서버 간의 데이터 일관성을 유지하는 메커니즘이다. 이러한 과정은 주로 Binary log를 기반으로 이루어지며, Binary log는 Source 서버에서 실행된 모든 데이터 변경 쿼리를 기록하는 역할을 한다. MySQL에서는 이 Bina.. 2025. 4. 10.
MySQL InnoDB 갭락과 넥스트키 락 정의 및 팬텀 리드 방지 팬텀 리드(Phantom Read)Phantom Read는 트랜잭션이 동일한 조건의 쿼리를 반복 실행할 때, 나중에 실행된 쿼리에서 처음에는 존재하지 않았던 새로운 행이 나타나는 현상을 말한다. 이는 주로 읽기 일관성(Read Consistency) 을 유지하는 과정에서 발생할 수 있는 문제로, 데이터의 삽입이나 삭제가 다른 트랜잭션에 의해 이루어질 때 발생한다.-- 트랜잭션 A 시작START TRANSACTION;-- 트랜잭션 A 첫 번째 조회SELECT * FROM orders WHERE amount > 150;-- 트랜잭션 B 시작START TRANSACTION;-- 트랜잭션 B 새로운 행 삽입INSERT INTO orders (customer_id, amount) VALUES (4, 250);--.. 2025. 4. 4.
데이터베이스 시스템 동시성 제어 방법 MVCC(Multi-Version Concurrency Control)MVCC는 데이터의 여러 버전을 유지하여 트랜잭션이 동시에 데이터를 읽고 쓸 수 있도록 하는 방식이다. 각 트랜잭션은 자신만의 일관된 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항에 영향을 받지 않는다.데이터의 각 버전을 유지하여 읽기 작업이 쓰기 작업과 독립적으로 이루어질 수 있다. 트랜잭션은 시작 시점의 스냅샷을 기반으로 데이터를 읽어, 다른 트랜잭션의 변경 사항을 보지 못한다.또한 읽기 작업 시 잠금을 사용하지 않아 높은 동시성을 제공한다. 읽기 작업이 잠금에 의해 지연되지 않아, 읽기 중심의 애플리케이션에서 우수한 성능을 보인다. 읽기 작업 시 잠금을 사용하지 않으므로, 쓰기 작업과의 충돌이 줄어든다. 하지만 여러.. 2025. 4. 2.
데이터베이스 커넥션 풀 미사용 시 발생 문제 애플리케이션과 데이터베이스가 통신을 하기 위해서는 데이터베이스 커넥션이 필요하다.데이터베이스 커넥션의 생애주기 :데이터베이스 드라이버를 사용하여 데이터베이스에 연결데이터 읽기/쓰기를 위한 TCP 소켓 열기소켓을 통한 데이터 읽기/쓰기연결 종료소켓 닫기커넥션 풀이 없다면 애플리케이션에서 데이터베이스에 접근해야하는 요청을 처리할 때마다 커넥션을 새로 생성하여 연결하고 해제하는 과정을 반복해야 한다. 이 과정은 비용이 상당히 많이 들기 때문에 요청의 응답시간이 길어진다.또 동시에 많은 요청이 들어올 경우 매번 새로운 커넥션을 생성하게 되는데, 데이터베이스의 최대 연결 수를 초과할 수 있다. 데이터베이스는 일반적으로 동시에 처리할 수 있는 요청 개수에 제한이 있는데, 이 제한을 초과하면 요청이 거부되어 사라지거.. 2025. 3. 28.
공유 락과 배타 락 DBMS에서 트랜잭션을 특별한 제어 없이 병행 수행을 허용한다면 데이터의 일관성과 무결성을 보장하기 어려울 수 있다. 이때, 병행 수행되는 트랜잭션들을 제어하기 위해서 락을 사용할 수 있다. DBMS에서 락은 크게 공유 락과 배타 락으로 분류할 수 있다.공유 락(Shared Lock)공유 락(Shared Lock) 은 읽기 락(Read Lock) 이라고 부르며, 공유 락이 걸린 데이터에 대해서 다른 트랜잭션에서도 공유 락을 획득할 수 있지만, 배타 락은 획득할 수 없다.즉, 공유 락을 사용하면 트랜잭션 내에서 조회한 데이터가 변경되지 않는다는 것을 보장한다.SELECT * FROM table_name WHERE id = 1 FOR SHARE;배타 락(Exclusive Lock)배타 락(Exclusive .. 2025. 3. 21.
데이터베이스 인덱스 인덱스는 데이터베이스 테이블의 검색 속도를 향상시키기 위한 자료구조로 백과사전의 색인과 같다.저장되는 컬럼의 값을 사용하여 항상 정렬된 상태를 유지하는 것이 특징이다.이러한 특징으로 인해 인덱스는 INSERT, UPDATE, DELETE의 성능이 희생된다는 것이 단점을 가지고 있다.인덱스 자료 구조 (MySQL InnoDB 기준)B+Tree와 같은 변형 B-Tree 자료구조를 이용해서 인덱스를 구현한다.기본 토대는 B-Tree 인덱스이기 때문에, 컬럼의 값을 변형하지 않고 인덱스 구조체 내에서 항상 정렬된 상태로 유지합니다.B-Tree(Balanced-Tree)B-Tree(Balanced-Tree)에서는 크게 3가지 노드가 존재한다.최상위에 하나의 루트 노드가장 하위 노드인 리프 노드실제 데이터 레코드를.. 2025. 3. 10.
728x90
반응형