5주차 이론 정리
1) 클라우드 기반 NoSQL
(1) 클라우드 기반 NoSQL
- NoSQL 이란?
NoSQL은 비정형 또는 반정형 데이터를 저장하고 관리하기 위한 데이터베이스이다.
기존 관계형 데이터베이스와 달리 고정된 스키마가 없고 유연한 구조를 가진다.
특히 클라우드 환경에서는 대량의 데이터를 빠르게 처리하기 위해 NoSQL이 많이 사용된다.
대표적으로 IoT, 웹 서비스, 모바일 앱 등에서 활용된다.
(2) 반정형 데이터 (Semi-Structured Data)
반정형 데이터는 일정한 구조는 있지만 완전히 고정된 형태가 아닌 데이터를 의미한다.
예시
- 고객마다 다른 필드 존재 가능
- 동일한 컬렉션에서도 구조가 다를 수 있음
- 스키마 없이 필드 이름으로 데이터 정의
(3) 반정형 데이터 사용 사례
대표적인 활용 분야
① IoT
- 센서 데이터 수집
- 실시간 데이터 처리 필요
② 소매 및 마케팅
- 사용자 행동 분석
- 글로벌 분산 데이터 저장
③ 게임
- 사용자 점수
- 랭킹
- 통계 데이터
④ 웹/모바일 서비스
- 클릭 로그 분석
- 사용자 활동 기록
(4) 반정형 데이터 형식
- SON
- AVRO
- ORC
- Parquet
(5) JSON
JSON 가장 많이 사용되는 반정형 데이터 형식이다.
- JSON 특징
- 키-값 구조
- 가독성이 좋음
- 언어 독립적
- 데이터 크기가 작음
- JSON 데이터 타입
- 문자열
- 숫자
- Boolean
- null
- 객체
- 배열
- JSON 예시
{
"name": "Jane Smith",
"age": 35,
"city": "San Francisco",
"hobbies": ["reading", "swimming"]
}
(6) Azure Storage Account
Azure Storage Account는 클라우드에서 데이터를 저장하는 기본 단위이다.
특징
- 확장성 제공
- 다양한 데이터 유형 저장 가능
- 보안 기능 제공
- 지역 복제 지원
- 사용량 기반 요금제
(7) Azure Storage 종류
1. Blob Storage
이미지, 동영상, 로그 파일 저장
2. File Storage
파일 공유 서비스
3. Queue Storage
메시지 큐 처리
4. Table Storage
NoSQL 저장소
5. Disk Storage
가상머신 디스크 저장
2) Cosmos DB
(1) Azure Cosmos DB
Azure Cosmos DB는 Microsoft의 NoSQL 데이터베이스이다.
특징
- 다중 모델 NoSQL DB
- 빠른 읽기/쓰기 속도
- 글로벌 분산 지원
- 자동 확장 지원
(2) Cosmos DB 사용 사례
1. 웹 서비스
- 빠른 응답시간 제공
2. 게임
- 사용자 점수
- 랭킹 시스템
3. IoT
- 센서 데이터 처리
- 실시간 데이터 저장
(3) Cosmos DB API 종류
1. NoSQL API
- JSON 문서 저장
- SQL 유사 쿼리 사용
2. MongoDB API
- MongoDB 호환
3. Cassandra API
- IoT 데이터 처리
4. Gremlin API
- 그래프 데이터
5. PostgreSQL API
- 관계형 데이터 지원
(4) RU
RU는 Cosmos DB의 비용 단위이다.
특징
- 읽기/쓰기 비용 측정
- 쿼리 복잡도에 따라 RU 증가
- 초당 RU 설정 가능
예시
- 1KB 읽기 = 1RU
3) Cosmos DB 아키텍처 구성
(1) Cosmos DB 활용 구조
Python + Azure Cosmos DB 연동 가능
필수 조건
- Azure 계정
- Cosmos DB 계정
- Python 3.7 이상
(2) Cosmos DB 장점
- 빠른 응답 속도
- 글로벌 분산
- 확장성 제공
(3) Cosmos DB 단점
- 비용이 높음
- 필요한 부분에 제한적으로 사용 권장
5주차 실습 정리
1) Azure Cosmos DB의 생성
지난번에 만든 DBtest 리소스 그룹에서 작업하였다. Marketplace에 들어가 Cosmos DB를 검색하면 여러 버전이 뜬다.

배포 완료~~!!!

URL = end point = 끝점이라고 부른다.

저장을 위한 컨테이너를 생성하여 JSON을 연결할 수 있다.
바로 컨테이너 추가 보다 빠른 시작으로 따라가는 게 더 수월 하다.


Create Sample Application 버튼을 누르고 기다리면 샘플 컨테이너가 만들어진다.
DB 접속을 위해서는 키를 사용해야한다. 키는 좌측 설정 > 키 탭에서 확인할 수 있다.

이렇게 Cosmos DB 만들기 성공!
2) Azure Cosmos DB와 Pythion 코드 연결하기
파이썬 3.7 이상이 필요하다
저번 주차에 하던대로 linux 서버에 접속해 줍니다.

cosmos와 python코드를 연결하기 위해서 필요한 패키지를 다운로드하여줍니다..
설치가 안된다면 맨 뒤에 --break-system-package를 붙여 강제 실행 해보세요 잘됩니다.

Cosmos DB에 연결하기 위한 기본 정보 엔드포인트, 키, 데이터베이스 이름, 컨테이너 이름을 변수로 둡니다.

Client 정보까지 입력하고 실행하니 잘 작동합니다

Azure의 데이터 탐색기에서 추가된 컨테이너와 JSON 내용을 확인할 수 있습니다.

이제 컨테이너에 데이터를 삽입해 보도록 하겠습니다@

데이터를 입력할 때는 JSON 형식으로 작성해야 합니다. 따라서 딕셔너리 주소처럼 키:값 구조를 사용합니다.


정상적으로 추가되었음을 확인할 수 있습니다. 이제 컨테이너에 추가된 내용을 쿼리문을 통해 가져와 보도록 하겠습니다.


이렇게 CosmosDB를 통해 쿼리문으로 데이터를 조회/삽입할 수 있습니다. 하지만 삽입 비용이 다른 방식들보다 비용이 큼으로 삽입이 많은 서비스에서 사용하기에는 바람직하지 않습니다. 데이터베이스를 선택할 때는 서비스의 용도를 고려하여 선택하는 것이 매우 중요합니다.
끝!!