티스토리 뷰
[1] 핵심 데이터 개념 살펴보기
1. 핵심 데이터 개념 살펴보기
1) 데이터란?
- 의사 결정에 사용되는 숫자, 설명 및 관측값과 같은 팩트의 모음
2) 데이터의 분류
- 정형데이터: 일반적으로 DB에서 행과 열로 표시되는 테이블 형식의 데이터. 테이블이 있는 DB를 관계형 DB라고 함
- 반정형데이터: 관계형 DB에는 없지만 일부 구조를 갖춘 정보. '키-값' 저장소는 행과 열의 개수가 자유롭다는 점을 제외하면 관계형 DB와 유사함. ex) JSON 형식으로 저장된 문서
- 비정형데이터: 오디오 및 비디오 파일, 바이너리 파일 등
3) 프로비저닝: 데이터베이스 서버를 설정하는 작업. 서비스 공급자가 서비스를 만들고 구성하기 위해 수행하는 일련의 작업을 실행하는 동작. 서비스를 사용하려면 먼저 서비스를 프로비저닝 해야 함.
4) 클라우드 컴퓨팅에서의 데이터 정의, 저장 및 액세스
- Azure 서비스
- 정형: Azure SQL DB
- 반정형: Azure Cosmos DB
- 비정형: Azure Blob Storage
- 액세스
- r/o (Read Only)
- r/w (Read Write)
- 소유자 권한
- 사용자 정의하여 액세스 제한
- 데이터 처리 솔루션
분석 시스템 | - OLTP를 지원하는 시스템과 달리 데이터로부터 '큰 그림'을 도출하는 것을 지원 - 원시데이터를 캡쳐하고 이를 사용하여 인사이트를 도출 - 대부분 수집 - 변환/처리 - 쿼리 - 시각화와 같은 작업을 수행 |
트랜잭션 처리 시스템 | - 트랜잭션 기록 - 트랜잭션은 대용량인 경우가 많음 - 처리되는 데이터에 신속하게 액세스 할 수 있어야 함 - OLTP라고도 부름 |
* OLTP(온라인 트랜잭션 처리): 온라인 뱅킹, 쇼핑, 주문 입력 또는 텍스트 메시지 전송 등 동시에 발생하는 다수의 트랜잭션을 실행하는 데이터 처리 유형
* 트랜잭션: 원자성이 있는 작업 시퀀스. 즉, 시퀀스의 모든 작업을 성공적으로 완료해야 하며 문제가 발생할 경우 지금까지 실행된 모든 작업을 취소해야 함
EX) 은행 이체(자금 출금 이후 시스템 장애 발생 시 원래 계좌로 복구해야 함)
- 정규화: 별도의 열그룹으로 테이블을 분할하는 것
- 정규화를 사용하면 메모리에서 트랜잭션을 수행하는 데 필요한 많은 정보를 캐치하여 처리량을 높일 수 있음
- 정규화를 통해 빠른 처리가 가능하지만, 쿼리를 더 복잡하게 만들 수 있음(데이터 검사를 해야하는 작업 부담이 늘어날 수 있음)
5) 워크로드에 대한 설명
- 관계형 및 비관계형은 서로 다른 워크로드에 적합
- 관계형 DB의 주 용도는 트랜잭션 처리(트랜잭션 워크로드)
- 시작-수정-커밋 / 롤백: 각 트랜잭션에는 정의된 시작점이 있으며, 그 다음에 데이터를 수정하는 단계가 있음. 마지막으로 변경사항을 커밋하여 영구적으로 지정하거나, 다시 시도할 경우 시작점으로 롤백함
- 트랜잭션 DB는 트랜잭션을 처리하는 동안 DB를 일관되게 유지하기 위해 ACID(원자성, 일관성, 격리성, 내구성)을 준수해야 함
- ACID
- 원자성: 완전히 성공/실패하는 단일 '단위'처리를 보장. 실패하면 DB는 변경되지 않은 상태로 유지
- 일관성: 설명할 수 없는 방식으로 데이터를 유실/생성하면 안 됨. 자금 이동의 경우 어딘가에서 출금이 이루어져야 함
- 격리: 동시에 실행되는 경우, 순차로 실행된 것과 동일한 상태 유지. 동시 프로세스에서 일관되지 않은 상태의 데이터를 볼 수 없음
- 내구성: 트랜잭션 커밋 후에 정전/충돌 같은 시스템 장애가 발생하더라도 상태가 유지되도록 보장함
- 분석 워크로드
- 읽기 전용 시스템
- 데이터 분석과 의사 결정에 사용
6) 일괄처리
- 데이터를 버퍼링한 다음, 그룹으로 처리
- ex) 선거와 같이 예약된 시간 기준으로 데이터를 처리할 때
- 장점: 대용량 데이터를 편리한 시간에 처리 가능, 시스템이 유휴이거나 사용량이 적은 시간에 실행되도록 예약 가능
- 단점: 데이터 수집과 결과 사이에 시간 지연 발생, 일괄처리를 위해 입력 데이터를 준비해야 함, 일괄 작업 중 발생하는 문제는 전체 프로세스를 중단시킴
- 일괄처리의 특징
- 데이터 범위: 데이터셋의 모든 데이터를 처리
- 데이터 크기: 대량의 데이터 셋을 효율적으로 처리
- 대기시간 성능: 대기시간이 김(수신~처리에 소요되는 시간)
- 분석: 복잡한 분석 수행을 위해 사용
7) 스트리밍
- 데이터를 도착할 때마다 처리
- ex) 주식 시장의 변동을 실시간 추적, 게임에서 실시간 데이터 수집
- 스트리밍의 특징
- 데이터 범위: 최근 수신 데이터/RTW(Rolling Time Window) 내의 데이터에만 액세스 가능
- 데이터 크기: 개별 레코드, 소규모 일괄처리에 적합
- 대기시간 성능: 즉시 이루어지며 대기시간은 초/밀리초 단위
- 분석: 단순 응답 및 집계에 사용
2. 데이터 세계에서의 역할과 책임에 대해 알아보기
1) 역할
- DBA: 권한을 할당, 백업 복사본 저장, 오류 시 데이터 복원
- 데이터 엔지니어: 데이터 작업, 정리 루틴 적용, 비즈니스 규칙 식별, 파이프라인, 데이터 관련 자산 설계 및 구현
- 데이터 분석가: 합리적 의사결정을 내릴 수 있도록 지원
3. 관계형 데이터의 개념 설명하기
1) 특성
- 실제세계의 엔티티 컬렉션을 테이블로 모델링
- Entity(엔티티): 그에 대해 정보를 알거나 보유해야 하는 모언가
- 전자상거래 사례: 고객, 제품 및 주문에 대한 테이블
- 테이블에는 행이 포함되며 각 행은 단일 인스턴스를 나타냄
- 테이블의 행에는 고객 이름, 제품 ID와 같은 엔티티의 속성을 정의하는 하나 이상의 열이 있음
- 관계형 데이터베이스를 사용하는 주요 사례는 OLTP임
2) PK(기본키): 각 행을 고유하게 식별하는 열
- 모든 테이블에는 기본 키가 있어야 함
3) FK(외래키): 다른 테이블의 기본 키를 참조하거나 기본 키에 연결됨
- 테이블 간의 관계 관리, 변칙을 식별하고 방지하는 데 도움
4) 구조
- 관계형 데이터베이스는 테이블 세트로 구성됨
- 테이블 0개(테이블이 비어있음) 또는 그 이상의 행이 있을 수 있음 - 테이블 외에도 데이터 구성을 최적화하고 액세스 속도를 개선하는 데 도움이 되는 다른 구조가 포함되어 있음
- 인덱스와 뷰
5) 인덱스
- 테이블에서 데이터를 검색하는 데 도움이 됨
- 인덱스를 만들 때는 테이블의 열을 지정함
- WHERE절에서 인덱스를 사용하여 데이터를 가지고 옴
- 읽기 전용이거나 자주 수정되지 않는 데이터를 포함하는 테이블에서는 인덱스를 더 많이 만들면 쿼리 성능이 향상됨
- 일부 관계형 데이터베이스 관리 시스템은 '클러스터형 인덱스'를 지원하기도 함
- 클러스터형 인덱스를 지원하는 데이터베이스 관리 시스템에서 테이블은 하나의 클러스터형 인덱스만 가질 수 있
6) 뷰
- 뷰는 쿼리의 결과 세트를 기반으로 하는 가상 테이블
4. 비관계형 데이터의 개념 탐색
1) 특성
- 매우 유연한 방식으로 데이터를 저장
- 비관계형 데이터는 테이블 집합으로 구조화되지 않은 모든 데이터를 의미하는 포괄적 용어
- 비관계형 데이터베이스는 데이터에 스키마를 적용하지 않음
- 대신 데이터를 구성하는 방법이 아닌 데이터 자체에 집중
- 비관계형 시스템에서는 관계형 테이블이 아니라 컬렉션 또는 컨테이너에 엔티티에 대한 정보를 저장
- 서로 다른 필드 집합을 가질 수 있음
- 고정된 스키마가 없다는 것은 각 엔티티가 자기 기술적이라는 것
- 비관계형 데이터베이스를 설계할 때는 데이터베이스 관리 시스템의 기능과 이 시스템이 지원해야 하는 쿼리 유형을 이해하는 것이 중요함
2) 비관계형 데이터의 형식: 일반적으로 반구조적/비구조적 두 가지 범주로 구분
- 반구조적
- 반구조적 데이터는 필드를 포함하는 데이터
- 일반적인 방법 중 하나는 JSON 문서로 각 엔티티의 데이터를 저장하는 것
- 비구조적
- 필드를 포함하지 않는 데이터
- 비디오, 오디오 및 기타 미디어 스트림 등
3) NoSQL
- 단순히 비관계형을 의미하는 느슨한 용어
- 일반적으로 키-값 저장소, 문서 데이터베이스, 열 패밀리 데이터베이스, 그래프 데이터베이스의 네 가지 범주로 나뉨
- 키-값: 쿼리는 검색할 키를 지정, Azure Table 저장소와 Cosmos DB가 그 예시.
- 장점: 매우 빠르게 데이터 r/w, 검색 기능은 보조적, 스트림 데이터 수집에 효과적 - 문서DB: 키-문서 구조를 지니며, 일반적으로 json, xml, yaml 같은 형식을 사용하여 인코딩. Azure에서는 Core(SQL) API에서 문서 DB 방식을 구현
- 열 패밀리 DB: 행과 열로 구성. 간단한 형태의 경우 RDB와 매우 유사, Azure Cosmos DB는 Cassandra API를 통해 열 패밀리를 구현
- 장점: 스파스 데이터 구조화에 대한 비정규화된 접근 방식, 열을 열 패밀리라는 그룹으로 그룹화, RDB보다 더 적은 쿼리를 사용하여 데이터를 가져올 수 있음, 열 패밀리는 수직 분할도 별도로 저장됨(실제 스토리지의 서로 다른 영역에 보관 가능)
4) 그래프 DB
- 노드와 에지에 대한 정보를 저장
5. 데이터 분석의 개념 탐색
1) 데이터 웨어하우스 구성
- 데이터를 캡쳐하여 '랭글링'함
* 랭글링: 분석을 위해 원시데이터를 더 유용한 형식으로 변환하는 과정. 캡쳐, 필터링, 정리, 결합, 집계하는 코드 등 포함
2) 데이터 수집: 다양한 원본의 원시 데이터 스트리밍 캡쳐 민 저장
3) 데이터 처리
- ETL: 추출-변환-로드, 종속성이 없는 간단한 모델에 적합, 스트림적인 처리방식
- ELT: 추출-로드-변환, 정기적으로 일괄처리 및 종속되는 것에 적합, 클라우드에 적합한 스케일링 방식
- Azure Data Factory: 데이터 기반 워크 플로우(파이프라인)
4) 비즈니스 시각화
- BI: 비즈니스 인텔리전스(더 나은 의사결정 지원, 운영에 대한 과거/현재/예측 뷰를 제공
5) 데이터분석
- 설명적: 데이터를 기반으로 상황을 설명. KPI, ROI 같은 메트릭이 자주 사용됨
- 진단적: 현상이 발생하는 이유를 설명
- 예측: 향후 발생 상황을 예측
- 처방적: 목표 달성을 위해 수행해야 하는 작업
- 인지적: 기존 패턴에서 추론을 시도하고 결론을 도출
[2] Azure에서 관계형 데이터 살펴보기
1) Azure Data Service
- PaaS 범주에 속함. 일련의 DBMS
- 리프트 앤 시프트: 온-프레미스 to Azure VM으로 직접 DB이동
2) Azure SQL DB
- Single DB
- Elastic Pool
3) MySQL: LAMP를 위한 오픈 소스 관계형 데이터베이스
4) MariaDB: MySQL 데이터 베이스 엔진이 성능 향상되고 최적화 됨. Oracle DB와 호환성이 있음. temporal 데이터 지원
5) PostgreSQL: 하이브리드 관계형 개체 데이터 베이스
6) Azure의 관계형 데이터 쿼리하기
- SQL
- 인기있는 SQL
7) SQL문의 그룹화
- 데이터 조작 언어(DML)
- select: 선택/읽기
- insert: 삽입(한 번에 한 개 행만 가능)
- update: 수정(where을 생략하면 모든 행을 수행)
- delete: 삭제(where을 생략하면 모든 행을 삭제)
- where절: 행 기준 지정
- from 절: table 지정
- order by: 정렬
- join 절: 여러 테이블 대상
- 데이터 정의 언어(DDL)
- create: table 또는 view 개체
- alter: 개체 구조 수정, 예를 들어 table을 변경하여 column 추가
- drop: 개체 제거
- rename: 개체 이름 변경
[3] Azure에서 비관계형 데이터 탐색
1) Azure Table Storage: NoSQL 키-값 모델
- 파티션으로 분할
- 파티션키, 행 키
- 장점
- 크기 조정이 간단함. 데이터를 삽입하는 데 걸리는 시간이 동일
- 행 삽입이 빠름
- 파티션 키와 행 키를 쿼리 조건으로 하면 데이터 검색이 빠름
- 단점
- 트랜잭션 업데이트가 보장되지 않아 일관성 고려 필요
- 참조 무결성이 없어 행간 관계를 외부에서 유지관리
- 특징
- TB 단위의 데이터에 적합
- 빠른 액세스를 위해 비정규화 할 수 있는 데이터 셋 저장
2) Azure Blob Storage
- 형식
- 블록: 블록 1개의 크기는 최대 100M까지 이며 5만개까지 할 수 있고 4.7T 이상 크기 제공.
블록은 개별 단위의 가장 작은 데이터 양. 자주 변경되지 않은 바이너리를 저장하는 데 적합.
자주 변경되지 않는 불연속 개체에는 블록 Blob을 사용. - 페이지: 512Byte. 페이지를 사용하여 VM의 가상 디스크를 구현. 임의의 읽기 및 쓰기 액세스가 필요한 Blob에는 페이지 블록을 사용함.
- 추가: 오직 추가만 가능하며, 업데이트나 삭제 불가능
- 액세스 계층
- 핫: 기본 값. 자주 액세스에 사용
- 쿨: 핫보다는 자주 아님. 쿨에서 핫으로 마이그레이션 가능
- 보관: 대기시간이 증가. 핫이나 쿨은 몇 ms지만 보관은 hour가 걸릴 수 있음
3) Azure File Storage
- SMB 3.0 프로토콜을사용하여 공유
- 다른 사이트의 사용자가 파일을 공유할 수 있도록 하기 위해 사용
- Azure File Storage는 두 가지 성능 계층을 제공
- 표준 계층: 데이터 센터에서 하드 디스크 기반 하드웨어 사용
- 프리미엄 계층: SSD(반도체 드라이브)를 사용함. 프리미엄 계층은 더 높은 처리량을 제공하지만 더 높은 요금이 청구
- 여러 동시 프로세스가 한 번에 쓸 수 있는 파일에는 Azure File Storage를 사용하지 마세요. 여러 작성기는 신중한 동기화가 필요하며, 그렇지 않으면 프로세스에서 변경한 내용을 다른 프로세스가 덮어쓸 수 있습니다.
4) Azure Cosmos DB
- 다중 모델 NoSQL 데이터베이스 관리 시스템
- 이러한 모델은 문서, 그래프, 키-값 저장소, 열 패밀리 저장소와 같은 다른 구조에 데이터를 저장
- Cosmos DB는 대량의 데이터를 신속하게 수집할 수 있음
- 다중 지역 복제를 사용하는 경우, 다른 지역에서도 해당 데이터를 계속 사용할 수 있으므로 가용성이 증가함
[4] Azure에서 최신 데이터 웨어하우스 분석 살펴보기
1. 최신 데이터 웨어하우스의 구성 요소 검사
1) 데이터 웨어하우스
- 조직 내의 여러 다른 원본에서 데이터 수집
- 수집된 데이터는 분석, 보고 및 OLAP(온라인 분석 처리)의 원본으로 사용됨
- 트랜잭션 성능에 초점을 맞춘 기존 관계형 데이터베이스와 달리 복잡한 쿼리에 대한 답변을 제공하는 것
- '빅데이터'를 처리해야 함
2) 데이터 팩토리
- 하나 이상의 데이터 원본에서 데이터를 검색하여 처리에 사용하는 형식으로 변환
- 구조화된 정보가 들어있음
3) 데이터 레이크
- 분석을 위해 효율적인 형식으로 보관
- 원시 데이터가 보관됨
- Blob 스토리지의 확장으로 무한에 가까운 파일 시스템
- Hadoop과 호환 가능
4) 시냅스
- 분석엔진
- 오버헤드 없이 처리하고 로컬로 데이터를 저장시킬 수 있음
- MPP(대규모 병렬 처리) 아키텍쳐를 사용함
- MPP 아키텍쳐는 제어노드와 컴퓨팅 노드 풀로 구성
- 제어노드: MPP의 front-end, 앱과 상호작용함
- 컴퓨팅노드: 컴퓨팅 성능을 제공
- Polybase라는 기술을 사용하여 구분 기호로 데이터 검색
5) 데이터 브릭스
- Spark 환경으로 빅데이터 처리, 스트리밍 등 데이터 처리 엔진
- Spark는 메모리 내 처리에 최적화되어 있음. 데이터 로드와 캐시하여 반복적으로 쿼리 가능
6) 분석(Azure Analysis): OLAP(온라인 분석 처리)를 지원
7) MS Power BI
- Total
- Today
- Yesterday
- Abstraction
- jre
- 데이터구조
- vscode
- 익스플로러
- jvm
- 바이트코드
- 크롬
- 구글크롬
- 브라우저뜻
- 프론트엔드
- 데이터추상화
- ADL
- SWLIfeCycle
- javase
- 브라우저
- VisualStudio
- 사이트만들기
- 비주얼스튜디오
- 앱개발
- 의사코드
- SW생명주기
- 프로그래밍언어
- 소스파일
- 알고리즘
- 개발계발
- 웹개발자
- D&C
- 구현
- 기계어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |