안녕하세요

빅데이터 컴퓨팅 기술 연습문제 3장 본문

Study_exam/빅데이터 컴퓨팅 기술 연습문제

빅데이터 컴퓨팅 기술 연습문제 3장

godxxy1229 2023. 4. 18. 02:44

01. RDBMS와 NoSQL의 차이점을 CAP 이론을 이용하여 설명하시오.

RDBMS(Relational Database Management System)과 NoSQL(Not Only SQL)은 데이터를 저장하고 처리하기 위한 서로 다른 방식의 데이터베이스 시스템이다. CAP 이론은 분산 시스템에서 일관성(Consistency), 가용성(Availability), 네트워크 분할 허용성(Partition tolerance)의 3가지 속성 중 2가지만을 보장할 수 있다는 것을 말한다.

 

먼저, RDBMS는 일관성(Consistency)과 네트워크 분할 허용성(Partition tolerance)을 보장한다. 일관성을 보장하기 위해 ACID 트랜잭션(Transaction)을 사용하며, 데이터를 정규화하여 관계를 유지한다. 이러한 특징으로 인해 RDBMS는 정확하고 일관된 데이터를 필요로 하는 시스템, 예를 들면 금융권, 은행 등에서 많이 사용된다. 그러나, 이로 인해 가용성(Availability)이 떨어질 수 있다. 만약 네트워크에 문제가 발생하면 해당 노드와 연결된 사용자는 서비스를 이용할 수 없게 된다.

 

반면, NoSQL은 가용성(Availability)과 네트워크 분할 허용성(Partition tolerance)을 보장한다. 가용성을 보장하기 위해 데이터를 복제하고, 분산 처리를 하여 데이터의 처리량을 높인다. 이러한 특징으로 인해 NoSQL은 대규모 분산 시스템에서 많이 사용된다. 그러나, 이로 인해 일관성(Consistency)이 떨어질 수 있다. 데이터 복제로 인해 일시적으로 데이터가 불일치할 수 있고, 이를 해결하기 위해 BASE(Basically Available, Soft-state, Eventually consistent) 모델을 사용한다.

 

결론적으로, RDBMS와 NoSQL은 각각 일관성과 가용성 중 하나를 보장하는 특징을 가지고 있다. 분산 시스템에서는 네트워크 분할이 발생할 가능성이 높기 때문에 NoSQL이 더 적합한 선택일 수 있다. 그러나 데이터의 일관성이 매우 중요한 경우에는 RDBMS를 사용하는 것이 더 적합할 수 있다.

 

 

요약: RDBMS는 일관성, NoSQL은 가용성을 보장하며, 둘 다 네트워크 분할 허용성을 보장한다. RDBMS는 정확하고 일관된 데이터를 유지하며 NoSQL은 대규모 분산 시스템에서 많이 사용된다.

 

 

02. NoSQL의 기술적 특성 네 가지를 나열하고, 각 특성을 설명하시오.

특성 내용
無 스키마 ● 데이터를 모델링하는 고정된 데이터 스키마 없이 키 Key 값을 이용하여 다양한 형태의 데이터 저장 및 접근 가능
● 데이터 저장 방식은 크게 열 Column 값Value, 문서 Document, 그래프 Graph 등의 네 가지를 기반으로 구분
탄력성  시스템 일부에 장애가 발생해도 클라이언트가 시스템에 접근 가능
 응용 시스템의 다운타임이 없도록 하는 동시에 대용량 데이터의 생성 및 갱신
 질의에 대응할 수 있도록 시스템 규모와 성능 확장이 용이하며, 입출력의 부하를 분산시키는 데도 용이한 구조
질의 기능 수십 대에서 수천 대 규모로 구성된 시스템에서도 데이터의 특성에 맞게 효율적으로 데이터를 검색. 처리할 수 있는 질의 언어, 관련 처리 기술, API 제공
캐싱 ● 대규모 질의에도 고성능 응답 속도를 제공할 수 있는 메모리 기반 캐싱 기술을 적용하는 것이 중요
● 개발 및 운영에도 투명하고 일관되게 적용할 수 있는 구조

 

 

03. NoSQL 제품들을 데이터 모델 기준으로 구분하고, 각 모델을 간략히 설명하시오.

데이터 모델 설명 제품 예
<키, 값> 저장 구조 ●가장 간단한 데이터 모델
● 범위 질의는 사용이 어려움(DB에서 지원하면 사용 가능)
 응용 프로그램 모델링이 복잡함
아마존 DynamoDB
아마존 S3
문서 저장 구조 ● 문서에는 다른 스키마가 있음
● 레코드 간의 관계 설명이 가능
● 개념적으로 RDBMS와 비슷
아마존 SimpleDB
아파치 CouchDB
MongoDB
열 기반 저장 구조 ● 연관된 데이터 위주로 읽는 데 유리한 구조
● 하나의 레코드를 변경하려면 여러 곳을 수정해야 함
● 동일 도메인의 열 값이 연속되므로 압축 효율이 좋음
● 범위 질의에 유리
아파치 Cassandra

 

 

04. 다음 중 하둡 및 HDFS를 잘못 설명한 것은?

 ① 아파치 재단에서 분산 컴퓨팅을 목적으로 시작한 프로젝트이다.

 ② 하나의 대용량 파일을 여러 개의 데이터 블록으로 분산하여 저장하는 기법을 사용한다.

 ③ 다수의 DataNode와 이를 관리하는 다수의 NameNode로 구성된다.

 ④ 데이터 손실을 방지하려고 동일한 블록을 다른 DataNode에 복제하는 기법을 사용한다.

 

 

HDFS는 다수의 DataNode와 이를 관리하는 단일 NameNode로 구성된다.

 

 

05. DynamoDB의 장점을 설명하시오.

1. AWS에서 제공하는 여러가지 기능을 사용하여 관리를 쉽게 할 수 있고, 높은 가용성을 보장한다.

2. 분산형 아키텍처로 설계되어 있어서, 수평적으로 확장이 가능하다. 즉, 필요에 따라 용량을 쉽게 늘리거나 줄일 수 있어 대규모 데이터 처리에 적합하다.

3. 모든 데이터는 SSD에 저장되기 때문에 읽기/쓰기 처리 속도가 높다.

4. 기본 데이터 모델이 속성, 항목, 테이블로 구성되고, 사용자가 원하는 형태의 데이터를 저장할 수 있는 유연한 데이터 모델 덕분에 다양한 응용 프로그램에 사용될 수 있다.

 

 

06. 10gen에서 개발한 대표적인 문서 지향 데이터베이스로 자동샤딩 기능이 있으며, BSON 형태의 데이터로 저장되는 NoSQL 제품은?

MongoDB

 

 

07. JavaScript 기반의 인터페이스를 제공하며, 양방향 복제 및 맵리듀스를 지원하여 오프라인 모드 로 사용하다 추후 동기화가 가능한 Erlang 기반의 데이터베이스는?

CouchDB

 

 

08. Cassandra의 주요 특징을 설명하시오.

● 토큰링 배경의 키 구간이 설정되어 있어 서버(노드)의 추가 및 제거만으로도전체저장 공간의 유연한 확장 및 축소가 가능하다.

● 다른 서버(노드)에 데이터 복제본을 구성하여 특정 노드에 장애가 발생해도서비스에영향을 주지 않고, 데이터가 유실되지 않는다.

● 수정·추가·삭제할 때 실제 스토리지 구조에 적용하기 전에 먼저 CommitLog에변경사항을 기록하므로 MySQL 대비 8~15배 빠른 성능을 보인다.

● 1차 인덱스는 열 집합의 열 이름, 2차 인덱스는 열의 값을 기반으로 한다.

● 데이터 전송 프로토콜로 Thrift를 사용하며, 사실상 언어에 의존 없이 모든환경에서이용 가능하다.

● 물리 파일 저장 구조로 SSTable Sorted, String, Table을 사용한다. 물리 파일을 저장하는구조자체가 1차 정렬 조건에 맞추어 사전 정렬된 형태를 유지한다.

 

 

09. 다음 중 아마존 S3를 설명한 것은?

 ① 인터넷 스토리지 서비스 중 하나로, 웹에서 데이터를 저장하고 검색할 수 있는 환경을 제공한다.

 ② 온라인 서비스이기 때문에 데이터 암호화는 제공하지 않는다.

 ③ 저장한 데이터 객체는 다른 사용자에게 공개할 수 없다.

 ④ 인터넷 개발 도구에서는 사용이 불가능한 저장 환경이다.

 

 

②: 아마존 S3는 데이터 암호화를 제공한다. 데이터를 저장할 때 SSL을 사용하여 전송 암호화를 적용하고, 서버 측 암호화(SSE) 및 고객 측 암호화(CSE)를 통해 데이터를 안전하게 보호할 수 있다.

 

③: S3에서 저장한 데이터 객체는 객체 소유자가 정한 규칙에 따라 다른 사용자에게 공개할 수 있다.

 

④: 인터넷 개발 도구에서도 S3를 사용할 수 있다. AWS SDK를 사용하여 다양한 프로그래밍 언어로 S3에 접근할 수 있다. 

 

 

10. ZooKeeper의 필요성을 서술하시오.

ZooKeeper는 분산 시스템에서 필요한 일관성과 동기화를 제공하는 분산 코디네이터이다. 분산 시스템에서는 여러 대의 서버가 함께 동작하면서 데이터를 처리하게 된다. 하지만 이렇게 여러 대의 서버가 함께 동작하다 보면 각각의 서버에서는 언제 어떤 일이 일어날지 모기 때문에 분산 시스템에서는 데이터를 처리하기 전에 서로 간의 일관성과 동기화가 필요하다.

 

이 때 ZooKeeper가 이런 분산 시스템에서 필요한 동기화와 일관성을 제공한다. 예를 들어 하둡의 분산 처리 시스템에서는 많은 노드들이 함께 작업을 수행한다. 이 때 ZooKeeper를 사용하면 분산 시스템의 상태를 감시하고 관리하며, 각 노드들 사이의 정보 전달이나 일관성 유지를 위한 선거, 잠금 등의 기능을 제공한다. 이러한 기능으로 인해 분산 시스템에서의 장애 문제를 해결할 수 있다.

 

따라서 ZooKeeper는 분산 시스템에서 필요한 일관성과 동기화를 제공하는 중요한 역할을 하며, 분산 시스템에서 사용되는 다양한 서비스들의 안정성과 신뢰성을 높이기 위해 필수적인 시스템이다.