전체 글 38

[요약 정리] 3-3. 데이터 마트의 구축

3-3. 데이터 마트의 구축 (순서) 팩트 테이블 - 시계열 데이터 축적하기 데이터 구조화에서 많은 부분을 차지하는 것은 팩트 테이블 작성 추가 - 새로 도착한 데이터만을 증분으로 추가 치환 - 과거의 데이터를 포함하여 테이블 전체 치환 테이블 파티셔닝 - 물리적인 파티션으로 분할 효율만을 생각하면 추가가 압도적으로 유리 추가의 잠재적인 문제 추가에 실패한 것을 알아채지 못하면 팩트 테이블의 일부에 결손 발생 추가를 잘못해서 여러번 실행하면 팩트 테이블의 일부가 중복 나중에 팩트 테이블을 다시 만들고 싶은 경우 관리가 복잡해짐 테이블 파티셔닝 잠재적인 문제가 일어날 가능성을 줄이기 위해 하나의 테이블을 여러 물리적인 파티션으로 나눔으로써 파티션 단위로 정리하여 데이터를 쓰거나 삭제할 수 있도록 한 것 자..

[요약 정리] 3-2. 쿼리 엔진

3-2. 쿼리 엔진 데이터 마트 구축의 파이프 라인 분산 스토리지에 저장된 데이터를 구조화하고 열 지향 스토리지 형식으로 저장 다수의 텍스트 파일을 읽어 들여 가공하는 부하가 큰 처리이기 때문에 Hive 이용 완성한 구조화 데이터를 결합, 집계하고 비정규화 테이블로 데이터 마트에 써서 내보냄 열 지향 스토리지를 이용한 쿼리의 실행에는 Presto를 사용함으로써 실행 시간을 단축 Hive에서 만든 각 테이블의 정보는 Hive 메타 스토어에 저장됨 Hive 뿐 아니라 다른 SQL-on-Hadoop의 쿼리 엔진에서도 공통의 테이블 정보로 참고됨 Hive에 의한 구조화 데이터 작성(csv 형식의 액세스 로그 파일을 처리할 때의 예시) Hive를 비롯한 대부분의 쿼리 엔진은 MPP 데이터베이스처럼 데이터를 내부로..

[요약 정리] 3-1. 대규모 분산 처리의 프레임워크

3-1. 대규모 분산 처리의 프레임워크 구조화 데이터와 비구조화 데이터 구조화 데이터 스키마가 명확하게 정의된 데이터 테이블의 칼럼명과 데이터형, 테이블 간의 관계등을 스키마로 정함 비구조화 데이터 스키마가 없는 데이터 텍스트, 이미지, 동영상 등 비구조화 데이터를 분산 스토리지 등에 저장하고 그것을 분산 시스템에서 처리하는 것이 데이터 레이크 개념 스키마리스 데이터 - 기본 서식은 있지만, 스키마가 정의 안됨 NoSQL 데이터베이스는 스키마리스 데이터에 대응 ex) JSON의 경우, 새로운 데이터를 받을 때마다 스키마를 정하는 것은 시간과 비용이 많이 들기 때문에 JSON은 JSON대로 저장하고 거기서 데이터 분석에 필요한 필드만을 추출 데이터 구조화의 파이프라인 - 테이블 형식으로 열 지향 스토리지에..

[요약 정리] 2-4. 데이터 마트의 기본 구조

2-4. 데이터 마트의 기본 구조 시각화에 적합한 데이터 마트 만들기 - OLAP 다차원 모델과 OLAP 큐브 데이터 집계를 효율화 다차원 모델의 데이터 구조를 MDX 등의 쿼리 언어로 집계 OLAP 큐브 - 데이터 분석을 위해 만들어진 다차원 데이터 OLAP - OLAP 큐브를 크로스 집계하는 구조 크로스 집계의 모든 조합을 미리 계산하여 데이터베이스 안에 캐시해두고, 쿼리가 실행되면 이미 집계된 결과를 반환하는 식으로 최적화 테이블을 비정규화하기 트랜잭션 - 시간과 함께 생성되는 데이터를 기록한 것, 한 번 기록하면 변화하지 않음 마스터 - 트랜잭션에서 참고되는 각종 정보, 상황에 따라 다시 쓰임 팩트 테이블과 디멘전 테이블 팩트 테이블 트랜잭션처럼 사실이 기록된 것 집계의 기반이 되는 숫자 데이터..

[요약 정리] 2-2. 열 지향 스토리지에 의한 고속화

2-2. 열 지향 스토리지에 의한 고속화 데이터 베이스의 지연을 줄이기 데이터 처리의 지연 - 지연이 적은 데이터 마트 작성을 위한 기초 지식 데이터 처리의 응답이 빠르다 == 대기시간(latency)이 적다 == 지연이 적다 지연이 적은 데이터 베이스 모든 데이터를 메모리에 올림 5GB 정도의 데이터양이라면 MySQL이나 PostgreSQL 등의 일반적인 RDB가 데이터 마트에 적합 RDB는 원래 지연이 적고, 많은 수의 클라이언트가 동시 접속해도 성능이 나빠지지 않으므로 실제 운영환경의 데이터 마트로도 우수 RDB는 메모리가 부족하면 급격히 성능 저하 → 항상 디바이스 I/O가 발생한다고 가정 '압축'과 '분산'에 의해 지연 줄이기 - MPP 기술 MPP(대규모 병렬 처리) 멀티 코어를 활용하면서 디..

[요약 정리] 1-2. 빅데이터 시대의 데이터 분석 기반

1-2. 빅데이터 시대의 데이터 분석 기반 빅데이터의 기술 분산 시스템을 활용해서 데이터를 가공해 나가는 구조 데이터 파이프라인 - 데이터 수집에서 워크플로 관리까지 차례로 전달해 나가는 데이터로 구성된 시스템 데이터 수집 - 벌크 형과 스트리밍 형의 데이터 전송 벌크 형 이미 어딘가에 존재하는 데이터를 정리해 추출하는 방법 데이터베이스와 파일 서버 등에서 정기적으로 데이터를 수집하는 데에 사용 스트리밍 형 차례차례로 생성되는 데이터를 끊임없이 계속해서 보내는 방법 모바일 애플리케이션과 임베디드 장비 등에서 널리 데이터를 수집하는 데 사용 스트림 처리와 배치 처리 스트림 처리 장기적인 데이터 분석에는 적합하지 않음 시계열 데이터베이스와 같은 실시간 처리를 지향한 데이터베이스가 자주 사용됨 배치 처리 장기..

[요약 정리] 1-1. 빅데이터의 정착

1-1. 빅데이터의 정착 분산 시스템에 의한 데이터 처리의 고속화 - 빅데이터의 취급하기 어려운 점을 극복한 두 가지 대표 기술 빅데이터 취급이 어려운 이유 데이터의 분석 방법을 모름 데이터 처리에 수고와 시간이 걸림 → 이 책에서는 알고 싶은 정보가 이미 있다는 전제하에서 그것을 '어떻게 효율적으로 실행할 것인가'를 생각하는 것이 목적 빅데이터 기술의 요구 Hadoop - 다수의 컴퓨터에서 대량의 데이터 처리 NoSQL - 빈번한 읽기/쓰기 및 분산 처리가 강점 키 밸류 스토어 - 다수의 키와 값을 관련지어 저장 도큐멘트 스토어 - JSON과 같은 복잡한 데이터 구조를 저장 와이드 칼럼 스토어 - 여러 키를 사용하여 높은 확장성 제공 Hadoop과 NoSQL 데이터 베이스의 조합 현실적인 비용으로 대규..

백준 23288 주사위 굴리기 2 (C++)

문제 링크 https://www.acmicpc.net/problem/23288 23288번: 주사위 굴리기 2 크기가 N×M인 지도가 존재한다. 지도의 오른쪽은 동쪽, 위쪽은 북쪽이다. 지도의 좌표는 (r, c)로 나타내며, r는 북쪽으로부터 떨어진 칸의 개수, c는 서쪽으로부터 떨어진 칸의 개수이다. 가장 왼 www.acmicpc.net 문제 풀이 주사위의 이동은 주사위 굴리기 1 처럼 구현했다. 그럼에도 불구하고 주사위 굴리는 부분 구현 실수한 것을 계속 발견하지 못했던 문제이다. 그것도 모르고 엉뚱한 곳에서 삽질했던 문제.. 아니 주사위 굴리기 1은 잘 풀어놓고 왜...? #include #include #include #include using namespace std; int dice[7] = ..