yunki Kim Blog

「Do What You Love」

트랜잭션(Transaction)

posting: 2022-05-01, update: 2023-10-06 1. 트랜잭션 개념 트랜잭션은 다양한 데이터 항목에 접근하고 갱신하는 프로그램 수행의 단위이다. 트랜잭션은 여러 연산으로 구성되어 있지만 사용자에게는 하나의 나눌 수 없는 단위로 보여야 한다. 여기서 ”하나의 나눌 수 없는 단위“라는 말이 매우 중요하다. 이것으로부터 트랜잭션...

가비지 수집 기초

자바 가비지 수집의 요체는 시스템에 있는 모든 객체의 수명을 정확히 몰라도 런타임이 대신 객체를 추적하며 쓸모없는 객체를 알아서 제거하는 것이다. 모든 가비지 수집 구현체는 다음과 같은 원칙을 지켜야 한다. 알고리즘은 반드시 모든 가비지를 수집해야 한다. 살아 있는 객체는 절대로 수집해선 안된다. segmentation ...

열 지향 저장소(column-oriented storage)

데이터베이스는 통상적으로 한 레코드에 존재하는 모든 속성과 데이터를 하나의 레코드로 저장하고, 이 레코드들을 파일에 저장한다. 이러한 방식을 행 기반 저장소(row-oriented storage) 리고 한다. 이와 반대로 열 지향 저장소는 속성을 기준으로 그 속성에 해당하는 모든 연속된 값들을 함께 저장한다. 가장 간단한 열 지향 저장소는 속성 별로 ...

분산시스템

값이 싸고 크기가 작은 컴퓨터를 네트워크로 묶어 대형 컴퓨터 같은 능력을 가진 시스템을 만드는 것을 분산 시스템이라 한다. 분산 시스템 내의 컴퓨터는 각자 작업을 처리하고 그 내용이나 결과를 서로 공유한다. 분산 시스템 장점은 다음과 같다. 네트워크로 연결된 기기가 여러 자원을 공유할 수 있다. load balancing을 통해 여러 기기가 ...

공연 정보 수집 자동화하기

자동화한 부분 프로젝트를 하면서 공연 정보를 다음과 같이 보여주어야 했습니다. 그런데 공연 정보들을 모아주는 기능이 없다 보니, 팀원들이 인터넷에서 공연 정보를 찾고 등록하는 일을 모두 수동으로 진행해야 했습니다. 때문에 공연 정보를 업데이트하기 위해선 다음과 같은 절차를 따라야 했습니다. 자신이 맡은 공연 카테고리(연극, 전시 등)와 공연이 ...

DB B+-tree indexing

인덱스 순차 파일 구조는 파일이 커질수록 인덱스를 찾아서 그 데이터를 연속으로 스캔하는 성능이 감소한다는 것이다. B+-tree index 구조는 데이터 삽입, 삭제에 상관없이 성능을 유지하는 인덱스 구조 중 가장 널리 사용된다. B+-tree index는 root에서 leaf node까지 모든 경로의 길이가 같은 balanced tree이다. 이 때...

DB indexing

인덱스는 데이터베이스에서 효율적인 질의 처리를 위한 중요한 요소다. 인덱스가 없다면 질의에 필요한 몇 개의 레코드를 찾기 위해 테이블 전체를 스캔해야 한다. 인덱스는 기본적으로 두 가지 종류가 존재한다. 순서 인덱스(ordered index): 값에 대해 정렬된 순서로 되어 있다. 해시 인덱스(hash index): 버켓의 범위 안에서 값이 ...

spring batch JobRepository

스프링 배치는 배치 수행과 관련된 수치 데이터와 잡의 상태를 JobRepository를 이용해 유지 관리한다. 그리고 잡이 재시작 또는 아이템 재처리 시 어떤 동작을 수행할지 이 정보를 사용해 결정한다. JobRepository는 배치와 관련된 메타데이터를 저장하는 데이터 저장소이다. 이 저장소는 인메모리 저장소와 관계형 데이터베이스 형태로 제공된다....

DB 데이터 저장 장치 구조

파일 구성 데이터 베이스는 기본적으로 운영체제가 관리하는 여러 파일로서 존재하게 된다. 이 파일들은 디스크에 저장된다. 파일은 일련의 레코드로서 논리적으로 구성된다. 하나의 파일은 블록이라는 고정길이 저장 단위로 논리적으로 분할된다. 각 블록의 기본 크기는 4KB ~ 8KB이다. 하나의 블록은 다시 여러 개의 레코드를 저장한다. 단일 블록은 각 레코드...

spring batch 개념 소개

배치 애플리케이션이란? 배치 애플리케이션이란 사람의 개입 없이 자동으로 대량의 데이터를 처리하는 애플리케이션을 의미합니다. 따라서 에러 발생 시 사람이 판단해 복구할 수 없기 때문에 배치 애플리케이션은 신뢰성 있고 견고해야 합니다. 또 한, 처리할 데이터가 많을 처리 완료까지 더 많은 시간이 필요합니다. 만약 배치 애플리케이션을 제한된 시간 내에 끝내...