database 9

Redis 자료구조

Redis는 Key-value를 갖고 다양한 자료 구조를 갖는다. 이때 다양한 타입을 지원한다. redis 자료 구조에 대해 알아보자.레디스의 데이터 타입은 Strings, Bitmaps, Lists, Hashes, Sets, Sorted Sets, HyperLongLogs, Steams가 있다.각각 하나씩 확인해 보자. Strings일반적인 문자열로 최대 512MB이다. string으로 될 수 있는 바이너리 데이터, JPEG 이미지도 저장이 가능하며 단순 증감 연산에 용이하다. String-String 매핑을 사용해 연결되는 자료를 매핑할 수 있으며 HTML 매핑도 가능하다.단순한 key-value 캐싱 용도에 적합, INCR, DECR, APPEND 등 간단한 연산 지원세션 토큰, JWT 저장, 카운..

database 2025.06.22

DB의 특성과 장단점 정리

RDBMS Mysql핵심 특성- 정형 데이터 저장: 테이블 기반의 명확한 스키마 구조- SQL 지원: 표준 SQL을 이용한 복잡한 쿼리 및 트랜잭션 처리- ACID 트랜잭션: 원자성, 일관성, 격리성, 지속성을 보장- 인덱스 기반 접근 최적화: B-Tree, Hash 인덱스 등Query 모델 최적화 핵심 전략- 정규화 및 조인 설계: 중복 최소화 및 참조 무결성 확보- 복합 인덱스 설계: 쿼리 조건과 정렬 기준에 맞춘 인덱스 구성- Slow Query 로그 분석: 쿼리 튜닝을 통한 성능 향상- 파티셔닝/샤딩 고려: 대용량 테이블 분산 처리- 커버링 인덱스 활용: SELECT 성능 개선장점- 트랜잭션 안정성 보장- 복잡한 조인, 집계 쿼리 가능- 다양한 도구와 ORM 지원- MySQL InnoDB 엔진으로..

database 2025.05.25

Redis 캐시 직렬화, 역 직렬화 구현체

레디스에서 직렬화와 역 직렬화를 하는 부분에서 문제가 발생한 트러블 슈팅을 기반으로 직렬화 역 직렬화 구현체에 대해 자료를 준비하고자 한다. 트러블 슈팅데이터 캐싱 후 조회될 때 단일 객체나 컬렉션에 redis.serializer.SerializationException 발생하는 문제 발생Redis에 DTO 객체를 RedisSerializer.json() 또는 Jackson 기반으로 직렬화하여 캐싱할 때, 역직렬화 시 명확한 타입 정보가 없거나 중첩된 @class 필드가 잘못 처리되면 SerializationException이 발생할 수 있다. 특히 컬렉션을 캐싱하는 경우 @class 필드가 중첩되어 역직렬화에 실패할 수 있다. RedisSerializer.json() 사용 시 역직렬화를 위해 정확한 타..

database 2025.05.19

CDC (Change Data Capture) 변경 데이터 캡처

CDC란?Change Data Capture로 변경데이터 캡처라 부른다.데이터베이스에서 데이터의 변경 사항을 실시간으로 감지하고 외부 시스템에 전달하는 기술이다. 이벤트 기반 시스템, 마이크로서비스 간 동기화, 분석 파이프라인 구축 등에 사용된다. 방식으로는 쿼리기반, 트리거 기반, 로그 기반이 있다.쿼리 기반 - 주기적으로 updated_at 등을 조회해 변경 감지하고 간단하지만 부정확하고 누락 가능성과 부하가 발생하기도 한다.트리거 기반 - DB 트리거로 변경 로그 테이블에 기록하고 신뢰성은 높지만 DB에 종속적이다.로그 기반 - DB의 트랜잭션 로그(Write-Ahead Log)를 분석한다. 실시간, 안정성이 높지만 복잡도가 높고 로그에 대한 접근 권한이 필요하다. 사용하는 이유데이터 일관성 유지..

database 2025.05.11

PostgreSQL에 대해서

이번 포스팅에서는 PostgreSQL에 대해 알아보도록 하겠다.많은 DB들 중 PostgreSQL에 대해서 알아보는 이유는 이력서 넣던 도중 많이 보이는 RDBMS는 MSSQL, PostgreSQL, MYSQL이 가장 많이 보이고 NOSQL은 Redis, MongoDB이 많이 보인다. PostgreSQL란오픈 소스 객체 관계형 데이터베이스 시스템으로 ORDBMS이다.다른 관계형 데이터베이스 시스템과 달리 연산자, 복잡 자료형, 집계 함수, 자료형 변환자, 확장기능 등이 제공된다.다양한 DB 객체를 사용자가 임의로 만들 수 있는 기능을 제공함으로써 마치 새로운 하나의 프로그래밍 언어처럼 기능을 구현할 수 있다. 특징 및 기능 데이터 유형기본 요소 - 정수, 문자열, boolean 등구조화 - 날짜/시간,..

database 2024.06.25

springboot 트랜잭션 AOP와 트랜잭션 전파

이번 포스팅은 스프링부트 트랜잭션 AOP와 전파에 대해 알아보자. 트랜잭션 추상화, 선언적 트랜잭션 AOP에 대해선 트랜잭션 포스팅에서 한 번 다뤘었다. 우선 선언적 트랜잭션의 적용과 적용되지 않는 것을 보자. @Slf4j @SpringBootTest public class TxBasicTest { @Autowired TxService txService; @Test void proxy() { log.info("proxy class={}", txService.getClass()); } @Test void txTest() { txService.tx(); } @TestConfiguration static class TxConfig { @Bean TxService txService() { return new T..

database 2024.04.21

데이터베이스 데이터 접근 기술

자바에서 사용하는 데이터베이스 접근 기술로는 jdbctemplate, mybatis, jpa, 스프링데이터 jpa, querydsl 등이 있다. 이번 포스팅에서 다룰 내용은 jdbctemplate, mybatis이다. jpa 부분은 다른 카테고리에서 자세하게 다룰 예정이다. jdbctemplate에 대해 알아보자. JdbcTemplate은 spring-jdbc 라이브러리에 포함되어 있는데, 이 라이브러리는 스프링으로 JDBC를 사용할 때 기본으로 사용되는 라이브러리이다. 그리고 별도의 복잡한 설정 없이 바로 사용할 수 있다. 템플릿 콜백 패턴을 사용해서 직접 jdbc를 직접 사용할 때 발생하는 반복 작업을 대신 처리해준다. sql을 작성하고 전달할 파라미터를 정의하고 응답 값을 매핑하면 된다. 단점으로는..

database 2024.04.20

Transaction에 대해서

이번 포스팅에선 트랜잭션 대해 다루도록하겠다. 트랜잭션 직역하면 거래라는 뜻인데 데이터베이스에서 트랜잭션 하나의 거래를 안전하게 처리하도록 보장해주는 것을 뜻한다. 만약 내가 A라는 책이 10권 있는데 1권을 사면 A라는 책은 9권으로 수량이 줄어들어야 한다. 만약 내가 구매에는 성공했지만 남아있는 책이 9으로 줄어들지 않는다면 문제가 발생하게 된다. 이 문제를 트랜잭션을 사용하면 구매와 수량이 줄어드는 것이 둘 다 성공해야 저장하고 중간에 하나라도 실패하면 직전의 상태로 돌아갈 수 있다. 이것을 보장해주는 것이 트랜잭션이다. 트랜잭션 모든 작업이 성공해 데이터베이스에 정상 반영하는 것을 Commit, 커밋 작업 중 하나라도 실패하면 이전으로 되돌리는 것을 Rollback, 롤백이라 한다. 트랜잭션은 A..

database 2024.04.19

데이터 베이스와 JDBC, ORM

이번 포스팅에서는 DB와 DB기술에 대해 간략히, ORM에 대해 알아보자. 데이터베이스란? 간단하게 데이터를 효율적으로 보관하고 꺼내볼 수 있는 곳이다. 데이터를 안전하게 사용하고, 관리하게 해준다. 통합된 데이터, 저장된 데이터, 운영 데이터, 공용 데이터로 정의할 수 있다. 데이터베이스 관리자 - DBMS 데이터베이스를 관리하기 위한 소프트웨어를 DBMS(DateBase Management System)라고 한다. 데이터베이스는 많은 사람이 공유할 수 있어야 하므로 동시 접근을 할 수 있어야 한다. dbms는 요구사항을 만족하며 효율적으로 데이터베이스를 관리하고 운영한다. dbms는 관리 특징에 따라 관계형, 객체-관계형, 도큐먼트형, 비관계형 등으로 분류한다. 가장 많이 사용하는 dbms는 관계형이..

database 2024.04.18
728x90