2023/10/10 3

데이터베이스의 정규화와 역정규화

데이터베이스의 정규화와 역정규화 데이터베이스의 정규화 데이터베이스의 정규화는 데이터베이스 설계 과정에서 중요한 단계 중 하나입니다. 정규화의 주 목적은 데이터 중복을 최소화하고 데이터 구조를 효율적으로 만드는 것입니다. 이를 통해 데이터베이스에서 발생할 수 있는 여러 문제점을 미리 예방합니다. 정규화의 목적 데이터 중복 제거 데이터 무결성 유지 삽입, 삭제, 수정 시 발생할 수 있는 문제점(삽입 이상, 삭제 이상, 갱신 이상 등) 방지 쿼리 성능 최적화 정규화 과정 제1정규형(1NF): 모든 컬럼이 원자적(atomic) 값만을 갖도록 합니다. 제2정규형(2NF): 제1정규형을 만족하면서 부분 함수 종속성(partial functional dependency)을 제거합니다. 제3정규형(3NF): 제2정규형..

낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock)

낙관적 락(Optimistic Lock)과 비관적 락(Pessimistic Lock) 낙관적 락 낙관적 락(Optimistic Locking)은 동시성 제어를 위한 프로그래밍 기술 중 하나입니다. 이 기술은 트랜잭션 충돌이 자주 발생하지 않을 것이라고 "낙관적으로" 가정하고, 레코드를 락하지 않고 일단 작업을 수행합니다. 작업이 끝난 후에 실제로 저장을 시도할 때 충돌 여부를 검사하게 됩니다. 작동 원리 읽기 단계: 데이터를 읽을 때, 특정 버전 번호나 타임스탬프를 함께 읽어옵니다. 수정 단계: 데이터를 수정하지만, 아직 데이터베이스에는 반영하지 않습니다. 쓰기 단계: 수정을 데이터베이스에 반영하기 전에 버전 번호나 타임스탬프를 체크합니다. 만약 이 값이 여전히 같다면, 아무도 해당 데이터를 수정하지 않..

TreeMap과 LinkedHashMap의 차이와 사용예제

TreeMap과 LinkedHashMap의 차이와 사용예제 TreeMap은 자바의 java.util 패키지에서 제공하는 맵(map) 기반의 자료구조입니다. 이것은 레드-블랙 트리(Red-Black Tree) 알고리즘을 기반으로 하며, 키-값 쌍을 정렬된 상태로 저장합니다. 이 정렬은 키에 따라 이루어지며, 키가 Comparable 인터페이스를 구현한 경우에는 그에 따라, 또는 별도의 Comparator 객체를 제공하여 정렬을 수행할 수 있습니다. 주요 특징 정렬: 키를 기준으로 오름차순 또는 내림차순으로 정렬합니다. 로그 시간 복잡도: 대부분의 연산 (add, remove, contains, get 등)에 O(log n)의 시간 복잡도를 가집니다. 키 중복 불가: 같은 키를 가진 여러 개의 엔트리를 저장..