[데이터베이스] 12. Distributed Database Concepts (Ch. 23)
Reference - Fundamentals of Database Systems 7th edition
Distributed Database concept
분산 데이터베이스 - 데이터베이스를 여러 노드(컴퓨터)로 나누어서 저장하고 관리하겠다가 기본 컨셉
이 경우 item이 중복돼서 저장되기에 한쪽이 고장나도 다른 쪽에서 백업할 수 있다.
분산 데이터베이스에서 가장 중요한 것은 투명성(transparency)인데, 사용자가 분산 데이터베이스 내부 구현의 디테일(어디에, 몇개, ...)을 알 수 없도록 하는 것을 의미한다. 각각의 하드웨어, 소프트웨어 리소스가 같을 필요는 없다.
Transparency의 type은 아래와 같다.
- Data organization transparency (Location transparency, Naming transparency - 데이터의 위치를 모르게끔 한다, 데이터베이스 이름은 하나만 존재한다)
- Replication transparency (복제 수를 모르게끔 한다)
- Fragmentation transparency (Horizontal fragmentation, Vertical fragmentation - relation이 어떻게 쪼개져있는지 - row / column으로 나눌 수 있으며, vertical(column)로 나눴을땐 key를 포함해서 저장해야 한다.)
- Design transparency, Execution transparency (하나의 DBMS에서 수행되는 것처럼 보이게끔)
Availability - 가용성 - 특정 time interval동안 지속적으로 사용가능할 확률을 말한다.
Reliability - 신뢰성 - 특정 시점에 다운(고장)이 나지 않고 사용할 수 있는 확률을 말한다.
-> 고장이 날 것 같으면 path를 바꿔주는 방식
Scalability - Horiziontal - 수평적 - 컴퓨터를 늘리는 방식 (scale out)
Vertical - 컴퓨터의 하드웨어 성능을 올리는 방식 (scale up)
Partition tolerance - 특정 부분이 subset이 되더라도(=시스템이 나눠지더라도) 데이터를 제공하는데 문제가 없어야 한다.
Autonomy - 각 node가 독립적으로 동작할 수 있어야 한다. 즉, 개별 node에서 실행 가능한 건 개별 node에서 실행한다.
이때 각 node의 transaction을 분석해서 설계해주어야 한다.
분산 컴퓨팅의 장점 - 가용성 증가, 유연한 확장
Data fragmentation - relation을 어느 방향으로 자르냐. 수평으로 자르면 record를 손상시키지 않고 나눔 (called sharding)
수직으로 자르면 column 단위. 이를 합쳐 Mixed(hybrid) fragmenetation도 가능하며, fragmentation schema를 모두 합치면 전체 데이터베이스가 나온다.
이때 중복을 전체 데이터에 허용할 수 있고 일부만 허용할 수도 있다. fully replicated DDBMS의 경우 자원 효율성이 떨어진다. update시마다 전체를 update해주어야 한다.(보통 이렇게 안함) Nonredundant도 잘 안쓴다. key는 중복이 발생할 수 밖에 없다. partitioning 전략은 회사 별로 transaction을 분석해서 사용한다.
분산 데이터베이스의 Concurrency control의 경우 distinguished copy(originality가 있는 copy를 사용), primary site with backup site(origin을 가진 site와 그 backup)가 있으며, 하둡과 같이 distinguish를 두지 않고 Voting하는 method가 있다. 모든 node가 originality를 주장하며 홀수로 생성된 copy에 대해 가장 같은 부분이 많은 걸 사용한다.
recovery 시에는 two(or three) phase commit 전략으로 안정성을 올린다. 이는 커밋 신호를 모두에게 보낸 뒤 다른 transaction을 hold하고 commit하는 것이다. three phase의 경우 hold 후 vote 단계가 추가된다.
(배우지 않음) Distributed Database의 query optimization의 경우 어떤 query가 어디에 mapping될 지에 대한 최적화를 수행한다. 분산 시스템에서 data transfer가 비용이 가장 많이 들기에 최대한 근거리에 위치한 데이터베이스를 통해 query를 수행한다.
분산 데이터베이스 시스템의 유형은 homogeneous 여부와, autonomy(자율성)을 통해 type을 나눈다.
homogeneous는 모든 것이 동일한 것, Heterogeneous는 다른 것이다. 하지만 update 등에 따라 homogeneous를 유지하는 것이 상당히 힘들고, 일반적으로는 Heterogeneous를 사용한다. (현실적으로 Federated database system이 일반적이다.)
분산 데이터베이스 아키텍처는 기본적으로 share하지 않고, 통신을 통해 다른 site의 데이터를 가지고 올 수 있는 형태이다. 하지만 한 site 내에서 disk를 공유하거나, 종종 예외적으로 메모리까지도 공유하기도 한다.
catalog (메타데이터)를 centralized할건지, Fully replicated할건지 등의 전략을 취할 수 있다.