목차

1. 비관계형 데이터에 대한 Azure Storage 탐색

2. Azure Cosmos DB의 기본 사항 살펴보기

 

 


 

비관계형 데이터에 대한 Azure Storage 탐색

<Azure Blob Storage>

 - 클라우드에서 매우 많은 양의 비정형 데이터를 Blob(이진 대형 개체)로 저장할 수 있는 서비스

 - 데이터 파일을 클라우드 기반 스토리지에 최적화된 형식으로 저장하는 효율적인 방법

 - 애플리케이션은 Azure Blob Storage API를 사용하여 데이터를 읽고 쓸 수 있음

 - 컨테이너 내 Blob을 디스크 파일 시스템에 있는 파일과 비슷하게 가상 폴더 계층 구조 구성

 - 그러나 폴더는 Blob 이름에 "/"문자를 사용하여 Blob을 네임스페이스로 구서하는 방법일 뿐

 - 가상폴더 이므로 폴더 수준작업을 수행하여 액세스를 제어하거나 대량 작업 수행 할 수 없음

 - 다음 세가지 Blob형식을 지원

  • 블록 Blob : 개별 단위로 읽거나 쓸 수 있는 가장 작은 데이터 양, 자주 변경되지 않는 큰 불연속 이진 개체 저장에 가장 적합
  • 페이지 Blob : 임의 읽기 및 쓰기 작업 최적화, 단일 페이지 저장 가능, Azure는 해당 Blob을 사용하여 가상 머신의 가상 디스크 스토리지를 구현
  • 추가 Blob : 끝에 블록을 추가만 할 수 있고 기존 블록의 업데이트나 삭제 지원 x

 - Blob 스토리지는 액세스 대기시간과 스토리지 비용의 균형을 잡는데 도움이 되는 다음 세가지 액세스 계층 제공

  • 핫 계층 : 기본 값, 고성능 미디어에 저장됨.
  • 쿨 계층 : 핫 계층에 비해 성능이 낮고 스토리지 비용이 줄어듦, 자주 액세스하지 않는 데이터에 사용
  • 보관 계층 : 가장 저렴, 대기시간 증가, 오프라인 상태로 저장됨.

 - 스토리지 계정에서 Blob의 수명 주기 관리 정책 가능

 

 

<Azure DataLake Storage Gen2>

 - 분석 데이터 레이크용 계층적 데이터 스토리지를 위한 빅데이터 분석 솔루션에서 사용됨.

 - Azure HDInsight, Azure Databricks, Azure Synapse Analytics의 Hadoop과 같은 시스템은 Azure Data Lake Store Gen2에서 호스트되는 분산 파일 시스템을 탑재

 - 해당 파일 시스템을 만들려면 Azure Storage 계정의 계층 구조 네임스페이스 사용

 

 

<Azure Files>

 -  클라우드 기반 네트워크 공유

 -  스토리지 계정에서 Azure File Storage 만듦.

 -  단일 스토리지 계정에서 최대 100TB 공유

 -  AzCopy : Azure File Storage에 파일 업로드하는 유틸리티 도구

 - 성능 계층 

  • 표준 계층 : 데이터 센터에서 하드 디스크 기반 하드웨어 사용
  • 프리미엄 계층 : 더 높은 처리량 제공. 높은 요금 청구

 - 아래 네트워크 파일 공유 프로토콜 지원

  • SMB(서버 메시지 블록)파일 공유는 여러 운영 체제에서 일반적으로 사용됨.
  • NFS(네트워크 파일 시스템) 공유는 일부 Linux 및 macOS 버전에서 사용됨. 프리미엄 계층 스토리지 계정을 사용하고 공유에 대한 액세스를 제어할 수 있는 가상 네트워크를 만들어야 함.

 

<Azure 테이블 살펴보기>

 -  Azure Table Storage : 키/값 데이터 항목이 포함된 테이블을 사용하는 NoSQL 스토리지 솔루션

 - 각 항목은 저장해야 하는 데이터필드의 열이 포함된 행으로 표현됨.

 - 관계형 데이터베이스의 테이블과 다름

 - 반정형 데이터 저장 가능

 - 테이블의 모든 행에는 고유한 키(파티션 키 및 행 키)가 있어야 하고 테이블에서 데이터를 수정하면 타임스탬프 열에 수정한 날짜 및 시간이 기록됨.

 - 외래 키, 관계, 저장 프로시저, 뷰 등 기타 개체에 대한 개념 없음

 - 비정규화됨. 각 행은 논리적 엔터티의 전체 데이터를 보유

 - 빠르게 액세스할 수 있도록 테이블을 파티션으로 분할

 - 동일한 파티션 키를 공유하는 행은 함께 저장됨.

 - 분할은 다음과 같은 방식으로 확장 성 및 성능을 향상시킬 수 있음

  • 파티션은 서로 독립적이며, 파티션에 행이 추가되거나 제거됨에 따라 확장 또는 축소될 수 있음. 테이블은 원하는 수 만큼 파티션을 포함할 수 있음.
  • 데이터를 검색할 때 검색 조건에 파티션 키를 포함할 수 있음. 이렇게 하면 검사할 데이터 볼륨의 범위를 좁히는 데 도움이 되고, 데이터를 찾는데 필요한 I/O의 양이 줄어들어 성능 향상

- Azure Table Storage 테이블의 키 : 행을 포함하는 파티션을 식별하는 파티션 키 및 동일한 파티션의 각 행에 대해 고유한 행 키라는 두 가지 요소로 구성됨.

 - 동일한 파티션의 항목은 행 키 순서로 저장됨.

 - 애플리케이션이 테이블에 새 행을 추가하는 경우 행이 테이블의 올바른 위치에 배치되도록 함.

 - 이 체계를 사용하면 애플리케이션이 단일 행을 식별하는 포인트 쿼리와 파티션의 연속 행 블록을 가져오는 범위 쿼리를 신속하게 수행할 수 있음.

 

<Azure Storage 살펴보기>

이 부분을 학습하려면 Azure 구독이 필요하다고 함...

그래서 pass ㅎ

 

Azure Cosmos DB의 기본 사항 살펴보기

 - Azure Cosmos DB는 NoSQL 데이터를 위한 확장성이 뛰어난 클라우드 데이터베이스 서비스

 

  • Azure Cosmos DB의 주요 기능 및 특징 설명
  • Azure Cosmos DB에서 지원되는 API 식별
  • Azure Cosmos DB 인스턴스 프로비저닝 및 사용

 

<Azure Cosmos DB 설명>

 - 여러 종류의 일반적인 데이터 저장소 프로그래밍 의미 체계를 사용하여 Cosmos DB 데이터베이스의 데이터로 작업할 수 있는 여러 API 지원

 - 내부 데이터 구조가 추상화되었기 때문에 개발자는 Cosmos DB를 사용하여 이미 익숙한 API를 통해 데이터를 저장하고 쿼리할 수 있음.

 - 인덱스와 분할을 사용하여 빠른 읽기 및 쓰기 성능을 제공하고 대용량 데이터로 확장 가능

 - 전역적으로 분산된 사용자가 각각 로컬 복제본의 데이터로 작업할 수 있도록 선택한 Azure 지역의 Cosmos DB 계정에 추가한 후 다중 지역 쓰기를 사용하도록 설정 가능

 

 

<Cosmos DB를 사용하는 경우>

  - 확장성이 뛰어난 데이터베이스 관리 시스템

  - 컨테이너에 파티션공간을 자동으로 할당하며, 각 파티션의 크기는 최대 10GB까지 늘릴 수 있음.

  - 인덱스는 자동으로 생성 및 유지 관리됨. 사실상 관리 오버헤드 없음.

  - Azure의 기본 서비스

  - Skype, Xbox, Microsoft 365, Azure 등 글로벌 규모의 중요 업무용 애플리케이션을 위해 많은 Microsoft 제품에서 사용되어 옴.

  - 다음과 같은 시나리오에 매우 적합

  • IoT 및 텔레매틱스 : 자주 버스트되는 작업을 통해 많은 양의 데이터 수집하는 시스템들. Azure Machine Learning, Azure HDInsight, Power BI와 같은 분석 서비스에서 데이터를 사용할 수 있음. Azure Functions를 사용하여 실시간으로 데이터 처리 가능 (데이터가 도착할 때 트리거됨)
  • 소매 및 마케팅 : Microsoft Windows 스토어 및 Xbox Live의 일부로 실행되는 자체 전자 상거래 플랫폼에 사용됨. 카탈로그 데이터 저장, 주문 처리 파이프라인 경우 이벤트 소싱에 사용
  • 게임 : 게임 내 통계, 소셜 미디어 통합 및 고득점 순위표와 같은 개인 설정 콘텐츠에서 사용. 속도 빨라야 하며, 기능 업데이트 동안 요청 속도의 대량 스파이크를 처리할 수 있어야 함.
  • 웹 및 모바일 애플리케이션 : 소셜 상호 작용을 모델링하여 타사 서비스와 통합하고 개인 설정 환경을 빌드하는데 적합. Cosmos DB SDK는 인기 있는 Xamarin 프레이워크를 사용하여 다양한 iOS 및 Android 애플리케이션을 빌드하는데 사용.

 

 

<Azure Cosmos DB API 식별>

 - Azure Cosmos DB : 관계형 및 비관계형 워크로드를 모두 지원하는 완전 관리형 및 서버리스 데이터베이스

 - PostgreSQL, MongoDB, Apache Cassandra 등 오픈 소스 데이터베이스 엔진을 사용하여 애플리케이션을 빠르게 빌드하고 마이그레이션 가능

 

<Azure Cosmos DB for NoSQL>

 - 문서 데이터 모델 작업을 위한 Microsoft의 네이티브 비관계형 서비스

 - JSON 문서 형식의 데이터 관리

 - NoSQL 데이터 스토리지 솔루션임에도 SQL 구문을 사용하여 데이터 사용

 - 예시) 아래를 쿼리하면

SELECT *
FROM customers c
WHERE c.id = "joe@litware.com"

 

아래와 같은 JSON 문서로 구성됨.

{
   "id": "joe@litware.com",
   "name": "Joe Jones",
   "address": {
        "street": "1 Main St.",
        "city": "Seattle"
    }
}

 

 

<Azure Cosmos DB for MongoDB>

 - MongoDB : 데이터가 BSON(Binary JSON) 형식으로 저장되는 데이터베이스

 - MongoDB 클라이언트 라이브러리

 - MQL(MongoDB 쿼리언어) : 개체를 사용하여 메서드를 호출하는 컴팩트한 개체 지향 구조문을 사용

 - 예시) 찾기 메서드를 사용하여 DB 개체의 제품 컬렉션을 쿼리함.

db.products.find({id: 123})

 

이 쿼리의 결과는 다음과 같음.

{
   "id": 123,
   "name": "Hammer",
   "price": 2.99
}

 

 

 

<Azure Cosmos DB for PostgreSQL>

 - 확장성 있는 앱을 빌드하는데 도움이 되도록 데이터를 자동으로 분할하는 전역으로 분산된 관계형 데이터 베이스

 - 다른데서도 PostgreSQL(RDBMS)에서와 동일한 방식으로 단일 노드 서버 그룹에서 앱 빌드를 시작할 수 있음

 - 앱의 확장성 및 성능 요구 사항이 증가함에 따라 테이블을 투명하게 배포하여 여러 노드로 원활하게 확장할 수 있음.

 - 예시) RDBMS여서 Pass

 

 

 

<Azure Cosmos DB for Table>

 - Azure Table Storage와 유사한 키-값 테이블의 데이터로 작업하는데 사용됨.

 - Azure Table Storage보다 확장성, 성능 좋음

 - 예시)

언어별 SDK 중 하나를 통해 Table API를 사용하여 서비스 엔드포인트를 호출한 후 테이블에서 데이터를 검색할 수 있음.

https://endpoint/Customers(PartitionKey='1',RowKey='124')

 

 

 

<Azure Cosmos DB for Apache Cassandra>

 - 열 패밀리 스토리지 구조

 - 열 패밀리 : 관계형 데이터베이스의 테이블과 유사. 모든 행에 동일한 열을 포함해야 하는 것은 아님.

 - 예시)

SELECT * FROM Employees WHERE ID = 2

 

 

 

<Azure Cosmos DB for Apache Gremlin>

 - 그래프 구조의 데이터와 함께 사용됨.

 - 엔터티가 연결된 그래프에서 노드를 형성하는 꼭짓점으로 정의됨. 

 - Gremlin 구문에는 꼭짓점 및 엣지에서 작동하는 함수가 포함되어 있어서 그래프에서 데이터를 삽입, 업데이트, 삭제 및 쿼리할 수 있음.

- 예시) 

g.addV('employee').property('id', '3').property('firstName', 'Alice')
g.V('3').addE('reports to').to(g.V('1'))
g.V().hasLabel('employee').order().by('id')

 

 

 

 

<Azure Cosmos DB 살펴보기>

  - Azure 구독 필요하여 pass

+ Recent posts