본문 바로가기
반응형

Back-End/Database25

[DB] JOIN과 LEFT JOIN, 언제 무엇을 써야 할까요? (초보 개발자 필독) 교집합과 합집합 개념으로 이해하는 SQL/JPA 조인 전략데이터베이스를 다루다 보면 여러 테이블을 엮어 원하는 데이터를 조회해야 할 때가 많습니다. 이때 JOIN은 필수적으로 사용되는 기능입니다.JOIN과 LEFT JOIN은 가장 기본이지만, 많은 주니어 개발자분들이 언제 무엇을 써야 할지 헷갈려 하는 개념입니다. 이 글을 통해 두 조인의 차이점을 명확히 이해하고, 어떤 상황에 사용해야 하는지 알아보겠습니다.1. join (INNER JOIN) - "두 데이터가 모두 있어야만!"join은 SQL의 INNER JOIN과 같습니다. 두 테이블에 모두 데이터가 존재하는 행만을 가져오는, 즉 교집합을 구하는 조인입니다.개념 비유: 소개팅 매칭join을 1:1 소개팅 자리에 비유할 수 있습니다. 회원 테이블과 주.. 2025. 7. 15.
데이터베이스 정규화 데이터베이스에서 정규화(Normalization) 는 테이블을 정리하여 중복 데이터를 최소화하고, 데이터 무결성을 보장하는 과정을 의미합니다. 이를 통해 데이터 저장 용량을 줄이고, 삽입·갱신·삭제 이상(Anomaly) 현상을 해결할 수 있습니다. 정규화는 여러 단계가 존재하며, 대표적으로 1정규화(1NF), 2정규화(2NF), 3정규화(3NF), BCNF가 있습니다.정규화 단계1 정규화(1NF) 는 테이블 컬럼의 값이 원자값(Atomic Value) 을 가지도록 정리하는 것을 의미합니다.2 정규화(2NF) 는 1 정규화를 진행한 테이블에서 완전 함수 종속을 만족할 수 있도록 테이블을 분해하는 것인데요. 쉽게 표현하자면, 기본 키의 일부에만 종속된 속성이 없도록 분해하는 것을 의미합니다. A 속성을 통해.. 2025. 6. 23.
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.
728x90
반응형