분류 전체보기 610

[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

[Spring][Data Access] 1-4. Transaction Manager: Declarative Transaction Management

1. Declarative Transaction Management선언적으로 트랜잭션 정의 (Annotation, XML)항목설명특징비침투적 관리 (코드 내에서 직접 트랜잭션 제어 X)핵심 기술Spring AOP 사용 → 트랜잭션 시작/커밋/롤백 경계를 프록시로 자동 처리제어 확장성AOP의 Advice로 커스터마이징 가능 (예: 로깅, 타이밍 등 추가 가능)기본 롤백 규칙RuntimeException 및 Error 발생 시 자동 롤백Checked Exception 처리명시적으로 rollbackFor 속성 지정 필요 예제) annotation (rollback)더보기public class CustomCheckedException extends Exception { public CustomChecked..

Spring/Spring 2024.08.11

[Spring][Data Access] 1-3. Transaction Manager: Synchronizing Resources with Transactions

1. 트랜잭션 매니저와 리소스의 연관성트랜잭션 매니저는 특정 리소스와 연결되어 있음 (Database connection, Hibernate session)트랜잭션 매니저는 자신과 연결된 리소스를 사용해서 트랜잭션을 제어하고 자동으로 관리함 (생성 - 재사용 - 정리) 2. Transaction Synchronization트랜잭션 시작과 종료 시점에 여러 리소스들을 함께 연결되도록 하는 역할트랜잭션 컨텍스트에 묶어서 리소스들을 함께 연결시킴 동작 순서단계설명트랜잭션 시작ThreadLocal에 트랜잭션 컨텍스트 생성리소스들을 트랜잭션 컨텍스트에 연결트랜잭션 도중컨텍스트 내의 리소스를 재사용하며 작업 수행트랜잭션 종료리소스들을 커밋 또는 롤백ThreadLocal에서 컨텍스트 해제 예제) EntityManag..

Spring/Spring 2024.08.11