From c7132da5ed65099782cce0877b2a8a5b94194249 Mon Sep 17 00:00:00 2001 From: Jang Hojin <96263955+hojinida@users.noreply.github.com> Date: Wed, 7 Aug 2024 22:25:50 +0900 Subject: [PATCH 1/2] Create Week4-DataBase.md --- .../Week4-DataBase.md" | 127 ++++++++++++++++++ 1 file changed, 127 insertions(+) create mode 100644 "\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" diff --git "a/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" "b/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" new file mode 100644 index 0000000..d8e86db --- /dev/null +++ "b/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" @@ -0,0 +1,127 @@ +데이터베이스 설계 및 선택 +데이터베이스 설계는 애플리케이션의 성능과 유지 관리에 중요한 영향을 미치는 요소입니다. 데이터베이스 선택은 정규화와 비정규화뿐만 아니라, 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)의 선택을 포함하여 여러 측면에서 신중한 고려가 필요합니다. + +데이터베이스 정규화와 비정규화 +정규화 +정규화는 데이터 중복을 줄이고 무결성을 향상시키기 위해 데이터를 구조화하는 방법입니다. 이 과정에서 데이터는 더 작은 관련 테이블로 분할되고, 이를 통해 데이터베이스는 효율적이고 유지보수가 용이한 구조를 갖게 됩니다. + +장점 + +데이터 중복 감소 +데이터 무결성 유지 +유지 관리 용이 +단점 + +성능 저하 가능성 +설계 복잡성 증가 +비정규화 +비정규화는 데이터 검색 속도를 높이기 위해 의도적으로 중복을 허용하는 설계 방식입니다. 주로 데이터 읽기가 빈번한 상황에서 사용됩니다. + +장점 + +쿼리 성능 향상 +분석 및 리포팅 최적화 +단점 + +데이터 무결성 감소 가능성 +업데이트 복잡성 증가 +RDBMS와 NoSQL의 비교 +RDBMS (관계형 데이터베이스 관리 시스템) +구조와 스키마 + +구조화된 데이터 모델과 미리 정의된 스키마 사용 +복잡한 트랜잭션과 데이터 무결성이 필요한 애플리케이션에 적합 +확장성 + +주로 수직 확장 (단일 서버의 용량 증가) +일관성 및 트랜잭션 + +ACID 트랜잭션 지원 +쿼리 언어 + +SQL(구조화된 쿼리 언어)을 사용 +사용 사례 + +ERP 시스템, CRM 애플리케이션, 금융 거래 시스템 +NoSQL (비관계형 데이터베이스) +구조와 스키마 + +유연한 스키마 모델과 다양한 데이터 유형 지원 +비정형 또는 반정형 데이터를 처리하는 데 적합 +확장성 + +수평 확장 가능 (여러 서버에 데이터 분산) +일관성 및 트랜잭션 + +BASE 모델 준수 +쿼리 언어 + +표준 쿼리 언어 없음 +종류와 예 + +Document Store: MongoDB, CouchDB +Key-Value Store: Redis, Amazon DynamoDB +Graph Database: Neo4j, Amazon Neptune +Column-Family Store: Apache Cassandra, HBase +사용 사례 + +대량의 비정형 데이터를 처리해야 하는 상황 +고가용성과 빠른 데이터 검색이 중요한 환경 +동시성 제어 및 격리 수준 +동시성 제어는 여러 트랜잭션이 동시에 실행될 때 데이터베이스의 무결성과 일관성을 유지하기 위한 중요한 메커니즘입니다. 격리 수준은 이러한 트랜잭션이 서로 간섭하지 않도록 보장하는 방법을 정의합니다. + +동시성 제어 +동시성 제어는 트랜잭션 간의 상호 작용을 관리하여 데이터 무결성을 유지하는 데 도움을 줍니다. 주요 동시성 제어 기법은 다음과 같습니다: + +1. 비관적 동시성 제어 (Pessimistic Concurrency Control) + +잠금 사용: 데이터를 읽거나 수정하기 전에 잠금을 사용하여 다른 트랜잭션이 데이터에 접근하지 못하게 합니다. 이 방식은 충돌을 사전에 방지하지만 리소스가 비효율적으로 사용될 수 있습니다. +장점: 데이터 충돌을 사전에 방지하여 안정적인 데이터 무결성을 유지합니다. +단점: 리소스가 비효율적으로 사용될 수 있으며, 다른 트랜잭션이 대기해야 할 수 있습니다. +2. 낙관적 동시성 제어 (Optimistic Concurrency Control) + +잠금 없음: 트랜잭션이 종료될 때까지 잠금을 사용하지 않습니다. 트랜잭션 종료 시 충돌을 검사하고, 충돌이 발견되면 트랜잭션을 재시도하거나 취소합니다 +장점: 잠금을 사용하지 않아 더 많은 트랜잭션이 동시에 실행될 수 있습니다. +단점: 충돌이 발생하면 트랜잭션을 재시도해야 하므로 성능이 저하될 수 있습니다. +격리 수준 +격리 수준은 트랜잭션이 다른 트랜잭션에 영향을 주지 않도록 하는 정도를 정의합니다. 일반적인 격리 수준은 다음과 같습니다: + +1. Read Uncommitted + +트랜잭션은 커밋되지 않은 다른 트랜잭션의 변경 사항을 읽을 수 있습니다. 가장 낮은 수준의 격리이며, 데이터 무결성이 보장되지 않습니다. +2. Read Committed + +트랜잭션은 커밋된 데이터만 읽을 수 있습니다. 이는 더 높은 데이터 일관성을 제공하지만, 비반복 읽기 문제가 발생할 수 있습니다. +3. Repeatable Read + +트랜잭션이 시작된 후 데이터는 다른 트랜잭션에 의해 수정되지 않습니다. 비반복 읽기 문제는 해결되지만, 팬텀 읽기 문제가 발생할 수 있습니다. +4. Serializable + +가장 높은 수준의 격리로, 모든 트랜잭션이 순차적으로 실행되는 것처럼 보입니다. 데이터 일관성이 보장되지만, 동시성은 크게 제한됩니다. +사용 사례 +비관적 동시성 제어는 금융 거래와 같이 데이터 무결성이 매우 중요한 시스템에 적합합니다. +낙관적 동시성 제어는 충돌 가능성이 낮은 시스템이나 트랜잭션 충돌 시 재시도가 용이한 시스템에 적합합니다. +Read Committed와 Repeatable Read는 대부분의 비즈니스 애플리케이션에서 일반적으로 사용되는 수준이며, 성능과 데이터 무결성 간의 균형을 제공합니다. +Serializable은 데이터 일관성이 절대적으로 중요한 경우에 사용됩니다 +분산 데이터베이스란? +분산 데이터베이스는 데이터가 여러 위치에 물리적으로 분산되어 저장되는 시스템입니다. 이러한 시스템은 여러 데이터베이스 인스턴스 간에 데이터가 복제되거나 분할되어, 사용자에게는 하나의 통합된 데이터베이스로 나타납니다. 분산 데이터베이스는 데이터의 가용성을 높이고 시스템의 확장성을 개선하는 데 중점을 둡니다. + +분산 데이터베이스의 특징 +위치 독립성: 데이터는 여러 사이트에 걸쳐 물리적으로 저장되며 독립적인 분산 데이터베이스 관리 시스템(DDBMS)에 의해 관리됩니다. +분산 쿼리 처리: 데이터가 여러 위치에 분산되어 있는 환경에서 고급 쿼리를 처리할 수 있으며, 이는 데이터 관리와 쿼리 실행 계획으로 변환됩니다. +분산 트랜잭션 관리: 커밋 프로토콜, 분산 동시성 제어 기법, 그리고 오류 발생 시 분산 복구 방법을 통해 일관된 데이터베이스 상태를 유지합니다. +네트워크 연결: 데이터베이스는 네트워크를 통해 연결되어 서로 통신합니다. +분산 데이터베이스의 유형 +동질 분산 데이터베이스: 동일한 운영 체제와 DDBMS를 사용하는 여러 사이트에 동일한 데이터베이스가 저장됩니다. 이는 관리가 용이하며 데이터 액세스가 원활합니다. +이질 분산 데이터베이스: 서로 다른 스키마, 운영 체제, DDBMS 및 데이터 모델을 사용합니다. 사이트 간 협력이 제한적이며, 번역이 필요할 수 있습니다. +데이터 저장 방식 +복제(Replication): 데이터의 복사본을 여러 사이트에 저장하여 데이터의 가용성을 높이고, 병렬 쿼리 요청을 처리할 수 있게 합니다. 그러나 데이터 동기화가 필요하여 서버 오버헤드가 증가할 수 있습니다. +분할(Fragmentation): 데이터를 수평 또는 수직으로 분할하여 각 분할을 필요한 사이트에 저장합니다. 이는 데이터 복사를 방지하고 데이터 불일치 문제를 최소화합니다. +장점 +고가용성: 데이터가 여러 노드에 복제되어 있어 일부 노드에 장애가 발생해도 시스템이 계속 작동할 수 있습니다. +확장성: 인스턴스를 추가하여 수평 확장이 용이합니다. +성능 향상: 효율적인 데이터 분배로 사용자 요청에 대한 응답 시간이 단축됩니다. +단점 +비용: 여러 사이트 간의 데이터 일관성을 유지하기 위한 소프트웨어 비용이 높을 수 있습니다. +오버헤드: 복제된 데이터베이스의 경우, 여러 사이트에서 발생하는 동기화와 계산으로 인해 처리 오버헤드가 증가합니다. +데이터 무결성: 여러 사이트에서 데이터를 업데이트할 때 데이터 무결성이 손상될 수 있습니다. From 45e603839f91a445530663ad79cb577ad4a36a17 Mon Sep 17 00:00:00 2001 From: Jang Hojin <96263955+hojinida@users.noreply.github.com> Date: Wed, 7 Aug 2024 22:28:01 +0900 Subject: [PATCH 2/2] Update Week4-DataBase.md --- .../Week4-DataBase.md" | 282 ++++++++++-------- 1 file changed, 163 insertions(+), 119 deletions(-) diff --git "a/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" "b/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" index d8e86db..bd84af9 100644 --- "a/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" +++ "b/\354\236\245\355\230\270\354\247\204/Week4-DataBase.md" @@ -1,127 +1,171 @@ -데이터베이스 설계 및 선택 +## 데이터베이스 설계 및 선택 +​ 데이터베이스 설계는 애플리케이션의 성능과 유지 관리에 중요한 영향을 미치는 요소입니다. 데이터베이스 선택은 정규화와 비정규화뿐만 아니라, 관계형 데이터베이스(RDBMS)와 비관계형 데이터베이스(NoSQL)의 선택을 포함하여 여러 측면에서 신중한 고려가 필요합니다. - -데이터베이스 정규화와 비정규화 -정규화 +​ +### 데이터베이스 정규화와 비정규화 +​ +#### 정규화 +​ 정규화는 데이터 중복을 줄이고 무결성을 향상시키기 위해 데이터를 구조화하는 방법입니다. 이 과정에서 데이터는 더 작은 관련 테이블로 분할되고, 이를 통해 데이터베이스는 효율적이고 유지보수가 용이한 구조를 갖게 됩니다. - -장점 - -데이터 중복 감소 -데이터 무결성 유지 -유지 관리 용이 -단점 - -성능 저하 가능성 -설계 복잡성 증가 -비정규화 +​ +**장점** +​ +- 데이터 중복 감소 +- 데이터 무결성 유지 +- 유지 관리 용이 +​ +**단점** +​ +- 성능 저하 가능성 +- 설계 복잡성 증가 +​ +#### 비정규화 +​ 비정규화는 데이터 검색 속도를 높이기 위해 의도적으로 중복을 허용하는 설계 방식입니다. 주로 데이터 읽기가 빈번한 상황에서 사용됩니다. - -장점 - -쿼리 성능 향상 -분석 및 리포팅 최적화 -단점 - -데이터 무결성 감소 가능성 -업데이트 복잡성 증가 -RDBMS와 NoSQL의 비교 -RDBMS (관계형 데이터베이스 관리 시스템) -구조와 스키마 - -구조화된 데이터 모델과 미리 정의된 스키마 사용 -복잡한 트랜잭션과 데이터 무결성이 필요한 애플리케이션에 적합 -확장성 - -주로 수직 확장 (단일 서버의 용량 증가) -일관성 및 트랜잭션 - -ACID 트랜잭션 지원 -쿼리 언어 - -SQL(구조화된 쿼리 언어)을 사용 -사용 사례 - -ERP 시스템, CRM 애플리케이션, 금융 거래 시스템 -NoSQL (비관계형 데이터베이스) -구조와 스키마 - -유연한 스키마 모델과 다양한 데이터 유형 지원 -비정형 또는 반정형 데이터를 처리하는 데 적합 -확장성 - -수평 확장 가능 (여러 서버에 데이터 분산) -일관성 및 트랜잭션 - -BASE 모델 준수 -쿼리 언어 - -표준 쿼리 언어 없음 -종류와 예 - -Document Store: MongoDB, CouchDB -Key-Value Store: Redis, Amazon DynamoDB -Graph Database: Neo4j, Amazon Neptune -Column-Family Store: Apache Cassandra, HBase -사용 사례 - -대량의 비정형 데이터를 처리해야 하는 상황 -고가용성과 빠른 데이터 검색이 중요한 환경 -동시성 제어 및 격리 수준 +​ +**장점** +​ +- 쿼리 성능 향상 +- 분석 및 리포팅 최적화 +​ +**단점** +​ +- 데이터 무결성 감소 가능성 +- 업데이트 복잡성 증가 +​ +### RDBMS와 NoSQL의 비교 +​ +#### RDBMS (관계형 데이터베이스 관리 시스템) +​ +**구조와 스키마** +​ +- 구조화된 데이터 모델과 미리 정의된 스키마 사용 +- 복잡한 트랜잭션과 데이터 무결성이 필요한 애플리케이션에 적합 +​ +**확장성** +​ +- 주로 수직 확장 (단일 서버의 용량 증가) +​ +**일관성 및 트랜잭션** +​ +- ACID 트랜잭션 지원 +​ +**쿼리 언어** +​ +- SQL(구조화된 쿼리 언어)을 사용 +​ +**사용 사례** +​ +- ERP 시스템, CRM 애플리케이션, 금융 거래 시스템 +​ +#### NoSQL (비관계형 데이터베이스) +​ +**구조와 스키마** +​ +- 유연한 스키마 모델과 다양한 데이터 유형 지원 +- 비정형 또는 반정형 데이터를 처리하는 데 적합 +​ +**확장성** +​ +- 수평 확장 가능 (여러 서버에 데이터 분산) +​ +**일관성 및 트랜잭션** +​ +- BASE 모델 준수 +​ +**쿼리 언어** +​ +- 표준 쿼리 언어 없음 +​ +**종류와 예** +​ +- **Document Store:** MongoDB, CouchDB +- **Key-Value Store:** Redis, Amazon DynamoDB +- **Graph Database:** Neo4j, Amazon Neptune +- **Column-Family Store:** Apache Cassandra, HBase +​ +**사용 사례** +​ +- 대량의 비정형 데이터를 처리해야 하는 상황 +- 고가용성과 빠른 데이터 검색이 중요한 환경 +​ +## 동시성 제어 및 격리 수준 +​ 동시성 제어는 여러 트랜잭션이 동시에 실행될 때 데이터베이스의 무결성과 일관성을 유지하기 위한 중요한 메커니즘입니다. 격리 수준은 이러한 트랜잭션이 서로 간섭하지 않도록 보장하는 방법을 정의합니다. - -동시성 제어 +​ +### 동시성 제어 +​ 동시성 제어는 트랜잭션 간의 상호 작용을 관리하여 데이터 무결성을 유지하는 데 도움을 줍니다. 주요 동시성 제어 기법은 다음과 같습니다: - -1. 비관적 동시성 제어 (Pessimistic Concurrency Control) - -잠금 사용: 데이터를 읽거나 수정하기 전에 잠금을 사용하여 다른 트랜잭션이 데이터에 접근하지 못하게 합니다. 이 방식은 충돌을 사전에 방지하지만 리소스가 비효율적으로 사용될 수 있습니다. -장점: 데이터 충돌을 사전에 방지하여 안정적인 데이터 무결성을 유지합니다. -단점: 리소스가 비효율적으로 사용될 수 있으며, 다른 트랜잭션이 대기해야 할 수 있습니다. -2. 낙관적 동시성 제어 (Optimistic Concurrency Control) - -잠금 없음: 트랜잭션이 종료될 때까지 잠금을 사용하지 않습니다. 트랜잭션 종료 시 충돌을 검사하고, 충돌이 발견되면 트랜잭션을 재시도하거나 취소합니다 -장점: 잠금을 사용하지 않아 더 많은 트랜잭션이 동시에 실행될 수 있습니다. -단점: 충돌이 발생하면 트랜잭션을 재시도해야 하므로 성능이 저하될 수 있습니다. -격리 수준 +​ +**1\. 비관적 동시성 제어 (Pessimistic Concurrency Control)** +​ +- **잠금 사용:** 데이터를 읽거나 수정하기 전에 잠금을 사용하여 다른 트랜잭션이 데이터에 접근하지 못하게 합니다. 이 방식은 충돌을 사전에 방지하지만 리소스가 비효율적으로 사용될 수 있습니다. +- **장점:** 데이터 충돌을 사전에 방지하여 안정적인 데이터 무결성을 유지합니다. +- **단점:** 리소스가 비효율적으로 사용될 수 있으며, 다른 트랜잭션이 대기해야 할 수 있습니다. +​ +**2\. 낙관적 동시성 제어 (Optimistic Concurrency Control)** +​ +- **잠금 없음:** 트랜잭션이 종료될 때까지 잠금을 사용하지 않습니다. 트랜잭션 종료 시 충돌을 검사하고, 충돌이 발견되면 트랜잭션을 재시도하거나 취소합니다 +- **장점:** 잠금을 사용하지 않아 더 많은 트랜잭션이 동시에 실행될 수 있습니다. +- **단점:** 충돌이 발생하면 트랜잭션을 재시도해야 하므로 성능이 저하될 수 있습니다. +​ +### 격리 수준 +​ 격리 수준은 트랜잭션이 다른 트랜잭션에 영향을 주지 않도록 하는 정도를 정의합니다. 일반적인 격리 수준은 다음과 같습니다: - -1. Read Uncommitted - -트랜잭션은 커밋되지 않은 다른 트랜잭션의 변경 사항을 읽을 수 있습니다. 가장 낮은 수준의 격리이며, 데이터 무결성이 보장되지 않습니다. -2. Read Committed - -트랜잭션은 커밋된 데이터만 읽을 수 있습니다. 이는 더 높은 데이터 일관성을 제공하지만, 비반복 읽기 문제가 발생할 수 있습니다. -3. Repeatable Read - -트랜잭션이 시작된 후 데이터는 다른 트랜잭션에 의해 수정되지 않습니다. 비반복 읽기 문제는 해결되지만, 팬텀 읽기 문제가 발생할 수 있습니다. -4. Serializable - -가장 높은 수준의 격리로, 모든 트랜잭션이 순차적으로 실행되는 것처럼 보입니다. 데이터 일관성이 보장되지만, 동시성은 크게 제한됩니다. -사용 사례 -비관적 동시성 제어는 금융 거래와 같이 데이터 무결성이 매우 중요한 시스템에 적합합니다. -낙관적 동시성 제어는 충돌 가능성이 낮은 시스템이나 트랜잭션 충돌 시 재시도가 용이한 시스템에 적합합니다. -Read Committed와 Repeatable Read는 대부분의 비즈니스 애플리케이션에서 일반적으로 사용되는 수준이며, 성능과 데이터 무결성 간의 균형을 제공합니다. -Serializable은 데이터 일관성이 절대적으로 중요한 경우에 사용됩니다 -분산 데이터베이스란? +​ +**1\. Read Uncommitted** +​ +- 트랜잭션은 커밋되지 않은 다른 트랜잭션의 변경 사항을 읽을 수 있습니다. 가장 낮은 수준의 격리이며, 데이터 무결성이 보장되지 않습니다. +​ +**2\. Read Committed** +​ +- 트랜잭션은 커밋된 데이터만 읽을 수 있습니다. 이는 더 높은 데이터 일관성을 제공하지만, 비반복 읽기 문제가 발생할 수 있습니다. +​ +**3\. Repeatable Read** +​ +- 트랜잭션이 시작된 후 데이터는 다른 트랜잭션에 의해 수정되지 않습니다. 비반복 읽기 문제는 해결되지만, 팬텀 읽기 문제가 발생할 수 있습니다. +​ +**4\. Serializable** +​ +- 가장 높은 수준의 격리로, 모든 트랜잭션이 순차적으로 실행되는 것처럼 보입니다. 데이터 일관성이 보장되지만, 동시성은 크게 제한됩니다. +​ +### 사용 사례 +​ +- **비관적 동시성 제어**는 금융 거래와 같이 데이터 무결성이 매우 중요한 시스템에 적합합니다. +- **낙관적 동시성 제어**는 충돌 가능성이 낮은 시스템이나 트랜잭션 충돌 시 재시도가 용이한 시스템에 적합합니다. +- **Read Committed**와 **Repeatable Read**는 대부분의 비즈니스 애플리케이션에서 일반적으로 사용되는 수준이며, 성능과 데이터 무결성 간의 균형을 제공합니다. +- **Serializable**은 데이터 일관성이 절대적으로 중요한 경우에 사용됩니다 +​ +## 분산 데이터베이스란? +​ 분산 데이터베이스는 데이터가 여러 위치에 물리적으로 분산되어 저장되는 시스템입니다. 이러한 시스템은 여러 데이터베이스 인스턴스 간에 데이터가 복제되거나 분할되어, 사용자에게는 하나의 통합된 데이터베이스로 나타납니다. 분산 데이터베이스는 데이터의 가용성을 높이고 시스템의 확장성을 개선하는 데 중점을 둡니다. +​ +### 분산 데이터베이스의 특징 +​ +1. **위치 독립성**: 데이터는 여러 사이트에 걸쳐 물리적으로 저장되며 독립적인 분산 데이터베이스 관리 시스템(DDBMS)에 의해 관리됩니다. +2. **분산 쿼리 처리**: 데이터가 여러 위치에 분산되어 있는 환경에서 고급 쿼리를 처리할 수 있으며, 이는 데이터 관리와 쿼리 실행 계획으로 변환됩니다. +3. **분산 트랜잭션 관리**: 커밋 프로토콜, 분산 동시성 제어 기법, 그리고 오류 발생 시 분산 복구 방법을 통해 일관된 데이터베이스 상태를 유지합니다. +4. **네트워크 연결**: 데이터베이스는 네트워크를 통해 연결되어 서로 통신합니다. +​ +### 분산 데이터베이스의 유형 +​ +1. **동질 분산 데이터베이스**: 동일한 운영 체제와 DDBMS를 사용하는 여러 사이트에 동일한 데이터베이스가 저장됩니다. 이는 관리가 용이하며 데이터 액세스가 원활합니다. +2. **이질 분산 데이터베이스**: 서로 다른 스키마, 운영 체제, DDBMS 및 데이터 모델을 사용합니다. 사이트 간 협력이 제한적이며, 번역이 필요할 수 있습니다. +​ +### 데이터 저장 방식 +​ +1. **복제(Replication)**: 데이터의 복사본을 여러 사이트에 저장하여 데이터의 가용성을 높이고, 병렬 쿼리 요청을 처리할 수 있게 합니다. 그러나 데이터 동기화가 필요하여 서버 오버헤드가 증가할 수 있습니다. +2. **분할(Fragmentation)**: 데이터를 수평 또는 수직으로 분할하여 각 분할을 필요한 사이트에 저장합니다. 이는 데이터 복사를 방지하고 데이터 불일치 문제를 최소화합니다. +​ +### 장점 +​ +- **고가용성**: 데이터가 여러 노드에 복제되어 있어 일부 노드에 장애가 발생해도 시스템이 계속 작동할 수 있습니다. +- **확장성**: 인스턴스를 추가하여 수평 확장이 용이합니다. +- **성능 향상**: 효율적인 데이터 분배로 사용자 요청에 대한 응답 시간이 단축됩니다. +​ +### 단점 +​ +- **비용**: 여러 사이트 간의 데이터 일관성을 유지하기 위한 소프트웨어 비용이 높을 수 있습니다. +- **오버헤드**: 복제된 데이터베이스의 경우, 여러 사이트에서 발생하는 동기화와 계산으로 인해 처리 오버헤드가 증가합니다. +- **데이터 무결성**: 여러 사이트에서 데이터를 업데이트할 때 데이터 무결성이 손상될 수 있습니다. -분산 데이터베이스의 특징 -위치 독립성: 데이터는 여러 사이트에 걸쳐 물리적으로 저장되며 독립적인 분산 데이터베이스 관리 시스템(DDBMS)에 의해 관리됩니다. -분산 쿼리 처리: 데이터가 여러 위치에 분산되어 있는 환경에서 고급 쿼리를 처리할 수 있으며, 이는 데이터 관리와 쿼리 실행 계획으로 변환됩니다. -분산 트랜잭션 관리: 커밋 프로토콜, 분산 동시성 제어 기법, 그리고 오류 발생 시 분산 복구 방법을 통해 일관된 데이터베이스 상태를 유지합니다. -네트워크 연결: 데이터베이스는 네트워크를 통해 연결되어 서로 통신합니다. -분산 데이터베이스의 유형 -동질 분산 데이터베이스: 동일한 운영 체제와 DDBMS를 사용하는 여러 사이트에 동일한 데이터베이스가 저장됩니다. 이는 관리가 용이하며 데이터 액세스가 원활합니다. -이질 분산 데이터베이스: 서로 다른 스키마, 운영 체제, DDBMS 및 데이터 모델을 사용합니다. 사이트 간 협력이 제한적이며, 번역이 필요할 수 있습니다. -데이터 저장 방식 -복제(Replication): 데이터의 복사본을 여러 사이트에 저장하여 데이터의 가용성을 높이고, 병렬 쿼리 요청을 처리할 수 있게 합니다. 그러나 데이터 동기화가 필요하여 서버 오버헤드가 증가할 수 있습니다. -분할(Fragmentation): 데이터를 수평 또는 수직으로 분할하여 각 분할을 필요한 사이트에 저장합니다. 이는 데이터 복사를 방지하고 데이터 불일치 문제를 최소화합니다. -장점 -고가용성: 데이터가 여러 노드에 복제되어 있어 일부 노드에 장애가 발생해도 시스템이 계속 작동할 수 있습니다. -확장성: 인스턴스를 추가하여 수평 확장이 용이합니다. -성능 향상: 효율적인 데이터 분배로 사용자 요청에 대한 응답 시간이 단축됩니다. -단점 -비용: 여러 사이트 간의 데이터 일관성을 유지하기 위한 소프트웨어 비용이 높을 수 있습니다. -오버헤드: 복제된 데이터베이스의 경우, 여러 사이트에서 발생하는 동기화와 계산으로 인해 처리 오버헤드가 증가합니다. -데이터 무결성: 여러 사이트에서 데이터를 업데이트할 때 데이터 무결성이 손상될 수 있습니다.