본문 바로가기
728x90
반응형

전체 글77

cursor와 paging 알아보기 서론 Spring Batch에서 사용되는 cursor와 paging 코드를 확인해보면서 동작 방식과 특징에 대해 알아보고자 한다. 그리고, 대용량 데이터를 처리할 때 cursor 사용이 효율적이라고 고려되는 이유를 알고자 한다. Cursor와 Paging cursor 위 그림은 cursor의 동작방식이라 할 수 있다. fetch 요청을 통해 데이터를 fetchSize만큼 가져온 후, currentItemCount를 하나씩 증가시키면서 가져온 데이터를 다 반환할 때까지 순회한다. 그리고 cursor를 증가시켜 위를 반복한다. 실제로 코드를 통해 살펴보자. 그리고 Hive 쿼리를 사용하고 있기에 ResultSet은 HiveQueryResultSet을, JpaCursorItemReader는 data를 한번에 .. 2024. 4. 1.
객체지향 5원칙 - SOLID 서론 객체지향에는 5원칙이 있는데, Single Responsibility, Open Close, Liscov Substitution, Interface Segregation, Dependency Inversion(SOLID)이다. 코드를 통해 해당 원칙을 살펴보도록 하자. 단일 책임 원칙(Single Responsibility Principle) 클래스는 단 하나의 책임을 가져야 하며 어떤 클래스를 변경해야하는 이유는 오직 하나뿐이어야 한다. 속성, 메서드, 패키지, 모듈, 컴포넌트, 프레임워크 등에 적용 보안 클래스에서는 두 기능을 모두 가지고 있어 단일 책임 원칙을 위반하고 있다. // 단일 책임 원칙을 지키지 않았을 때 public class Authentication { private Strin.. 2024. 4. 1.
1. 리액티브 시스템과 리액티브 프로그래밍 & 2. 리액티브 스트림즈 개요 스프링으로 시작하는 리액티브 프로그래밍 책을 보고 정리하고자 해당 포스팅을 작성하고 있다.목차 별로 중요하다고 생각되는 부분, 개발할 때 기억해 두면 좋을 부분을 추려보고자 한다. 리액티브 시스템이란? 비동기 메시지 기반 통신으로, 클라이언트 요청에 즉각적으로 응답하여 지연 시간을 최소화하는 시스템. 설계원칙 빠른 응답성을 바탕으로 유지보수와 확장이 용이한 시스템 Means 주요 통신 수단으로 무엇을 사용할건지 표현 비동기 메시지 기반의 통신을 통해 구성요소 간의 느슨한 결합, 격리성, 위치 투명성 보장해야 함. 스레드가 요청에 대해 1:1로 매핑되지 않는다. Form 비동기 메시지 통신 기반 하에 탄력성과 회복성을 가지는 시스템이어야 함. 탄력성: 시스템 자원을 적절히 추가하거나 감소시켜 작업량의.. 2024. 3. 31.
[Kafka] 2. 토픽과 파티션 목적 아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자, 그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다. 이전 포스팅 참조 2024.03.31 - [Message Queue] - [kafka] 1. kafka의 역사, 장점 [kafka] 1. kafka의 역사, 장점 목적 아파치 카프카 애플리케이션 프로그래밍, 카프카 핵심 가이드, 카프카 데이터 플랫폼의 최강자, 그리고 카프카 관련 포스팅을 보고 정리했던 노트를 공유하기 위해 기록한다. 카프카를 사 daewoony.tistory.com 토픽 카프카에서 데이터를 구분하기 위해 사용하는 논리적인 단위 1개 이상의 파티션을 소유함. 파티션 프로듀서가 보낸 데이터(레코드)들이 저장되는 물리적인.. 2024. 3. 31.
728x90
반응형