RDB 형식의 데이터구조를 이용한 OLAP Server 설계 및 구현

Slides:



Advertisements
Similar presentations
Chapter 12. 배열. 배열  동일한 항목들이 동일한 크기로 연속적으로 메모리에 저장되는 구조  동일한 자료 유형이 여러 개 필요한 경우에 이용할 수 있는 자료 구조.
Advertisements

출석수업 과제 – 총 5문제, 10월 25일 제출 정보통계학과 장영재 교수.
오라클 백업과 복구.
1. 개발 시스템 개요.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
Chapter 7 데이터웨어하우징 의사결정지원시스템.
Chapter 15 aggregates 서울시립대학교 인공지능연구실 홍성학.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
제 9 장 구조체와 공용체.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
Hybrid INDIGO project 중간보고
MySQL 및 Workbench 설치 데이터 베이스.
자료 구조: Chapter 3 (2)구조체, 포인터
7장 배열 ②.
데이터 웨어 하우스 이병규 김기훈.
마케팅 분석 시스템 개발 방법론 2004년 5월 27일 ㈜비아이솔루션 김환태
웹 로그 데이터를 이용한 다차원 질의 분석 데이터베이스 연구실 석사 3학기 김 백 선.
07 그룹 함수 그룹 함수의 개념 그룹 함수의 종류 데이터 그룹 생성 HAVING 절.
Dept. of CSE, Ewha Womans Univ.
Pilot Decision Support Suite를 사용한 매출액 분석
3.2 SQL Server 설치 및 수행(계속) 시스템 데이터베이스 master
11장. 포인터 01_ 포인터의 기본 02_ 포인터와 Const.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
자료구조: CHAP 4 리스트 (3) 순천향대학교 컴퓨터공학과 하 상 호.
프로그래밍 랩 – 7주 리스트.
TCP/IP Socket Programming…
PySpark Review 박영택.
11장. 1차원 배열.
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
C#.
13. 연산자 오버로딩.
C 프로그래밍 C언어 (CSE2035) (Chap11. Derived types-enumerated, structure, and union) (1-1) Sungwook Kim Sogang University Seoul, Korea Tel:
사용자 함수 사용하기 함수 함수 정의 프로그램에서 특정한 기능을 수행하도록 만든 하나의 단위 작업
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Quiz #7 다음 수들을 합병 정렬과 퀵 정렬 알고리즘을 이용하여 오름 차순으로 정렬하였을 때, 데이터 이동 회수를 각각 구하라. 여러분은 정렬 과정을 단계별로 보이면서 이동 회수를 추적해야 한다. 단, 퀵 정렬시에 피봇으로 배열의 왼쪽 첫 번째 원소를 선택한다. 5.
HTTP 프로토콜의 요청과 응답 동작을 이해한다. 서블릿 및 JSP 를 알아보고 역할을 이해한다.
24장. 파일 입출력.
Term Projects 다음에 주어진 2개중에서 한 개를 선택하여 문제를 해결하시오. 기한: 중간 보고서: 5/30 (5)
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
제4주 수식과 함수.
논리회로 설계 및 실험 5주차.
소프트웨어시스템 실습 다차원 데이터 구성 및 OLAP
컴퓨터 프로그래밍 기초 - 10th : 포인터 및 구조체 -
Database Management System
컴퓨터 프로그래밍 기초 - 8th : 함수와 변수 / 배열 -
5강. 배열 배열이란? 배열의 문법 변수와 같이 이해하는 배열의 메모리 구조의 이해 레퍼런스의 이해 다차원 배열
구조체 배열 실습: 평점이 최고인 학생의 정보를 출력하기
CHAP 21. 전화, SMS, 주소록.
2014년 가을학기 손시운 지도 교수: 문양세 교수님 데이터 프레임 2014년 가을학기 손시운 지도 교수: 문양세 교수님.
Canary value 스택 가드(Stack Guard).
데이터 동적 할당 Collection class.
Data Warehouse 구축 (설계 위주)
구조체 (Structure).
4장. 데이터 표현 방식의 이해. 4장. 데이터 표현 방식의 이해 4-1 컴퓨터의 데이터 표현 진법에 대한 이해 n 진수 표현 방식 : n개의 문자를 이용해서 데이터를 표현 그림 4-1.
DA :: 퀵 정렬 Quick Sort 퀵 정렬은 비교방식의 정렬 중 가장 빠른 정렬방법이다.
7주차: Functions and Arrays
Chapter 10 데이터 검색1.
11장 배열 1. 배열이란? 1.1 배열의 개요 1.2 배열의 선언과 사용.
컴퓨터 프로그래밍 기초 - 9th : 배열 / 포인터 -
구조체(struct)와 공용체(union)
Summary of Pointers and Arrays
Numerical Analysis Programming using NRs
트리 (Logical) Data Structures Linear list Tree Graph Linear structures
어서와 C언어는 처음이지 제21장.
CHAP 15. 데이터 스토리지.
 6장. SQL 쿼리.
개정판 누구나 즐기는 C언어 콘서트 제13장 동적 메모리 출처: pixabay.
fastestslowest 실제 질의문에서 사용 타입 추천 인덱스 SELECT list Default
7 생성자 함수.
6 객체.
Presentation transcript:

RDB 형식의 데이터구조를 이용한 OLAP Server 설계 및 구현 2000.5.29 데이터베이스 연구실 석사 3학기 강 주 영

목표 RDB형식의 자료구조를 기반으로 OLAP기능을 수행한다.

Sample Data Structure Star Schema Store_Dim Time_Dim Product_Dim TimeKey Store_name Region_name Country_name Store_Key Time_Dim ProductKey Month ... Time_Key Product_Dim EmployeeKey Product name Product_Key Sales_Fact TimeKey EmployeeKey ProductKey Sales Product_Key Time_Key Store_Key Dimensional Keys Multipart Key Measures Star Schema

Sample Data Structure Product dimension ( 5 members, no hierarchy ) Time dimension ( 4 members, no hierarchy ) Product_Key Product_name P1 Juice P2 P3 P4 P5 Coke Beer Soap Milk Time_Key Time_name T1 Spring T2 T3 T4 Summer Fall Winter Store dimension ( 6 members, 3 level hierarchies ) Store_Key Store_name Region_name Country_name S1 K-Mart East USA S2 S3 S4 S5 S6 Target Savons LG-Mart Kim’s-Club E-Mart West Central KOREA

Sample Data Structure Fact Table 사실테이블에 대한 인덱스는 없음 사실테이블에 대한 인덱스는 없음 Dimension Key를 position 정보 ( 정수형)으로 바꾸어서 저장 프로그램 구현 시 용이 Chunking 개념을 이용한 데이터 클러스터링에 이용가능 텍스트 모드의 파일이므로 프로그램 상에서는 바이너리 모드로 변환한 파일로 작업

Sample Queries Exact match 봄에 Target에서 판매된 비누의 판매량은? 여름에 미국 동부지역에서 판매된 맥주의 판매량은? Range Query 봄-가을 사이에 LG-Mart에서 판매된 맥주의 판매량은? Slice 여름에 각 상점에서 판매된 각 상품의 판매량은? Dice 봄과 가을에 각 상점에서 팔린 주스, 맥주, 우유의 판매량은? Pivot Row : 지역, Col : 계절, Page : 상점 형태로 현재 화면에 출력이 되고 있는 상태에서, 이를 Row : 상점, Col : 상품, Page : 계절로 바꾸시오 Drill-down Row : 지역, Col : 상품으로 화면에 출력되고 있는 상태에서, 이를 상점별 상품 판매량으로 한 단계 낮추어서 출력하시오 Roll-up Row : 상점, Col : 상품으로 화면에 출력되고 있는 상태에서, 이를 지역별 상품 판매량으로 한 단계 높여서 출력하시오 1 2 3 4 5 6 7

가정 및 구현환경 가정 구현환경 Language : C 큐브 생성을 위해 집계 테이블을 생성하는 경우 사실 테이블의 정렬이 필요한데 이 경우, 데이터 세트가 작아서 사실 테이블 전체를 메모리에 올려 놓고 in-core정렬이 가능하다고 가정한다. ( None external Sorting ) 구현하고자 하는 프로그램은 주어진 데이터 세트와 질의에 해당하는 OLAP연산만을 수행한다. 질의는 질의를 수행하는 각 함수로 수행되며, 필요한 계층정보 및 차원테이블 멤버 정보는 함수의 파라미터를 통해 주어진다. 차원정보와 차원 키 값의 matching cost무시 구현환경 Language : C input file and hierarchy table: Flat text file summary table : binary file

설계 및 구현 Modules Data Loading Fact table loading Conversion to binary mode file Reading hierarchy information Data Loading Cube Summary Operations (base table, hierarchy table) Generation Table Indexing 1 2 3 4

Data Loading Fact table loading Conversion to binary file Text mode의 사실 테이블을 읽음 Tuple형태의 구조체 배열에 데이터를 load Conversion to binary file Random access 가 가능한 binary mode file로 변환 ( indexing시 필요 ) Reading Hierarchy information store dimension에 대한 hierarchy 정보를 담고 있는 File 생성 Tree 형태의 자료 구조 필요 Table형식의 자료구조 이용 Store USA Korea East West Central K-Mart Target Savons LG-Mart Kim’s E-mart Store Region Country 1 2 3 4 5 6

Data Loading Functions 구조체 배열 void initial_array(void) struct tuple{ int pkey; int skey; int tkey; long sales; }tuples[data_MAX]; Functions void initial_array(void) void read_data(struct tuple ps[], int max ) int text_to_bin(void) int read_hierarchy(void) void sortedarray(struct tuple *ps, int I, int order) 1 1 1 3 1 1 2 2 1 1 3 4 1 2 2 1 1 3 2 5 1 3 3 6 ……. 구조체 배열 P_Key S_key R_key Sales 1 3 2 4 5 6

Cube Generation PST, STP, TPS order sorting of data Aggregation Smallest parent를 따라 aggregation해야 하나 ROLAP의 경우 aggregation 과정에 전체 tuple의 Sorting이 필수적. => 각 Sorted order을 이용하여 aggregation ALL R C P S T PR PC RT CT TP ST TPR TPC PS PST STP TPS

Cube Generation Generate separate summary data file for each group-by Functions int tuple_sort(max) void quicksort(struct tuple *ps[], int left, int right, int member) void swap (struct tuple *salesdata[], int i, int j) void innersort(int max) void cube_gen(int max) SUM15.dat PST PS PR PC P STP ALL ST RT CT S R C TPS TPR TPC TP T SUM1.dat Binary Files

Summary Table Indexing Fact table이 Index를 가지지 않으므로 summary table에 대한 indexing만 수행 Index 구조 P,S,T 차원의 계층 level수가 각각 x,y,z 라면 배 Anchor 배열의 수는 ( x+1 ) * ( y +1 ) * ( z+1) 실제 각 배열에는 group-by 명이 저장되어 있음. 질의의 요구사항에 따라 group-by name을 보고 필요한 배열 cell의 위치를 계산하는 scheme 필요 , scheme이 없는 경우 배열을 모두 scan하며 search하는 과정이 필요 scheme 설정이 어려운 경우 2차 Anchor배열을 둘 수 있음 Functions void indexing_sum(void)

Summary Table Indexing AAA AAT ACA ARA ASA ACT ART AST PAA PAT PCA PRA PSA PCT PRT SUM15.dat SUM1.dat Binary Files AAA 000 AAT 001 ASA 010 AST 011 PAA 100 PAT 101 PSA 110 PST 111 Anchor array 2 Anchor array 1

Operations Exact Match 봄에 Target에서 판매된 비누의 판매량은? ( t1, s2, p4) Function : int exact_match(pkey, skey, slevel, tkey, max ) SKEY 의 level에 따라 ( Store, Region, Country ) Store Fact table을 scanning하면서 각각의 key값을 만족하는 tuple을 선택 => 전체 Fact table을 한번 scan해야 함 Region ( Country ) SUM15.dat SUM1.dat Binary Files P1S3T1 P1S3T3 P2S3T1 P2S3T2 P2S3T3 P3S3T1 P3S3T2 P3S3T3 P1S2T1 P1S2T2 P2S2T1 P1S2T3 P2S2T2 P2S2T3 P3S2T1 P3S2T2 P3S2T3 P1S1T1 P1S1T2 P1S1T3 P2S1T1 P2S1T2 P2S1T3 P3S1T1 P3S1T2 P3S1T3 Base Cube AAA 000 AAT 001 ASA 010 AST 011 PAA 100 PAT 101 PSA 110 PST 111 Anchor array 2 Anchor array 1

Operations Range Query 봄-가을( t1-t3 ) 사이에 LG-mart(s4) 에서 판매된 맥주( p3)의 판매량은? ( Continuous range의 의미는 보통 discrete한 member 값을 가지는 dimension이 아닌 Time과 같은 dimension에서만 가능하다 ) Functions int range_query ( int tsmall, int tlarge, int store, int product ) Logic Parameter를 통해 받은 Product ( key value ), Store ( key value )에 해당하는 data 시작점을 찾는다 ( 1, 2 ) tkey = Tsmall인 tuple을 찾는다. (3) tkey >= Tsmall and tkey <= Tlarge 인동안 sales값 출력 (4) P3S4 의 시작점을 가리키는 index가 존재한다면 쓸데없는 tuple scan을 줄일 수 있다. t1 t2 t3 …. 1 2 3 4

Operations Slice 연산 Functions Logic Fast_dim, Slow_dim 설정 Key = Pkey void slice ( char key, int key_value ) Logic Fast_dim, Slow_dim 설정 Key = Pkey Key = Skey Key = Tkey Fast Dim Slow Dim

Operations Key = Pkey Key = Skey Key = Tkey

Operations Drill-Down Row : 지역, Col : 상품으로 화면에 출력되고 있는 상태에서, 이를 상점별 상품 판매량으로 한 단계 낮추어서 출력하시오 Functions void drill-down( char mode, int key_value, char key, int pole ) Logic mode에 따라 1. ALL -> 모든 region 이 모든 store level로, 이 경우 pole을 기준으로 한 slice와 동일 2. Key 에 따라 ( ‘store’, ‘region’ ) Store : hierarchy table에서 key_value에 해당하는 하위 level key 을 sub_key[]배열에 저장, 이 배열을 통해 fact table data 추출 Region : hierarchy table에서 key_value에 대항하는 하위 level key 들을 sub_key[]배열에 저장, Anchor 배열을 통해 summary table에서 data 추출

Operations ALL Store ( Region ) Fact table에서 Skey = s1, s2인 tuple검색 P1 P2 P3 P4 P5 R1 R2 R3 R4 S1 S2 S3 S4 S5 S6 Key_value에 관계 없이 Tkey ( pole ) 에 따른 Slice와 동일 Rkey = R1, R2 인 Groupby를 Anchor 테이블을 통해 검색 SUM15.dat SUM1.dat Binary Files P1 P2 P3 P4 P5 R1 R2 R3 R4 S1 S2 R2 R3 R4 Store Region Country 1 2 3 4 5 6 Fact table에서 Skey = s1, s2인 tuple검색

Operations Dice Roll-up, Pivot slice방식과 비슷하되 key가 여러 개이므로 key값들을 저장한 배열이 파라미터로 전달. 배열의 값들과 비교하면서 sales data 출력 PST order로 정렬된 데이터를 이용하므로 Product dimension을 page로 놓는다면 Fact table을 한번 scan함으로써 질의 응답 가능 Roll-up, Pivot 화면에 display 된 데이터들의 Summation 화면에 display 된 데이터들의 위치 바꿈

Conclusions & Further research ROLAP의 경우 사전연산과 실시간 연산에 대단히 많은 정렬이 필요하다. RDB에서 제공되는 Index는 OLAP연산에 있어서 꼭 필요한 것은 아니다. Index가 없는 경우 더 나은 성능을 보이는 경우도 있다. Pointer나 Summary index등을 통해 Access할 데이터 셀을 빨리 찾아낸다 할지라도 데이터가 Disk에 멀리 떨어져 있다면 Disk I/O 를 줄이기는 힘들다 => ROLAP 에 MOLAP 형식의 Chunking ( Chunk - ID 추가 ) 필요 Group-by name 을 통해 Summary index의 배열 위치를 계산해 내는 Scheme 필요