전체 글 592

[Real MySQL] 8-7. 인덱스: 멀티 밸류 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 멀티 밸류 인덱스하나의 데이터 레코드가 여러 개의 키 값을 가질 수 있는 형태의 인덱스JSON 배열과 같은 비정형 데이터에서 원소별 인덱싱이 필요할 때 사용됨 특징인덱스 내에서 하나의 레코드가 여러 개의 엔트리를 가질 수 있음JSON 필드에 저장된 배열 원소들에 대한 인덱싱을 위해 설계됨배열을 가진 모든 레코드에 대해 다수의 인덱스 엔트리가 생성되므로, 인덱스 크기가 커질 수 있음 예시CREATE TABLE orders ( id INT PRIMARY KEY AUTO_INCREMENT, items JSON, INDEX idx_items ((CAST(items->'$[*]' AS UNSIGNED ARRAY))));..

Database/Mysql 2024.09.07

[Real MySQL] 8-6. 인덱스: 함수 기반 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 함수 기반 인덱스칼럼의 값을 변형해서 만들어진 값에 대해 구축된 인덱스계산 과정의 차이만 있을 뿐 내부 구조 및 유지관리 방법은 B-Tree 인덱스와 동일 가상 칼럼을 이용한 구현현재 존재하는 컬럼을 사용하여 가상 컬럼 및 인덱스 생성 가능단, 테이블의 구조가 변경됨ALTER TABLE user ADD full_name VARCHAR(30) AS (CONCAT(first_name, ' ', last_name)) VIRTUAL, ADD INDEX ix_fullname (full_name); 함수를 이용한 구현함수를 직접사용하는 인덱스테이블의 구조를 변경하지 않음CREATE TABLE user ( first_name VA..

Database/Mysql 2024.09.07

[Real MySQL] 8-8. 인덱스: 클러스터링 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. 클러스터링 인덱스프라이머리 키 값을 기준으로 정렬하여 저장하는 방식InnoDB 에서는 테이블 자체가 클러스터링 인덱스 구조로 관리됨 (InnoDB 전용 기능) B+Tree 자료구조레코드 저장 방식클러스터링 인덱스는 인덱스 알고리즘이 아니라 테이블의 저장 방식임테이블 자체가 프라이머리 키를 기준으로 정렬된 하나의 거대한 인덱스 구조로 관리됨프라이머리 키 값 기준 가까운 레코드들이 물리적으로 인접하여 저장됨 프라이머리 키를 기준으로 레코드가 묶여서 저장됨범위 검색이나 프라이머리 키 기반 조회가 매우 빠름 쓰기 성능 고려프라이머리 키 순서대로 입력하면 성능이 좋음키 값이 변경되면 물리적으로 리프 노드의 위치가 변할 수 있음 장점프라..

Database/Mysql 2024.09.07

[Real MySQL] 8-9. 인덱스: 유니크 인덱스

백은빈, 이성욱 님의 "Real MySQL" 책을 정리한 포스팅 입니다. 1. Unique Index유니크 제약테이블에 특정 컬럼의 값이 중복되지 않도록 보장하는 제약유니크 제약이 설정된 컬럼은 같은 값이 두 번 이상 저장되지 않도록 함인덱스와 밀접한 연관이 있음MySQL에서는 인덱스 없이 유니크 제약을 설정할 수 없음내부적으로 인덱스를 자동으로 생성하여 중복 값 체크를 수행함 Nullable해당 컬럼에 NULL 값이 허용된다는 의미NULL은 특정 값이 없다는 표시이며, 다른 값들과 다르게 취급됨 즉 NULL은 값 없음을 의미할 뿐, 다른 값들과는 비교할 수 없음NULL이 여러 번 있을 수 있음NULL은 특정 값이 아니기 때문에 같은 컬러멩서 두 개 이상의 NULL값이 허용될 수 있음 유니크 인덱스와 일..

Database/Mysql 2024.09.07

[Redis] 2. Understanding Data Types

cachingqueuingevent processing 1. Stringbyte sequence 저장문자열 매핑에 주로 사용됩니다. (key, value 모두 문자열) Data StructureTextSerialized objectBinary array(image, video, audio) Usagecachecountersbitwise operation 더보기SET bike:1 Deimos # key(namespace:id) - valueGET bike:1 # Deimos 2. JSONSyntax: JSONPath UsageAPI Response (cached) 더보기JSON.SET user:1001 $ '{"name": "John Doe", "email": "john.doe@example.com", ..

Database/Redis 2024.09.05

[NoSQL] NoSQL

1. NoSQL이란?Not Only SQL (SQL 지원)RDBMS보다 덜 제한적인 일관성 모델을 사용하는 데이터 매커니즘 유연한 데이터 모델스키마가 고정되어 있지 않음 대규모 분산 데이터클라우드 컴퓨팅 등장에 맞춰 생긴 기술데이터 공유 및 시스템 운용의 효율성 좋음 2. 장점성능latency: 빠르게 데이터 읽고 쓸 수 있음throughput: 다수의 요청을 효율적으로 처리할 수 있음 (수평적 확장) 단순성설계: 논리적, 물리적 설계 스킵clustering: 분산환경에서 사용하기 용이하도록 지원partitioning (horizontal): 분산환경에서 사용하기 용이하도록 지원 3. 종류key-value데이터: key-value 쌍빠른 데이터 접근 가능Redis, DynamoDB, Riak wide c..

Database 2024.09.05

[Spring][Data Access] 5-1. ORM Data Access: Introduction to ORM with Spring

1. Spring - ORM 통합ORM 프레임워크와의 통합을 통해 쉽게 코드 관리를 할 수 있게 해줌Spring의 IoC, AOP, Transaction Abstraction을 기반으로 활용 이점항목설명테스트 용이성Spring IoC로 인해 구현체를 쉽게 교체할 수 있음일관된 예외 처리JPA/Hibernate 예외 → Spring의 DataAccessException으로 변환됨자원 관리EntityManager, Session 등의 ORM 리소스를 Spring이 자동으로 lifecycle 관리통합된 트랜잭션 관리선언적 트랜잭션 경계 관리 지원 (@Transactional + AOP 기반)DAO 구현 간소화@Repository, JpaRepository 등으로 데이터 접근 계층을 쉽게 정의 가능  출처Spr..

Spring/Spring 2024.08.11

[Spring][Data Access] 2. DAO Support

Spring은 다양한 데이터 접근 기술을 일관된 방식으로 사용할 수 있도록 도와줍니다 1. Consistent Exception Hierarchy각 기술별로 발생하는 예외들을 Spring의 예외 계층인 DataAccessException으로 통일기술원래 예외변환된 예외 (Spring)JDBCSQLExceptionDataAccessException (예: CannotGetJdbcConnectionException, BadSqlGrammarException)JPA (Hibernate 포함)PersistenceExceptionDataAccessException (예: JpaSystemException, DataIntegrityViolationException)MyBatisPersistenceExceptionD..

Spring/Spring 2024.08.11

[Spring][Data Access] 1-7. Transaction Manager: Transaction-bound Events

1. Transaction-bound EventsEvent트랜잭션 경계 내에서 발생하는 이벤트트랜잭션 상태에 따라 분리된 작업 실행 (후처리 작업 또는 알림 처리 등)커스터마이징 가능 예제) OrderCreatedEvent더보기public class OrderCreatedEvent { private final Order order; public OrderCreatedEvent(Order order) { this.order = order; } public Order getOrder() { return order; }}예제) 이벤트 발행더보기@Service@RequiredArgsConstructorpublic class OrderService { pr..

Spring/Spring 2024.08.11

[Spring][Data Access] 1-4. Transaction Manager: Declarative Transaction Management - Understanding the Spring Framework’s Declarative Transaction Implementation (1)

1. Declarative Transaction Management with AOP Proxies@Transactional해당 에노테이션을 메소드 또는 클래스에 사용하여 적용하는 방식항목설명Propagation트랜잭션이 존재할 때 기존 트랜잭션을 사용할지, 새로 생성할지 결정Rollback Rules특정 예외 발생 시 트랜잭션을 롤백할지 여부 지정Read-only트랜잭션 내 작업이 읽기 전용임을 명시 → 성능 최적화 힌트Isolation동시에 실행되는 트랜잭션 간에 데이터 접근 충돌을 어떻게 처리할지 결정Timeout트랜잭션이 제한 시간 내에 완료되지 않으면 롤백No rollback특정 예외 발생 시에도 롤백하지 않도록 설정  예제더보기@Servicepublic class ProductService { ..

Spring/Spring 2024.08.11