업데이트:

태그: ,

카테고리:

REF: fundamentals of database systems 7th edition

DDB Concept

  • Centralized Database가 network로 연결된 예시
  • 스크린샷 2022-10-17 오후 1 42 35


  • 각 site마다 DB가 존재하고, 각 site가 network로 연결된 예시
  • 스크린샷 2022-10-17 오후 1 42 43

DDB 구성요소

  1. ⭐️computer network 통한 Database node 연결
    • site, node로 불리는 여러대의 컴퓨터가 network로 연결되어있다.
  2. 연결된 DB간 ⭐️상관 관계성
    • 연결된 DB에 저장된 정보는 서로 논리적으로 관련있어야한다.
  3. 연결된 노드간 ⭐️비동일성
    • 각 node의 하드웨어, 소프트웨어, 데이터가 모두 같을 필요는 없다.


목적

  • 중앙화 DBMS의 외형을 지키면서 아래와같은 장점을 가진다.
  1. ⭐️Accessibility
    • local view와 global view가 각 site마다 존재하는 장점.
  2. ⭐️sharability
    • 물리적으로 떨어진 분산 DB를 모든 site가 공유
  3. ⭐️performance
    • data를 필요로하는 곳에 가까이 둔다.
    • 분산된 DB는 쿼리를 작게 나누어 작은 크기의 transaction으로 변환되고,
    • 각 site에 쿼리 처리 요청을 보내면 parallel하게 수행되기에 더 좋은 성능을 가지게된다.


장점

  1. low-level 구현 이슈와 high-level semantic의 ⭐️분리.
    • global user는 Centralized DB를 보는 것같다.
  2. data-independence의 확장
    • external view 위에 local view가 하나 더 있음



Fragmentation, Replication

  • 예시 데이터
  • 스크린샷 2022-10-17 오후 3 41 20

Fragmentation

  • DDB를 사용할때는 데이터베이스의 어떤 부분을 어느 site에 둘 지에 대한 의사결정을 해야한다.
  • 이 portion을 결정할때, 가장 작은 logical unit을 식별해야하는데 relation을 더 잘게 쪼개어 식별한다.
  • 이렇게 relation을 쪼개는 방식에 대해 설명하고자한다.


⭐️Horizontal Fragmentation

  • Horizontal, 수평 분할방식은 relation의 ⭐️tuple들의 부분집합으로 나누는 방식을 의미한다.
  • 각각의 subset은 ⭐️Logical한 의미를 담고 있다.
  • 이렇게 나누어진 fragments는 DDBMS의 각각의 node(site)에 할당될 수 있다.
  • 스크린샷 2022-10-17 오후 3 46 59


⭐️Vertical Fragmentation

  • Vertical, 수직 분할방식은 relation의 ⭐️column을 기준으로 나누는 방식을 의미한다.
  • 각 site가 relation의 모든 attribute가 필요하지 않을때, Vertical Fragmentation으로 나눌 수 있다.
  • 스크린샷 2022-10-17 오후 4 08 58


⭐️Hybrid Fragmentation

  • 위의 ⭐️Horizontal, Vertical Fragmentation을 합친 방법.
  • 실세계의 경우, 1가지 방법만 사용하기보다는 2가지 방법을 혼용함으로써 더욱 높은 성능을 기대할 수 있다.

  • 스크린샷 2022-10-17 오후 4 09 56



Replication

  • replication은 data의 availability를 향상시킨다.

fully replicated

  • 장점
    • 극단적인 예시로는, 분산 시스템에서 전체 DB를 모든 site에 복사⭐️fully replicated distributed database를 만드는 것.
    • 이때는 적어도 1개의 site가 작동되는 한, 시스템이 유지되므로 availability가 크게 향상된다.
    • 또한, global query는 각 site마다 fragmentation되어 나누어진 site에 local query화 되는데, 모든 site가 fully replicated되면 네트워크를 통해 query의 결과를 받을 필요가 없기때문에, local로만 처리되어 성능적으로 높은 이득을 가져갈 수 있다.


  • 단점
    • update가 느리다(전체 site에 대한 update를 수행해야하므로)
    • concurrency, recovery control 비용이 비싸진다.


no replication

  • 각 fragmentation이 site를 통틀어 1개만 존재하는 것.
  • 모든 fragment는 서로 상호배제적이며, nonredundant allocation이라고 불린다.


partial replication

  • fully replication과 no replication의 중간,
  • 몇몇 fragment는 replication을 하지만, 일부는 1개만 유지한다.
  • fragment를 어디에 위치시키고, 어디서 replicate할지 결정하는 프로세스를 data distribution이라고한다.
  • 이 프로세스는 해당 fragment가 어느 site에서 많이 쓰이는지에따라 위치시키고,
  • 얼마나 많은 site가 해당 fragment를 사용하는지에따라 replicate해 최적화한다.



DDBMS의 ISSUE들

⭐️Global Transaction

global transactions

  • 1개의 DB에서 모두 처리될 수 있는 트랜젝션은 Local Transaction으로 불린다.
  • 여러개의 DB에서 처리되어야 하는 (global)distributed transaction 을 위해서 global transaction manager라는 컴포넌트가 존재한다.
  • ⭐️복수의 site에 행해지는 DB operation의 실행을 조율한다.
  • global transaction manager의 기능은 application program에 인터페이스로 제공되는데,
    • BEGIN_TRANSACTION
    • READ_TRANSACTION
    • WRITE_TRANSACTION
    • END_TRANSACTION
    • COMMIT_TRANSACTION
    • ROLLBACK 이 있다.
  • COMMIT, ROLLBACK은 two-phase commit protocol을 사용한다.

  • transaction manager는 위 기능들이 수행되면 operation과 관련 정보를 병행성 제어기(concurrency controller)에 전달한다.
  • 이때부터, concurrency controller가 관련된 lock을 획득하고 해제하는 책임을 가지게된다.
  • transaction이 만약 이미 locked된 리소스에 접근하려하면 lock이 해제될때까지 블락된다.(semaphore생각하면된다.)
  • lock이 획득되면, operation은 runtime-processor에 전달되어 실제 operation이 수행된다.
  • operation의 수행이 종료되면 lock을 해제하고, operation의 결과를 업데이트한다.


⭐️Global Commit Control

  • 22.6장 참고.
  • DB의 트랜잭션은 ⭐️원자성을 지켜야한다. 원자성이란, 트랜잭션은 모두 성공하거나, 모두 실패해야한다는 특성이다.
    • 원자성이 지켜지지 않으면, 데이터베이스의 부분갱신으로 인해 데이터가 불일치하는 문제점이 발생한다.
  • 이러한 원자성을 지키기위해서, 2단계의 recovery mechanism을 가지는 것이 필수적이다.
  • global recovery manager(coordinator)는 유지해야하는 정보local recovery manager와 더불어 필요로되어진다.

Two-phase commit protocol

  • coordinator는 two-phase commit protocol이라고 불리는 프로토콜을 사용한다.
  1. phase 1
    • 참여하는 데이터베이스들이 트랜젝션의 일부분이 완료되었다고 coordinator에게 signal을 보내면, coordinator는 transaction commit을 위해 준비하라는 message를 참여하는 데이터베이스들에게 전송한다.
    • message를 전송받은 데이터베이스들은 모든 log record와 recovery에 필요한 정보를 disk에 강제로 작성하고, coordinator에게 ready to commit message를 전송한다.
    • disk 작성이 실패했거나, local transaction이 모종의 사유로 실패하면 cannot commit, not OK signal이 coordinator에 전달한다.
  • phase 1은 전송 phase이다.
  1. phase 2
    • 만약 모든 참여 DB가 OK를 보내고, coordinator또한 OK라면, coordinator는 참여 DB들에게 commit signal을 전송한다.
    • local recovery가 가능하다.
    • 참여 DB 중 최소 1개나 coordinator가 not OK response이거나, transaction이 실패하면 coordinator는 roll back 또는 UNDO를 하도록 각 참여 DB에 알린다.
    • local transaction 연산을 취소할때는 log를 사용한다.
  • phase 2 는 확인 phase이다.

  • 스크린샷 2022-10-17 오후 7 02 23

  • 따라서, phase1 도중이나 이전에 failure가 발생하면, transaction이 일반적으로 roll back되어야만하나,
  • phase2의 failure는 transaction을 성공적으로 recover하거나, commit할 수 있다.


three-phase commit

  • two-phase commit, 2PC의 가장 큰 단점은 blocking protocol이라는 것이다.
    • coordinator 단에서 failure가 발생하면, coordinator가 복구할때까지 모든 참여 site를 blocking한다.
    • 만약 특정 참여 site에서 공유자원을 lock하고있다면, 성능저하로 이어지게된다.
  • 이러한 2PC의 단점을 해결하기위해 나온게 3PC protocol이다.
  • 2PC의 2phase를 prepare-to-commit과 commit으로 구분한다.

  • 스크린샷 2022-10-17 오후 7 45 37

  • prepare-to-commit
    • 모든 참여자의 vote phase의 결과를 통신하기위해 사용된다.
    • 모든 참여자가 yes에 투표하면, coordinator는 모든 참가자를 prepare-to-commit state로 변경한다.
  • commit
    • 2PC의 commit phase와 동일하다.
  • 3PC의 핵심은 commit 준비단계에서 coordinator로부터 global commit, 혹은 abort를 기다리는 참가자의 대기시간을 한정하기위함이다.


⭐️Global Locking

OS의 transaction 관리

  • 일반적으로 DBMS는 semaphore를 통해 공유자원 접근을 배제한다.
  • semaphore는 DBMS 소프트웨어의 user space에 구현되어 있기에, OS에서는 이에대해 알 수 없다.
  • 그러므로, 만약 OS가 lock을 들고있는 DBMS 프로세스를 비활성화한다면, 이 lock을 획득해야하는 다른 DBMS 프로세스들은 block될 것이다.
  • 이런상황은 성능에 매우 악영향을 미친다.
  • 이러한 문제는 kernel의 일부분으로 protocol을 구현함으로써 해결가능하다.


⭐️Global Query Optimization

  • 목적
    • DDBMS에서는 각 DB가 떨어진 site에 존재한다.
    • 각 site에는 Hybrid Fragmentation된 Data가 존재하는데, 쿼리 최적화의 목적은 ⭐️network로 전달되는 양의 최소화이다.
  1. Query Mapping
    • 분산 데이터에 대한 입력쿼리는 쿼리 질의어를 통해 정의된다.
    • 이는 global relation에 대한 쿼리로 번역되고,
    • global conceptual schema를 참조한다.
  2. Localization
    • 분산 DB에서, fragmentation은 relation이 분리된 site에 저장되거나, 복사되는데,
    • 분산 복사된 정보를 이용해 쿼리를 local query로 분리한다.
  3. Global Query Optimization
    • Optimization은 최적에 가까운 후보 목록에서 최적의 전략을 선택한다.
    • 후보 쿼리 목록은 이전 단계에서 생성된 fragment query의 연산 순서 순열을 통해 얻을 수 있다.
    • 비용은 CPU처리비용, I/O비용, 그리고 통신비용으로 구성된다.
    • DDB는 네트워크로 연결되어있기때문에, 통신비용이 가장 중요하다.
  4. Local Query Optimization
    • Centralized system에서 사용되는 것과 똑같다.


Global Recovery

  • 분산 transaction 도중에 failure되어 restore되어야하는 이슈가 생겼을때.



Parallel DBMS issue

정의

  • large task를 small task로 작게 쪼개어 처리한다.
  • 데이터를 병렬화해 여러개의 프로세서가 처리할 수 있게한다.
  • 단일 프로세서로 처리할때보다 빠른 속도로 처리할 수 있다.
  • 스크린샷 2022-10-17 오후 8 44 04


SQL

  • 서버 프로세스들에 SQL code를 배분한다.
  • 스크린샷 2022-10-17 오후 8 47 38
  • 속도를 높이고, 확장성을 확보할 수 있다.
PARTITION BY RANGE(<attr_name>)
(
	PARTITION <partition_name> VALUES LESS THAN
		<기준값> TABLESPACE TS0,
	...
	PARTITION <last_partition_name> VALUES LESS THAN
		<MAXVALUE> TABLESPACE MV
);
  • 기준값을 통해 테이블을 파티셔닝할 수 있고,
  • 마지막은 MAXVALUE로 정의된다.

댓글남기기