본문 바로가기
반응형

Back-End/Database28

열 기반 DB 와 행 기반 DB 의 차이점 행 기반 데이터베이스(Row-oriented Database) 는 데이터를 행 단위로 관리하는 DBMS입니다. 행 단위 읽기 맟 쓰기 연산에 최적화돼 있습니다. PostgreSQL, MySQL이 대표적인 행 기반 데이터베이스입니다.반면, 열 기반 데이터베이스(Column-oriented Database) 는 열 기반으로 데이터를 관리한다는 점에서 행 기반 데이터베이스와 차이가 있습니다. 데이터를 조회할 때 필요한 열만 로드하기 때문에 디스크 I/O를 줄일 수 있으며, 같은 종류의 데이터가 연속적으로 저장되므로 압축 효율이 높습니다. 이러한 특징으로 인해 주로 데이터 분석에 사용됩니다. 대표적인 열 기반 데이터베이스로는 BigQuery, Redshift, Snowflake가 존재합니다.예를 들어, 다음과 .. 2025. 8. 7.
RDB 페이징 쿼리의 필요성 페이징 쿼리(Paging Query) 는 전체 데이터를 부분적으로 나누어 데이터를 조회하거나 처리할 때 사용됩니다. 데이터를 상대적으로 작은 단위로 나누어 처리하기 때문에 데이터베이스나 애플리케이션의 리소스 사용 효율이 증가하며, 로직 처리 시간을 단축 시킬 수 있습니다. MySQL에서 페이징 쿼리는 일반적으로 LIMIT, OFFSET 구문을 사용하여 작성합니다.select *from subscribelimit 500offset 0;LIMIT, OFFSET 방식 페이징 쿼리의 단점 및 해결방안LIMIT, OFFSET 방식의 페이징 쿼리는 뒤에 있는 데이터를 읽을 수록 점점 응답 시간이 길어질 수 있는데요. 왜냐하면, DBMS는 지정된 OFFSET 수만큼 모든 레코드를 읽은 이후에 데이터를 가져오기 때문입.. 2025. 7. 31.
낙관적 락과 비관적 락 낙관적 락과 비관적 락은 데이터베이스 트랜잭션에서 동시성 제어를 위한 주요 기법입니다. 데이터 무결성을 유지하면서 여러 트랜잭션이 동시에 데이터에 접근할 때 발생할 수 있는 충돌을 해결할 때 사용됩니다.낙관적 락(Optimistic Lock) 은 데이터 충돌이 적을 것으로 가정하고, 데이터를 읽을 때 락을 설정하지 않고 트랜잭션이 데이터를 수정할 때 충돌이 발생하지 않았는지 확인하는 방식입니다. 보통 version과 같은 별도의 구분 컬럼을 사용해서 데이터가 변경되었는지 확인하며, 충돌이 발생하면 데이터베이스가 아닌 애플리케이션에서 직접 롤백하거나 재시도 처리를 해야 합니다.비관적 락(Pessimistic Lock) 은 데이터 충돌이 많을 것으로 가정하고, 트랜잭션이 시작될 때 공유락(Shared Loc.. 2025. 7. 30.
[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.
728x90
반응형