-
[DB] SQLD_1Computer Science 2023. 5. 21. 23:27728x90
# 카테시안 곱
From 절에 2개 이상의 Table이 있을 때 두 테이블 사이의 유효 Join 조건을 적지 않았을 시에 해당 테이블에 대한 모든 데이터를 결합하여 테이블에 존재하는 행 갯수를 곱한 만큼의 결과값이 반환되는 것
# 파티션 기법
데이터베이스에서 파티션을 사용하여 테이블을 분할 하는 것. 파티션을 사용하면 논리적으로는 하나의 테이블이지만 여러 개의 데이터 파일에 분산되어 저장한다.
PARTITION EXPLANATION Range Partition 데이터 값의 범위를 기준으로 파티션 수행 List Partition 특정한 값을 지정하여 파티션을 수행 Hash Partition 해시 함수를 적용하여 파티션을 수행 Composite Partition 범위와 해시를 복합적으로 사용하여 파티션을 수행 - 데이터 조회 시에 액세스 범위가 줄어들기 때문에 성능 향상
- 데이터가 분할되어 있기에 I/O 성능 향상
- 각 파티션을 독립적으로 백업 및 복구 가능
+@) Shard 기법
동일한 스키마를 가지고 있는 여러 대의 데이터베이스 서버들에 데이터를 작은 단위로 나누어 분산 저장하는 기법으로, 이때 작은 단위를 shard라고 한다.
- 수평 파티셔닝의 일종이나, 파티셔닝은 모든 데이터를 동일 컴퓨터에 저장하지만 샤딩은 데이터를 서로 다른 컴퓨터에 분산한다. 이는 쿼리 성능 향상과 함께 부하가 분산되는 효과까지 얻을 수 있다는 것이 장점이다. 샤딩은 물리적으로 분산된 환경에서 사용되는 기법으로 데이터베이스 차원이 아닌 애플리케이션 레벨에서 구현하는 것이 일반적이다.
그러나 데이터를 물리적으로 독립된 데이터베이스에 각각 분할하여 저장하므로, 여러 샤드에 걸친 데이터를 조인하는 것이 어렵다. 또한 한 데이터베이스에 집중적으로 데이터가 몰리면 Hotspot이 되어 성능이 저하되므로, 데이터를 여러 샤드로 고르게 분배하는 것이 중요하다.
SHARD EXPLANATION Hash Sharding 총 데이터베이스 수가 정해져있을 때 유용. 개수 변경 시 해시 함수 변경 및 데이터의 재정렬 불가피
# Modular Shard : PK 값의 모듈러 연산 결과를 통해 샤드 결정Range Sharding - PK 값을 범위로 지정하여 샤드를 지정하는 방식
- Hash 대비 데이터베이스 증설 작업에 큰 리소스가 소요되지 않음# 트랜잭션
트랜잭션은 데이터베이스의 작업을 처리하는 단위
트랜잭션 특성 설명 Atomicity, 원자성 - 트랜잭션은 데이터베이스 연산의 전부가 실행되거나 전혀 실행되지 않아야 한다
- 트랜잭션의 처리가 완전히 끝나지 않았을 경우 실행되지 않은 상태와 같아야 한다Consistency, 일관성 - 트랜잭션 실행 결과로 데이터베이스의 상태가 모순되지 않아야 한다
- 트랜잭션 실행 후에도 일관성이 유지되어야 한다Isolation, 고립성 - 트랜잭션 실행 중에 생성하는 연산의 중간결과는 다른 트랜잭션이 접근할 수 없다
- 즉, 부분적인 실행 결과를 다른 트랜잭션이 볼 수 없다Durability, 영속성 트랜잭션이 그 실행을 성공적으로 완료하면 그 결과는 영구적 보장이 되어야 한다 728x90'Computer Science' 카테고리의 다른 글
[API] 공공데이터 API 접속하기 (0) 2023.06.02 [DB]SQLD_2 (0) 2023.05.25 [OS] vi 편집기 (0) 2023.05.09 [OS] Semaphore에 대해 (0) 2023.04.27 [OS] Process Synchronization (0) 2023.04.27