728x90

전체 글 199

Spring Batch

Spring Batch 대량의 데이터를 처리하는데 사용되는 오픈 소스 배치 프레임워크입니다. Spring 프레임워크의 일부로 개발되었으며, 데이터베이스, 파일 등과 같은 다양한 소스로부터 대량의 데이터를 읽어 처리하고, 가공한 데이터를 다시 저장하거나 출력하는 등의 작업을 수행하는데 주로 사용됩니다. 확장성과 성능 대량의 데이터를 효율적으로 처리하기 위한 다양한 기능과 패턴을 제공하여 성능과 확장성을 보장 Chunk 기반 처리 방식을 통해 대용량 데이터 처리를 안정적으로 수행 가능 트랜잭션 관리 작업의 성공 또는 실패 시 롤백과 재시작을 지원하여 데이터의 무결성과 안정성을 보장 Chunk 지향 처리 대용량 데이터를 처리할 때 데이터를 묶어서(Chunk) 트랜잭션 단위로 처리하므로 OutOfMemoryEr..

BackEnd/Spring Boot 2023.07.19

검색이 빠른 자료구조

O(1) > O(log n) > O (n) > O(n log n) > O(n^2) > O(n^3) > O(2^n) > O(n!) HashMap 단건 검색 시간 복잡도 : O(1) 범위 탐색 시간 복잡도 : O(N) 전방 일치 탐색 불가 ex) like 'AB%' List 정렬되지 않은 리스트 탐색 시간 복잡도 : O(N) 정렬된 리스트 탐색 시간 복잡도 : O(logN) 정렬 되지 않은 리스트 정렬 시간 복잡도 : O(N) ~ O(N * logN) 삽입/삭제 비용이 매우 높다 Tree 트리 높이에 따라 시간 복잡도 결정 트리의 높이를 최소화 하는 것이 중요! 한쪽으로 노드가 치우치지 않도록 균형을 잡아 주는 트리 사용 ex) Red-Black Tree, B+Tree B+Tree 삽입/삭제시 항상 균형을 ..

Language/Java 2023.07.12

데드락

프로세스나 스레드 간에 발생하는 상호 대기 현상으로, 작업의 완료를 기다리며 시스템이 정체되는 현상입니다. 증상: 작업이 진행되지 않고 시스템이 정체되는 상태가 됩니다. 프로세스 또는 스레드 간의 상호작용이 멈추고, 상호 대기 상태가 되는 것을 확인할 수 있습니다. 원인 데드락은 다음과 같은 네 가지 조건이 동시에 성립할 때 발생합니다: 상호 배제(Mutual Exclusion) 자원은 하나의 프로세스 또는 스레드에 의해 동시에 점유될 수 없습니다. 점유와 대기(Hold and Wait) 이미 점유한 자원을 기다리는 상황이 발생합니다. 비선점(Non-preemption) 다른 프로세스 또는 스레드가 이미 점유한 자원을 강제로 빼앗을 수 없습니다. 순환 대기(Circular Wait) 여러 프로세스 또는 ..

DB 2023.07.05

로드밸런스 알고리즘 종류

라운드 로빈(Round Robin) 알고리즘 특징 트래픽을 순서대로 서버에 분배합니다. 간단하고 공평한 방식으로 동작합니다. 장점 각 서버가 동일한 부하를 처리하므로, 균등한 부하 분산이 이루어집니다. 구현이 간단하고 오버헤드가 낮습니다. 단점 서버의 성능 차이가 크면 효과가 떨어질 수 있습니다. 사용 예시 소규모의 서버 그룹이 균등한 처리 능력을 가지고 있을 때 사용합니다. 가중 라운드 로빈(Weighted Round Robin) 알고리즘 특징 각 서버에 가중치를 부여하여 부하를 분배합니다. 서버의 성능을 반영하여 부하를 분산시킵니다. 장점 서버의 성능 차이를 고려하여 부하를 분산시킬 수 있습니다. 성능이 다른 서버 그룹을 운영할 때 효과적입니다. 단점 가중치 설정에 주의가 필요하며, 잘못 설정하면 부..

AWS 2023.07.05

Interceptor, Filter 차이

Filter Interceptor 개념 Servlet 스펙에 정의된 개념 Spring MVC에서 제공하는 개념 동작 위치 Servlet 컨테이너 레벨 Spring MVC 인터셉터 체인 내부 적용 범위 모든 요청과 응답에 적용 특정 컨트롤러 메서드 호출 전후 다중 적용 가능 여부 가능 가능 (순차적으로 적용) 주요 사용 목적 요청과 응답 수정, 변환 요청 전처리, 후처리 작업 예시 요청 인코딩 변경, 헤더 추가 인증, 권한 검사, 로깅, 캐싱 등 의존성 Servlet 스펙에 의존 Spring MVC에 의존 사용 시점 Spring MVC 이전의 기술을 사용하는 경우 Spring MVC를 사용하는 경우

BackEnd/Spring Boot 2023.07.04

MySql DB 엔진

InnoDB 엔진 특징: 트랜잭션 지원 및 ACID 속성 데이터 무결성 보장 멀티버전 동시성 제어 (MVCC) 장점: 안정성과 복구 기능이 우수 동시성 처리가 잘 되어 많은 수의 동시 사용자 처리 가능 외래 키 제약 조건 지원 단점: 일부 쓰기 작업에 비해 속도가 느릴 수 있음 일부 디스크 공간을 사용하여 데이터 저장에 용량 관리 필요 사용 예제 온라인 트랜잭션 처리 실시간 애플리케이션 데이터 일관성이 중요한 시스템 MyISAM 엔진: 특징: 단순하고 빠른 읽기 작업에 최적화됨 전체 텍스트 검색(Full-Text Search) 기능 제공 장점: 높은 읽기 성능을 제공 작은 크기의 인덱스를 사용하여 빠른 검색이 가능 단점: 트랜잭션 처리와 ACID 속성을 지원하지 않음 데이터 손실 복구 어려움 사용 예제 ..

DB 2023.07.03

버퍼링(Buffering)과 스트림(Stream)

버퍼링(Buffering)과 스트림(Stream)은 데이터를 효율적으로 처리하기 위한 개념입니다. 버퍼링(Buffering) 효율성 메모리 영역인 버퍼(Buffer)는 데이터를 일시적으로 저장하는 임시 공간입니다. 버퍼는 데이터를 한 곳에서 다른 곳으로 전송하는 동안에 사용되며, 데이터를 효율적으로 처리하기 위한 중간 저장소 역할을 합니다. 버퍼의 주요 목적은 데이터 전송의 효율성을 높이는 것입니다. 입출력 작업이나 네트워크 통신 등의 데이터 전송은 데이터를 작은 단위로 나누어 전송하는 것이 일반적입니다. 이렇게 작은 단위로 나누어 전송하면, 데이터를 한 번에 읽거나 쓰는 것보다 성능이 향상될 수 있습니다. 버퍼를 사용하면 작은 데이터 단위를 모아서 한 번에 처리할 수 있습니다. 데이터를 일시적으로 버퍼..

Language/Java 2023.07.01

DB 격리 수준(ACID > Isolation)

ACID Atomicity (원자성) 트랜잭션은 원자적(Atomic) 단위로 처리되어야 합니다. 이는 트랜잭션 내의 모든 작업이 전부 성공하거나 전부 실패하는 것을 의미합니다. 트랜잭션은 모두 실행되거나 전혀 실행되지 않아야 하며, 중간 단계의 부분적인 성공 또는 실패가 허용되지 않습니다. Consistency (일관성) 트랜잭션이 실행 전과 실행 후의 데이터베이스 상태를 일관성 있게 유지해야 합니다. 트랜잭션은 미리 정의된 규칙과 제약조건을 준수하여 데이터베이스의 무결성을 유지해야 합니다. Isolation (격리성) 동시에 여러 개의 트랜잭션이 실행될 때, 각각의 트랜잭션은 다른 트랜잭션으로부터 독립되어야 합니다. 격리성은 한 트랜잭션이 다른 트랜잭션에 의해 영향을 받지 않도록 하는 것을 의미합니다...

DB 2023.06.15

JPA 기본 log사용하기

JPA 쿼리 로그 출력 설정하기 JPA를 사용할 때, 개발 중에 쿼리 로그를 확인하면서 디버깅하는 것은 매우 유용한 기능입니다. MyBatis와는 달리 JPA는 기본적으로 쿼리 로그에 파라미터를 대체하여 출력하지 않습니다. 그러나 몇 가지 설정을 통해 보기 편하게 로그를 구성할 수 있습니다. 이번 글에서는 완벽하게 구성된 JPA 쿼리 로그를 확인하는 방법을 알아보겠습니다. 완성된 Query 확인 하는법 Show-JPA-Query-Log application.yml 파일 수정하기 아래와 같이 application.yml 파일을 수정하여 JPA 쿼리 로그 출력을 설정할 수 있습니다: 좀더 다양한 설정을 테스트 해보고 더 최상의 환경설정이 있는지 연구해 보겠습니다. spring: jpa: show-sql: t..

BackEnd/Spring Boot 2023.06.11
728x90