반응형

1. 저장 장치의 필요성

    - 외부 데이터 세트를 수집해야 하거나 내부 데이터를 빅데이터 환경에서 사용해야 하는 경우

    - 데이터 분석을 위하여 데이터를 처리하는 경우

    - 데이터가 ETL 활동을 통해 처리되거나 분석 작업을 통해 결과물이 생성되는 경우

 

 

2. 저장에 대한 개념

    - 클러스터 : 밀접하게 결합된 서버 또는 노드들의 모음

                     노드나 서버는 일반적으로 동일한 하드웨어 사양을 가지며 네트워크를 통해 서로 연결되어

                     하나의 장치로 작동한다.

                     각 노드는 메모리, 프로세서 및 하드 드라이브와 같은 전용 리소스를 가짐

                     클러스터를 통해 작업을 보다 세부적인 단위로 분할한 뒤, 해당 클러스터에 속한 다름 컴퓨터에

                     각 세부 작업을 할당하여 작업을 한꺼번에 수행할 수 있음

 

3. 파일 시스템

   - 플래시 드라이브, DVD 및 하드 드라이브와 같은 저장 장치에 데이터를 저장하고 구성하는 방법

   - 저장 장치에 저장된 데이터의 논리적 뷰(view)를 제공하고, 디렉토리 및 파일의 트리 구조로 이를 보여줌

   - 운영 체제는 하나 이상의 파일 시스템을 지원하는데, Microsoft Windows의 경우 NTFS, Linux의 경우 ext를 지원

 

4. 분산 파일 시스템

    - 클러스터 노드에 분산된 대용량 파일을 저장할 수 있는 파일 시스템

    - 클라이언트에게 파일은 로컬에 존재하는 것처럼 보이나 클러스터를 통해 물리적으로 분산된 파일들에 대한 

      논리적인 뷰를 제공

    - 구글 파일 시스템(GFS) 및 하둡 분산 파일 시스템(HDFS) 등이 있다.

 

 

5. NoSQL

   - Not only SQL Database(NoSQL)는 반정형 비정형 데이터를 수용할 수 있도록 설계된 높은 확장성과 결합포용성을

     가진 비관계형 데이터베이스

   - 종종 애플리케이션 내에서 호출이 가능한 API 기반 쿼리 인터페이스 제공

   - 관계형 데이터베이스의 구조화된 데이터를 쿼리하기 위해 설계된 구조형 쿼리 언어 SQL이외의 쿼리 언어도 지원

 

6. 샤딩

    - 대규모의 데이터 세트를 샤드라 불리는 더 작고 관리하기 쉬운 데이터 세트로 수평 분할하는 프로세스

    - 각 샤드는 분리된 노드에 저장되며 각 노드는 자신에게 저장된 데이터만 담당하고, 공통된 스키마를 공유하여

      모든 샤드를 모으면 전체 데이터 셋이 된다.

    - 샤딩을 사용하면 여러 노드에 처리 작업량을 분산시켜 수평 확장성을 확보

    - 각 노드가 전체 데이터 집합의 일부만을 담당하므로 데이터를 읽거나 쓰는데 걸리는 시간이 크게 감소

    - 각 샤드는 독립적으로 자신이 담당하는 데이터에 대해 읽기 및 쓰기 작업을 수행

    - 쿼리에 따라 두 개의 샤드에서 데이터를 가져와야 할 수 있음

    - 데이터베이스 내의 부분적인 결함을 허용

    - 하나의 노드에 장애가 발생해도 해당 노드에 저장된 데이터만 영향(다른 노드의 데이터와 무관)

    - 샤드 자체가 성능 병목 현상을 일으키지 않도록 하기 위해 쿼리의 패턴을 고려하여 데이터를 분할해야 함

    - 일반적으로 같이 액세스되는 데이터를 단일 샤드에 배치하여 데이터 지역성을 확보

 

 

7. 복제

    - 복제는 여러 노드에 레플리카라고 하는 데이터 세트의 복사본을 저장

    - 동일한 데이터가 다양한 노드에 복제되기 때문에 확장성과 가용성을 제공

    - 개별 노드에 장애가 발생해도 데이터가 손실되지 않도록 하기 때문에 결함포용성을 얻을 수 있음

    - 노드들이 마스터-슬레이브 구성으로 정렬 모든 데이터는 마스터 노드에 쓰여짐

    - 데이터가 마스터 노드에 저장되면 데이터는 여러 슬레이브 노드로 복제

    - 추가 수정 및 삭제를 포함한 모든 외부 쓰기 작업 처리는 마스터 노드에서만 발생

    - 마스터 노드에 장애가 발생하면 마스터 노드가 다시 설정될 때까지 쓰기 작업 지원 X

    - 마스터 노드가 백업에서 다시 복구되거나 슬레이브 노드 중 새로운 마스터 노드가 선택된다

    - 읽기 작업 처리는 모든 슬레이브 노드에서 수행 가능

    - 읽기 집중적인 작업에 이상적인 복제 방법임

    - 읽기 요청이 증가해도 수평 스케일링에 슬레이브 노드를 추가하여 처리할 수 있음

    - 쓰기 작업의 경우 모든 쓰기 작업이 마스터 노드에 의해서만 조정되기 때문에 쓰기 양이 증가하면 성능 하락

    - 읽기 작업의 비일관성이 발생할 수 있음

    - 마스터 노드 업데이트가 슬레이브 노드에 복사되기 전에 사용자가 슬레이브 노드를 읽어 들여 접근하는 노드에

      따라 읽어 들이게 되는 데이터가 달라지는 현상이 발생

    - 대부분의 슬레이브 노드에 동일한 버전의 데이터가 포함되어 있으면 읽기가 일관된 것으로

      선언하는 투표 시스템을 이용한다.

 

 

8. 피어 투 피어

노드 간에는 마스터-슬레이브 관계가 없으며 모든 노드가 동일한 수준에서 작동한다.

I 피어라 불리는 각 노드는 읽기와 쓰기 작업을 똑같이 처리할수 있으며, 쓰기 작업이 일어나면 모든 피어에 복사된다. I 여러 피어간에 동일한 데이터를 동시에 업데이트하기 때문에, 비일관성 문제가 발생한다.

I 비관적 동시성(pessimistic concurrency) I 낙관적 동시성(optimistic concurrency)

 

비관적 동시성 I 비일관성을 사전에 방지하는 대응 전략으로, 데이터를 한 번에 하나만 업데이트 할 수 있도록 잠금을 사용하는 것이다. I 모든 잠금이 해제될 때까지 업데이트 중인 데이터베이스 데이터를 사용할 수 없으므로 가용성에 좋지 않다. I 낙관적 동시성 I 잠금을 사용하지 않는 사후 대응 전략으로, 비일관성이 발생하더라도 결국 모든 업데이트가 전파되고 나면 일관성이 유지될 것이라는 사실을 이용한다. I 일관성을 얻기 전에는 피어들이 일정 시점에 비일관적인 상태로 존재할 수 있다. I 잠금이 필요하지 않으므로 데이터베이스를 계속해서 사용할 수 있다.

 

 

샤딩 및 복제 I 샤딩에 의해 제한되는 결함포용성을 개선하고 복제의 가용성과 확장성을 추가로 얻기 위해 샤딩과 복제을 결합할 수 있다. I 샤딩 및 마스터-슬레이브 복제 I 샤딩 및 피어 투 피어 복제 샤딩 및 마스터 슬레이브 복제 결합 I 마스터 자체가 하나의 샤드가 되고, 그 마스터에 대해 여러 샤드들이 슬레이브가 된다. I 여러 마스터가 생성될 수 있으나, 하나의 슬레이브는 하나의 마스터로만 관리할 수 있다. I 마스터 샤드의 장애로 인해 쓰기 작업의 결함 포용성에 문제가 발생해도 읽기 작업에 확장성과 결함 포용성은 제공된다. I 마스터 샤드의 복제본이 여러 슬레이브 샤드에 보관되어 있기 때문이다.

 

샤딩 및 피어 투 피어 복제 결합 I 각 샤드는 여러 피어에 복제되며 각 피어는 전체 데이터 세트의 일부만 담당한다. I 총체적으로 확장성 및 결함 포용성이 향상된다. I 마스터와 관련이 없기 때문에 단일 장애 지점이 없으므로, 읽기 및 쓰기 작업에 대한 결함포용성이 모두 지원된다.

 

CAP 정리 I CAP 정리(또는 브루어의 정리)는 분산 데이터베이스 시스템과 관련된 세 가지의 제약 조건을 보여준다. I 클러스터에서 수행되는 분산 데이터베이스 시스템은 다음 세 가지 속성 중 두 가지를 제공할 수 있다. I 일관성(Consistency) : 노드에 무관하게 읽기 작업은 동일한 데이터를 생성한다. I 가용성(Availability) : 읽기 및 쓰기 요청은 항상 성공 또는 실패의 형태로 확인된다. I 분할 포용성(Partition tolerance) : 데이터베이스 시스템은 클러스터를 여러 개의 사일로(silos)로 분할시키는 통신 중단에도 불구하고 읽기 및 쓰기 요청을 처리한다

 

CAP 정리 I 일관성(C) 및 가용성(P)이 필요한 경우, 사용 가능한 노드는 일관성(C)을 보장하기 위해 통신한다. I 분할 포용성(P)을 보장하는 것은 불가능하다. I 일관성(C) 및 분할 포용성(P)이 필요한 경우, 일관성(C)을 달성하는 동안 노드를 사용할 수 없다(A). I 가용성(A) 및 분할 포용성(P)이 필요한 경우, 노드 간 데이터 통신 요구사항으로 인해 일관성(C)을 보장할 수 없다. I 데이터 베이스는 사용 가능 상태을 유지할 수 있지만(A) 일관성(C)이 없는 결과가 존재한다.

 

일반적으로 CAP 중 C + P 또는 A + P 중 선택한다. I 통신 중단이 일시적이고 아주 드물게 발생하기는 하지만, 분산 데이터베이스에서 완전한 분할 포용성(P)을 항상 지원해주어야 한다. I 노드를 추가하면, C 와 A의 문제가 모두 발생할 가능성이 있다. I 노드 추가시 확장성 및 내결함성을 향상시킬 수 있지만 일관성(C) 문제가 발생한다. I 노드 간 통신이 증가하기 때문에 이로 인한 대기 시간이 늘어 가용성(A)이 저하될 수 있다. I 시스템 요구 사항에 따라 둘 중 하나의 특성을 선택한다.

 

 

ACID : C + P를 만족하기 위한 원리이다. I BASE : A + P를 만족하기 위한 원리이다. I 일관성 없는 결과를 제공하지만 대기 시간 없이 여러 클라이언트에 서비스를 제공할 수 있다. ACID I ACID는 일관성을 유지하기 위해 데이터 잠금 애플리케이션을 통해 비관적 동시성을 활용하는 트랜잭션 관리 스타일이다. I 원자성(Atomicity) I 일관성(Consistency) I 고립성(Isolation) I 지속성(Durability) I 관계형 데이터베이스 관리 시스템(RDMS)에 의해 관리되는 데이터베이스 트랜잭션 관리에 대한 전통적인 접근 방식이다. ACID - 원자성 I 원자성은 모든 작업이 항상 완전히 성공하거나 완전히 실패하도록 한다. I 부분적인 성공이 존재하지 않도록 한다

 

 

ACID - 일관성 I 일관성은 데이터베이스 스키마의 조건을 준수하는 데이터만 데이터베이스에 기록할 수 있도록 하여 데이터베이스가 항상 일관된 상태를 유지하도록 한다.

 

 

ACID - 고립성 I 고립성은 트랜잭션 결과가 완료될 때까지 다른 작업에서 확인할 수 없도록 한다.

 

ACID - 지속성 I 지속성은 작업 결과가 영구적으로 지속되는 것을 보장한다. I 트랜잭션이 실행된 후에는 다시 되돌릴 수 없다는 것을 의미한다. I 시스템 장애와는 무관하다.

 

BASE I BASE는 CAP 이론을 기반으로 분산 기술을 사용하는 데이터베이스 시스템을 설계하는 데 사용되는 원리이다. I 이용 가능한 (Basically Available) I 소프트 상태 (Soft state) I 궁극적 일관성 (Eventual consistency) I 데이터베이스가 BASE를 지원하면 CAP 관점에서 A+P를 만족하게 된다. I BASE는 ACID에 의해 요구되는 일관성 제약을 완화하고 낙관적 동시성을 활용한다. BASE - 이용 가능한 I 데이터베이스가 “이용 가능”하다면, 해당 데이터베이스는 요청된 데이터 또는 성공/실패 알림의 형태로 클라이언트의 요청을 항상 확인할 수 있다.

 

BASE - 소프트 상태 I 소프트 상태는 데이터를 읽어 들일 때 데이터베이스가 일관성 없는 상태에 있을 수 있음을 의미한다. I 동일한 데이터가 다시 요청된 경우 결과가 변경될 수 있다. I 사용자의 두 번의 읽기 요청을 한 사이에 데이터베이스에 쓰기 작업이 진행되지 않더라도, 일관성을 위해 업데이트가 일어날 수 있기 때문이다.

 

BASE - 궁극적 일관성 I 궁극적 일관성은 클라이언트가 데이터베이스에 쓰기 작업을 수행한 직후에 다른 클라이언트가 읽기 작업을 요청했을 때 일관된 결과를 반환하지 못할 수도 있는 상태를 말한다. I 데이터베이스가 궁극적 일관성 상태에 도달하는 동안에는 소프트 상태에 머물러 있다

 

 

 

 

 

반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기