데이터베이스 샤딩과 파티셔닝
1. 개요 데이터베이스 규모가 커질수록 성능과 확장성 문제가 발생합니다. 이러한 문제를 해결하기 위한 핵심 전략으로 샤딩(Sharding)과 파티셔닝(Partitioning)이 있습니다. 두 기법 모두 대용량 데이터를 관리하는 방법이지만, 구현 방식과 목적에 차이가 있습니다. 사진출처 2. 파티셔닝(Partitioning)이란? 파티셔닝은...
1. 개요 데이터베이스 규모가 커질수록 성능과 확장성 문제가 발생합니다. 이러한 문제를 해결하기 위한 핵심 전략으로 샤딩(Sharding)과 파티셔닝(Partitioning)이 있습니다. 두 기법 모두 대용량 데이터를 관리하는 방법이지만, 구현 방식과 목적에 차이가 있습니다. 사진출처 2. 파티셔닝(Partitioning)이란? 파티셔닝은...
인덱스(index)란? 인덱스는 책의 색인과 유사한 개념으로, 데이터베이스에서 특정 데이터를 빠르게 찾기 위한 자료구조입니다. 인덱스가 없다면 데이터베이스는 테이블의 모든 행을 순차적으로 검색해야 하는데(풀 테이블 스캔), 이는 대용량 데이터에서 매우 비효율적입니다. 인덱스의 작동 원리 인덱스는 주로 B-Tree, B+Tree 등의 자료구조를...
🔄 데이터베이스 트랜잭션이란? 트랜잭션은 데이터베이스의 상태를 변화시키는 하나의 논리적 작업 단위입니다. 트랜잭션은 여러 개의 연산을 포함할 수 있으며, 이 연산들은 모두 성공적으로 실행되거나 전혀 실행되지 않아야 합니다. 트랜잭션의 주요 특징 원자성(Atomicity): 트랜잭션 내의 모든 연산은 전부 실행되거나 전혀 실행되지 않아야 합니...
프로세스(Process)란? 프로세스는 실행 중인 프로그램의 인스턴스입니다. 운영체제로부터 자원을 할당받아 독립적으로 실행되는 작업 단위로, 컴퓨터 시스템의 기본적인 실행 단위로 간주됩니다. 프로세스의 주요 특징 독립적인 메모리 공간: 각 프로세스는 자신만의 메모리 공간(코드, 데이터, 힙, 스택)을 가지며, 다른 프로세스와 격리됩니다. ...
동기(Synchronous)와 비동기(Asynchronous) 동기와 비동기를 이해하면 작업 처리 방식을 효율적으로 설계할 수 있습니다. 이 두 가지는 프로그래밍에서 작업 흐름을 결정짓는 핵심 개념으로, 특히 I/O 작업(입출력), 네트워크 통신, 사용자 인터페이스(UI) 같은 영역에서 중요한 역할을 합니다. 단순히 “작업을 기다리느냐, 안 기다리느...
안녕하세요! 이번 포스트에서는 Spring 프레임워크와 오픈소스 프로젝트 JabRef에서 직접 경험한 다국어 웹 애플리케이션 개발의 핵심 기술인 국제화(i18n: Internationalization) 설정과 구현 방법을 자세히 알아보겠습니다. 특히 최근 제가 참여한 JabRef PR #12582를 통해 배운 실전 경험을 공유합니다. 1. 국제화...
📌문제 링크 https://www.acmicpc.net/problem/16236 📌문제 설명 이 문제는 BFS를 사용해 상어가 가장 가까운 물고기를 찾아 먹으며 성장하는 과정을 시뮬레이션하는 문제입니다. 상어는 자신보다 작은 물고기만 먹을 수 있으며, 먹은 물고기의 수가 상어의 크기와 같아지면 크기가 증가합니다. 이때, 가장 가까운 물고...
📌문제 링크 https://www.acmicpc.net/problem/2003 📌문제 설명 주어진 숫자 배열에서 연속된 부분 배열의 합이 M이 되는 경우의 수를 구하는 문제입니다. 해시맵을 이용하여 현재까지의 합을 저장하고, 이를 통해 효율적으로 경우의 수를 계산합니다. 📌코드 import java.io.BufferedReader...
📌문제 링크 https://www.acmicpc.net/problem/15658 📌문제 설명 주어진 숫자들과 연산자들을 이용하여 만들 수 있는 최대값과 최소값을 구하는 문제입니다. 백트래킹을 이용하여 모든 가능한 경우를 탐색합니다. 각 연산자의 개수를 제한하여 조건을 만족하는 결과를 도출합니다. 📌코드 import java.io....
📌문제 링크 https://www.acmicpc.net/problem/16198 📌문제 설명 주어진 배열에서 두 개의 가장자리를 제외한 중간 요소를 선택하여 제거하면서 최대 에너지를 모으는 문제를 해결합니다. input() 함수는 배열의 크기와 요소들을 입력받아 리스트에 저장하고, solve() 함수는 백트래킹을 시작하여 최대 에너지를 ...