대부분의 서비스는 여러 사용자가 동시에 데이터에 접근한다. 이 과정에서 같은 데이터를 동시에 수정하려 할 경우 문제가 발생할 수 있다. 이러한 문제를 동시성 문제(Concurrency Issue) 라고 하며 데이터의 정합성과 무결성을 해칠 수 있다. 데이터베이스의 동
RDBMS(Relational Database Management System)는 데이터를 관계형 모델(Relational Model)로 저장하고 관리하는 시스템이다. 데이터는 테이블(Table)에 저장되며 각 테이블은 행(Row)과 열(Column)로 구성된다. 이러
JPA에서 불필요한 조인을 줄이고 DTO로 조회하는 방법
최근 Redis를 본격적으로 사용하면서 문득 이런 의문이 들었다. “RDS는 결국 어디에 데이터를 저장하는 거지? 하드웨어에? 그렇다면 Redis는 메모리 기반이라고 하는데, 무조건 메모리만 쓰는 걸까?” 이런 궁금증을 해결하기 위해 RDS와 Redis의 저장 위치,
인덱스는 데이터베이스에서 원하는 데이터를 빠르게 찾을 수 있도록 도와주는 기능이다. 예를 들어 책에서 특정 단어를 찾을 때 처음부터 끝까지 페이지를 넘기는 대신 맨 뒤의 색인을 참고하면 빠르게 찾아볼 수 있다.. 데이터베이스에서도 비슷하다고 생각하면 된다. 인덱스는 특
EXPLAIN은 MySQL에서 SELECT, DELETE, INSERT, REPLACE, UPDATE 문 앞에 붙여 해당 쿼리의 실제 실행 계획을 미리 보여주는 도구다. 쿼리를 실행하지 않고도 옵티마이저가 어떤 인덱스를 선택하고 어떤 방식으로 조인을 수행하는지 확인할
정규화(Normalization)는 데이터의 중복을 줄이고 이상 현상(Anomaly)을 방지하기 위한 데이터베이스 설계 기법이다. 관계형 데이터베이스에서 데이터를 효율적이고 논리적으로 구조화하는 데 목적이 있다. 즉, 중복된 데이터를 없애고 테이블 간의 관계를 정리해서
역정규화(Denormalization)는 정규화된 데이터베이스 구조에서 일부러 중복을 허용하거나 테이블을 병합하여 조회 성능을 높이는 작업이다. 이는 데이터 무결성보다 빠른 읽기 속도나 간결한 쿼리 작성이 우선일 때 선택하는 전략으로 성능 개선을 위한 실질적인 트레이드
서비스를 운영하다 보면 이런 질문이 생긴다.상품별 클릭 수를 시간대별로 보고 싶다특정 지역 사용자의 요일별 구매량을 알고 싶다마케팅 캠페인 전후로 성별, 연령대별 매출 변화를 비교하고 싶다이처럼 데이터를 다양한 관점(Dimension)으로 분석하려면 단순한 SQL 조회
데이터 웨어하우스는 조직 내 여러 데이터 소스를 하나로 모아 분석과 의사결정 지원에 최적화된 데이터 저장소를 말한다. 일반적인 운영 DB는 주문, 회원가입, 결제 등 트랜잭션을 빠르게 처리하는 것이 목적이지만 데이터 웨어하우스는 과거부터 현재까지의 데이터를 통합해 패턴