글로벌 블루칩 _001(굿피티)

Similar documents
@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

DBMS & SQL Server Installation Database Laboratory

DB진흥원 BIG DATA 전문가로 가는 길 발표자료.pptx

untitled

13주-14주proc.PDF

10.ppt

3 S Q L A n t i p a t t e r n s Trees/intro/parent.sql CREATE TABLE Comments ( comment_id SERIAL PRIMARY KEY, parent_id BIGINT UNSIGNED, comment TEXT

Microsoft PowerPoint - 10Àå.ppt

단답형 (26 회기출문제 ) 1. 아래와같은테이블이있을때아래의 SQL 결과에대해서 Oracle, SQL Server 순서로적으시오 TAB1 COL1 CHAR(10) COL2 CHAR(10) INSERT INTO TAB1 VALUES ('1',''); INSERT INT

Spring Boot/JDBC JdbcTemplate/CRUD 예제

[Brochure] KOR_TunA

RDB개요.ppt

금오공대 컴퓨터공학전공 강의자료

빅데이터분산컴퓨팅-5-수정

NoSQL

Microsoft Word - [Unioneinc] 특정컬럼의 통계정보 갱신_ _ldh.doc

MySQL-.. 1

<4D F736F F F696E74202D E DB0FCB0E820BBE7BBF3BFA120C0C7C7D120B0FCB0E820B5A5C0CCC5CDBAA3C0CCBDBA20BCB3B0E8>

Open Cloud Engine Open Source Big Data Platform Flamingo Project Open Cloud Engine Flamingo Project Leader 김병곤

Microsoft PowerPoint - Oracle Data Access Pattern.ppt

I T C o t e n s P r o v i d e r h t t p : / / w w w. h a n b i t b o o k. c o. k r

RUCK2015_Gruter_public

DocsPin_Korean.pages

윈도우시스템프로그래밍

강의 개요

PowerPoint 프레젠테이션

MS-SQL SERVER 대비 기능

歯sql_tuning2

Microsoft PowerPoint Python-DB

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL


5장 SQL 언어 Part II

Microsoft PowerPoint - CNVZNGWAIYSE.pptx

5 주차 -mongodb 설치잠깐! CAP 이론 NoSQL이나온이유와 MongoDB NoSQL의데이터저장구조에따른세가지분류 RDBMS와 NoSQL특성비교 RDBMS와 NoSQL의사용시기 MongoDB 소개및특징 MongoDB와 RDBMS와의공통 MongoDB CRUD

TITLE

InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

ALTIBASE HDB Patch Notes

Bind Peeking 한계에따른 Adaptive Cursor Sharing 등장 엑셈컨설팅본부 /DB 컨설팅팀김철환 Bind Peeking 의한계 SQL 이최초실행되면 3 단계의과정을거치게되는데 Parsing 단계를거쳐 Execute 하고 Fetch 의과정을통해데이터

Tablespace On-Offline 테이블스페이스 온라인/오프라인

김기남_ATDC2016_160620_[키노트].key

슬라이드 1

윈도우시스템프로그래밍

빅데이터_DAY key

Ubiqutious Pubilc Access Reference Model

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

WINDOW FUNCTION 의이해와활용방법 엑셈컨설팅본부 / DB 컨설팅팀정동기 개요 Window Function 이란행과행간의관계를쉽게정의할수있도록만든함수이다. 윈도우함수를활용하면복잡한 SQL 들을하나의 SQL 문장으로변경할수있으며반복적으로 ACCESS 하는비효율역

Spring Data JPA Many To Many 양방향 관계 예제

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

슬라이드 1

6장. SQL

다양한 예제로 쉽게 배우는 오라클 SQL 과 PL/SQL

PowerPoint 프레젠테이션

PowerPoint Template

Microsoft PowerPoint - 27.pptx

목차 BUG 문법에맞지않는질의문수행시, 에러메시지에질의문의일부만보여주는문제를수정합니다... 3 BUG ROUND, TRUNC 함수에서 DATE 포맷 IW 를추가지원합니다... 5 BUG ROLLUP/CUBE 절을포함하는질의는 SUBQUE

<3938C8A35FB0F8C7D05FC6AEB7BBB5E55F E F4E6F73716C5FB8A65FC0CCBFEBC7D15FC0AFB4D65FC5D7BDBAC6AE5FB9E6B9FD5F F312E687770>

USER GUIDE

SQL Tuning Business Development DB

위세아이텍_iOLAP_

MySQL-Ch10

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

강의 개요

90

슬라이드 제목 없음

PowerPoint Presentation

제목 레이아웃

Microsoft Word - PLSQL.doc

쉽게 풀어쓴 C 프로그래밊

CONTENTS Volume 테마 즐겨찾기 빅데이터의 현주소 진일보하는 공개 기술, 빅데이터 새 시대를 열다 12 테마 활동 빅데이터 플랫폼 기술의 현황 빅데이터, 하둡 품고 병렬처리 가속화 16 테마 더하기 국내 빅데이터 산 학 연 관

빅데이터시대 Self-BI 전략 이혁재이사 비아이씨엔에스

객관식 1. 아래의쿼리를만족하는결과를가장잘설명한것은? SELECT A.* FROM HR.EMPLOYEES A, HR.EMPLOYEES B WHERE 1=1 AND A.MANAGER_ID = B.EMPLOYEE_ID AND B.SALARY >= ANY A.SALARY;

FileMaker 15 ODBC 및 JDBC 설명서

DW 개요.PDF

소프트웨어공학 Tutorial #2: StarUML Eun Man Choi

슬라이드 제목 없음

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

문서의 제목 나눔고딕B, 54pt

ETL_project_best_practice1.ppt

제목을 입력하세요.

Microsoft Word - SQL튜닝_실습교재_.doc

Object Oriented Analyis & Design Training Agenda

Relational Model

Microsoft Word - Software Project Database Design_ver1.01_.docx

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

Microsoft PowerPoint - web-part03-ch19-node.js기본.pptx

Chap7.PDF

Microsoft PowerPoint - 8주차.pptx

make life game.doc

금오공대 컴퓨터공학전공 강의자료

FlashBackt.ppt

PowerPoint 프레젠테이션

Observational Determinism for Concurrent Program Security

Intra_DW_Ch4.PDF

thesis

Microsoft PowerPoint _정규화

Microsoft PowerPoint - Database.ppt

Global Bigdata 사용 현황 및 향후 활용 전망 빅데이터 미도입 이유 필요성 못느낌, 분석 가치 판단 불가 향후 투자를 집중할 분야는 보안 모니터링 분야 와 자동화 시스템 분야 빅데이터의 핵심 가치 - 트랜드 예측 과 제품 개선 도움 빅데이터 운영 애로 사항

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

PowerPoint Presentation

Transcription:

Big Data 환경의데이터모델링방안 NoSQL 비투엔컨설팅 / 서동재 2013. 09. 08

주제 : Big Data 환경의데이터모델링방안목표 : 1. 기존 ER모델과 NoSQL 모델에대한비교분석을통해정확한차이점인지 2. NoSQL 중카산드라모델링을살펴봄으로써빅데이터모델링개념이해 NoSQL : Cassandra 1.2.5 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 知彼知己百戰百勝 ( 지피지기면백전백승 ) NoSQL 모델링의기초 - 실전 - 사례 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? NoSQL 모델링의현재와미래 6. 마치면서 1

목차 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? 6. 마치면서 1.1 ER 모델이란? 1.2 NoSQL 모델이란? 1.3 ER vs NoSQL 모델차이점과시사점 2

1.1 ER 모델이란? ER 모델의정의 (Entity-Relationship) 개체와개체간의논리관계의집합을표현하는모델링기법 1 Entity Relationship 모델 1 개체-관계로구성 2 ( 정규화규칙 ) 실체와실체간의관련을표현하는도식 개체 3 관계 개체 2 정규화된모델 (Normalized Model) 1NF, 2NF, 3NF BCNF 4 일관성, 중복방지 3 조인과트랜잭션존재 (Joins and Transactions) 개체간의관계를이용한조인 속성 속성 속성 데이터변경을위한논리적작업단위존재 5 독립적 4 관계모델로데이터오류를상당부분예방함 일관성체크 중복방지, 참조무결성 어플리케이션 어플리케이션 5 어플리케이션에독립적인설계 어플리케이션특이성과독립적인데이터구조설계 3

1.2 NoSQL 모델이란? NoSQL 정의 (Not Only SQL) RDB 에적합하지않으면 RDB 에얽매이지말고용도에맞는데이터저장구조를사용 1 NoSQL 모델 1 Key / Value로구성 2 ( 비정규화 ) Key/Value Key/Column Family Key1 Value1 Value2 Value3 Document / Graph 등등 2 비정규화 정규화가의미없음 4 X 3 No 조인 3 No 조인, No 트랜잭션 Key2 Value1 Value2 Value3 관계가없으므로참조무결성도조인도없음 No 조인, No 트랜잭션 5 최적화 4 데이터무결성 / 정합성보장어려움 어플리케이션 Column Value Column Family Json /xml Document 관계가없으므로참조무결성도조인도없음 필요하다면어플리케이션에서처리하게설계 5 어플리케이션에최적화된설계 데이터는동일한데어플리케이션이완전히바뀌는경우 4

1.3 ER 모델 vs NoSQL 모델차이점과시사점 관점 ER 모델링 NoSQL 모델링비고 설계목적 정형화된업무의데이터무결성 / 정합성 / 일관성있는저장구조설계 대용량데이터에서빠른응답성능과확장성, 가용성좋은저장구조설계 저장구조에대한설계 구성요소 개체, 관계, 속성 Key, Value, Column 관계를제외하고대응되는부분존재 정규화 1NF, 2NF, 3NF, BCNF 정규화개념없음 조인과트랜잭션 조인존재 트랜잭션존재 No 조인 No 트랜잭션 참조무결성 참조무결성존재 참조무결성없음 어플리케이션 어플리케이션특이성에독립적으로설계 어플리케이션에최적화된설계 1. ER 모델링과 NoSQL 모델링은서로많이다르고새로운관점으로해석해야한다. 2. 하지만기본적으로저장구조에대한설계이므로비슷한부분이존재한다. 5

목차 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? 6. 마치면서 2.1 Cassandra 개요 2.2 Cassandra 기본개념 2.3 Column Family 유형 2.4 복합키 (Composite Key) 의특징 2.5 Cassandra Simple 모델링 2.6 Column Family 생성및변경테스트 6

2. Cassandra 모델링을배워보자 2.1 Cassandra 개요 1) Cassandra 란? 구분 NoSQL - 컬럼패밀리형태의 NoSQL 데이터베이스 Key/Value - Twitter, ebay, Cisco 등천여개가넘는 조직에서사용되는 Big Data 인프라 ColumnFamily Document Graph 2) Cassandra 데이터구조 - Key, Column, Column Family 구조를가짐 Keyspace - Keyspace는논리적으로 Column Family를묶어주는개념 Column Family Row Key Column Column Column Column 7

2. Cassandra 모델링을배워보자 2.2 Cassandra 기본개념 1) Cassandra Elements ER 모델 Cassandra 모델비고 Database Table Primary Key Column Name Column Value Keyspace Column Family(CF) Row Key Column Name/Key Column Value Name/Value/Timestamp 로구성 2) Column Family 구조 Column Family 2 1 - Row Key 로정렬하여저장 3 2 - Column Key로정렬하여 저장 3 - Column의수는제한이없음 1 8

2. Cassandra 모델링을배워보자 2.3 Column Family 유형 1) 기본형 (CF) 1 1 - 컬럼의중첩이없는단순형 ( 기본형 ) 2) 슈퍼컬럼패밀리 (SCF) 2 3 2 - Column Family안에 Column Family가들어가는형태 ( 중첩된형태 ) 3 - Super Column의한서브컬럼만읽을수없으며, 하위서브컬럼을같이읽어야함 - 서브컬럼이수천개가넘는다면권장하지않음 ( 성능문제발생 ) 3) 복합키 (Composite Key) 가장중요뒷장에상세하게설명 4 5 4 - Userid:lastupdate 같은형태로복합키를구성하고값을저장하는방식 5 - 복합키별로값의접근가능 - 슈퍼컬럼페밀리의대안이될수있음 9

2. Cassandra 모델링을배워보자 2.4 복합키 (Composite Key) 의특징 Single-Key 테이블 Composite Key 테이블 생성 CQL) create table emp ( emp_id varchar PRIMARY KEY, salary bigint, job varchar ); 생성 CQL) create table emp ( dept_id varchar, emp_id varchar, salary bigint, job varchar, PRIMARY KEY (dept_id, emp_id) ); emp1 dept_id dept0 salary 500 jab { } dept0 More Emps More Columns emp2 emp1 500 job { } emp2 600 job { } emp3 400 job { } 2 dept_id dept0 salary 600 jab { } emp3 dept_id dept0 salary 400 jab { } 1. 1 Single-Key 테이블은직원이추가될때 row로증가한다. 2. 2 Composite Key로구성할경우직원이추가되면컬럼으로증가한다. 1 More Emps More Rows Key 구조에따라 row 또는 column으로데이터증가 10

2. Cassandra 모델링을배워보자 2.4 복합키 (Composite Key) 의특징 - 예시 Tweets 컬럼패밀리 tweet_id author body 1742 홍길동 NoSQL 시대열린다. 1765 이순신 빅데이터전문가가뜬다. 1778 강감찬 그래도 RDB가최고다. CREATE TABLE tweets ( tweet_id uuid PRIMARY KEY, author varchar, body varchar ); timeline 컬럼패밀리 Row Key 1 Remaining Key user_id tweet_id author body 김철수 1765 이순신 빅데이터전문가가뜬다. 김철수 1742 홍길동 NoSQL 시대열린다. 이영희 1778 강감찬 그래도 RDB가최고다. 이영희 1742 홍길동 NoSQL 시대열린다. CREATE TABLE timeline ( user_id varchar, tweet_id uuid, author varchar, body varchar, PRIMARY KEY (user_id, tweet_id) ); Timeline Physical Layout 2 Clustered by tweet_id 1. 1 복합키구성 - Row Key + Remaining Key 김철수 이영희 [1765,author] : 이순신 [1778,author] : 강감찬 [1765, body] : 빅데이터전문가가뜬다. [1778, body] : 그래도 RDB 가최고다. [1742,author] : 홍길동 [1742,author] : 홍길동 [1742, body] : NoSQL 시대열린다. [1742, body] : NoSQL 시대열린다. 2. 2 Remaining Key로 Clustered - 두번째로지정한컬럼값으로모여서저장됨 11

2. Cassandra 모델링을배워보자 2.5 Cassandra Simple 모델링 Step 1 Column Family 설계기본원칙 - Column Family는하나의 Row Key를가져야한다 (PK와유사, CF 설계에서가장중요 ) - Column을구성해야한다.(Column은항상 Name, Value, timestamps로구성 ) Step 2 예시로 Contact( 주소록 ) 을설계한다면.. - Row Key 는 cnct_id 로유일하게생성 Name Value Timestamp Email : gdhong@b2en.com : 1320405627458000 Address : Gyeonggi-do : 1320405627458000 Column Name : byte[] value : byte[] timestamp Step 3 Name : Gildong Hong : 1320405627458000 Cassandra 의 Contact 의구조는다음과같다. [Row Key] c001 [Row Key] c002 Email Address Name gdhong@b2en.com 20405627458000 Gyeonggi-do 1320405627458000 Email Address Name sslee@b2en.com 20405627458000 Seoul 1320405627458000 Gildong Hong 1320405627458000 Sunsin Lee 1320405627458000 12

2. Cassandra 모델링을배워보자 2.6 Column Family 생성및변경테스트 1) 생성 3) 변경및삭제 2 CREATE COLUMNFAMILY Contact ( cnct_id varchar PRIMARY KEY, address varchar, email varchar, name varchar ); 2) 입력 1 INSERT INTO Contact (cnct_id, email) VALUES ( c001', gdhong@b2en.com ); INSERT INTO Contact (cnct_id, address) VALUES ( c001', Gyeonggi-do') ; INSERT INTO Contact (cnct_id, name) VALUES ( c001', Gildong Hong ); SELECT * FROM Contact ; cnct_id address email name c001 Gyeonggi-do gdhong@b2en.com Gildong Hong -- INSERT 를이용한값변경 INSERT INTO Contact (cnct_id, name) VALUES ( c001', HI~ Gildong ); SELECT * FROM Contact ; cnct_id address email name c001 Gyeonggi-do gdhong@b2en.com HI~ Gildong -- UPDATE 를이용한값변경 UPDATE Contact SET name = HongGildong WHERE cnct_id = c001 ; SELECT * FROM Contact ; cnct_id address email name c001 Gyeonggi-do gdhong@b2en.com HongGildong DELETE name FROM Contact WHERE cnct_id = c001 ; SELECT * FROM Contact ; cnct_id address email name c001 Gyeonggi-do gdhong@b2en.com 1 Row Key를기준으로데이터입력 2 데이터의변경 / 삭제 / 조회도 Row Key로만가능 - 기본형컬럼패밀리를생성하고 cnct_id 를 Row Key로생성 - Row Key를이용하여 Insert/update를통해값을변경할수있음 - 데이터는 Row Key를기준으로입력됨 - 삭제 / 조회도 Row Key를이용함 13

목차 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? 6. 마치면서 3.1 ER 모델을 NoSQL 모델로변경 3.2 Key가아닌조건을사용할경우 3.3 Join이필요할경우 3.4 Group By를할경우 3.5 Advanced 모델링 14

3. ER 모델을 NoSQL 모델로변경해보자. 3.1 ER 모델을 NoSQL 모델로변경 ER 모델 NoSQL 모델 emp emp_id emp_name birth_date city dept_id (FK) dept dept_id dept_name Column Family : emp Key : emp_id Col : emp_name Col : birth_date Col : city Col : dept_id Column Family : dept Key : dept_id Col : dept_name Relation 없음 Emp 테이블 emp_id emp_name Birth_date City Dept_id 5 홍길동 1970/01/01 서울 12 7 강감찬 1980/02/02 부산 13 Column Faily : Emp 5 emp_name Birth_date City Dept_id 홍길동 1970/01/01 서울 12 7 emp_name Birth_date City Dept_id 강감찬 1980/02/02 부산 13 Dept 테이블 Dept_id dept_name 12 총무부 13 영업부 Column Faily : Dept 12 dept_name 총무부 13 dept_name 영업부 No Join!! NoSQL 모델은 Relation 도없고 Join 도없다. 15

3. ER 모델을 NoSQL 모델로변경해보자. 3.2 Key 가아닌조건을사용할경우 Column Faily : Emp SELECT * FROM emp WHERE birth_date = 1970/01/01 5 7 emp_name Birth_date City Dept_id 홍길동 1970/01/01 서울 12 emp_name Birth_date City Dept_id 강감찬 1980/02/02 부산 13 Point 1. 1 Secondary Index 생성 (0.8.4버전이상 ) - Key 또는인덱스컬럼만조회가능 2. 2 검색컬럼을 Key로인덱스테이블생성 1 - birth_date을 Row Key 구성한컬럼페밀리생성 - Secondary Index보다성능우수함 33 emp_name Birth_date City Dept_id Secondary Index 생성 이순신 1970/01/01 대전 10 create index emp_idx01 on emp (birth_date); 2 Column Family : Birth_Emp 5:emp_name 5:City 5:Dept_id 33Emp_name 33: 1970/01/01 홍길동서울 12 SELECT * FROM Birth_Emp WHERE birth_date = 1970/01/01 ; emp_id emp_name dept_id --------+----------+----------- 5 홍길동 12 33 이순신 10 16

3. ER 모델을 NoSQL 모델로변경해보자. 3.3 조인이필요한경우 SELECT * FROM emp e, dept d WHERE e.dept_id = d.dept_id Column Faily : Emp select emp_id, emp_name, birth_date, city, $dept_id from emp where emp_id= 사원번호 Query 1회수행 Point 1. 1 Application에서조인처리로성능저하 - 조인해야하는테이블수가많을수록 IO수증가 2. 2 Denormalization 성능저하 Column Faily : Dept select dept_nm from dept where dept_id=$dept_id 1 Application 에서조인처리 Query 2 회수행 - Dept_id + emp_id 를복합키로한컬럼패밀리생성 - 한번의쿼리를수행하기때문에성능향상 emp 테이블에서 dept_id 값을읽어온후에, dept 테이블에서앞 서읽어온 dept_id 값을키로해서다시 dept_nm 을찾아와야함 2 Column Family : Dept_Emp SELECT * FROM Dept_Emp; 12 13 5:Emp_name 5:City 5:birth_date 5:dept_name 130: 홍길동 서울 1970/01/01 총무부 7:Emp_name 7:City 7:birth_date 7:dept_name 51: 강감찬 부산 1980/02/02 영업부 dept_id emp_id emp_name city --------+--------+----------+------- 12 5 홍길동 서울 12 130 유관순 서울 13 7 강감찬 부산 13 51 김유신 대전 17

3. ER 모델을 NoSQL 모델로변경해보자. 3.4 Group by 를할경우 SELECT city, count(*) FROM emp GROUP BY city Point 1. 1 복합키를이용한집계 - city + dept_name + emp_id 로복합키구성 2. 2 Key의정렬화를이용한설계 2 서울거주총무부직원 서울거주직원 1 복합키 : city + dept_name + emp_id로구성 city : dept_name : emp_id value 서울 : 총무부 : 05 --- 서울 : 총무부 : 19 --- 서울 : 총무부 : 22 --- 서울 : 영업부 : 33 --- 서울 : 영업부 : 56 --- 부산 : 총무부 : 07 --- 부산 : 총무부 : 59 --- 부산 : 영업부 : 77 --- - Row Key 와나머지컬럼들의보조정렬이결합하여 다차원인덱스효과 Column Family : City_Emp SELECT count(*) FROM City_Emp WHERE city = 서울 ; count -------- 5 서울 부산 총무부 : 05 총무부 : 19 - - - 총무부 : 07 총무부 : 59 - - - SELECT count(*) FROM City_Emp WHERE city = 서울 AND dept_name = 총무부 ; count -------- 3 18

Query 100 개 3. ER 모델을 NoSQL 모델로변경해보자. 3.5 Advanced 모델링 1 Column Family 1 Column Family 2 2 공통 Column Family 1 Column Family 3 Query Column Family 4 3 4 어플리케이션 Column Family 100 [ 응용프로그램쿼리 ] [ 컬럼패밀리 ] 문제점 1 스토리지용량증가 데이터를중복해서저장하는만큼스토리지용량이증가 문제점 3 데이터불일치발생 동일한값에대해중복해서저장하다보면컬럼패밀리간에 발생 데이터불일치발생 해결책 2 공통쿼리패스의컬럼패밀리설계 응용프로그램에서공통쿼리패스를생각하고, 쿼리패 해결책 4 시그널을통해값일치작업수행 일관성을어플리케이션을통해보장함 스에맞는컬럼패밀리생성필요 signal, de-signal, signal again(ebay 사례 ) 19

목차 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? 6. 마치면서 4.1 국내사례 : C 메신저 4.2 해외사례 : 이베이 (ebay) 20

4. 실제사례를살펴보자. 4.1 국내사례 : C 메신저 메시지박스 (SCF) 1 Row Key ( 사용자 ID) U00000001 SuperColumn : [timestamp] [ 송신자 ] 1 메시지ID 수신자 송신자 채팅방ID timestamp - - - - -. 1 Super Column Family 구조로되어있으며성능상의이유 2 Super Column은메시지가도착한시간 송신자로배열 로 Composite Key 변경할계획임 하게설계된구조임 사용자별로최근도착한메시지에보낸사람별로보여줌 Cassandra 를선택한이유 Cassandra 를활용한영역 다수의분산된서버에서확장하기쉽기때문 ( 확장성 ) 빠른 Wirte 성능을기반으로대량의데이터를다루는데효과적임 메신저친구와대화메시지저장 대화메시지를제외한기준정보성은 MySQL에 ER모델로관리 환경및특징 - 기존의슈퍼컬럼패밀리로설계된구조를 Composite Key 구조로변경하고자함 - NoSQL에대한모델링은개발자가수행함 21

4. 실제사례를살펴보자. 4.2 해외사례 : 이베이 (ebay) ItemLIke 1 UserLIke 2 itemid1 userid1 userid2 userid3 timeuuid1 timeuuid2 timeuuid3 userid1 Timeuid1 itemid1 -null- Timeuid 2itemid2 -null-.. 1 아이템에대해사용자들이마음에들었는지저장 2 ( 일반형 CF로설계 ) 사용자가마음에들어한아이템을시간순으로저장 (Composite Key 로설계 ) Cassandra 를선택한이유 Cassandra 를활용한영역 Multi-datacenter (active-active) 가용성, 확장성 쓰기성능 하둡지원 ebay 제품및항목에대한선호 사용자및상품에대한직관적그래프 많은시계열사용사례 모바일알림로깅및추적 사기탐지에대한추적등등 환경및특징 - 이베이에서는 MongoDB, Hbase, Cassandra를두루사용하고있으며솔루션별로적합한업무에사용 - 어플리케이션에서 Signal을통해일관성을유지하게설계출처 : Cassandra at ebay - Jay Patel 22

목차 1. ER 모델과 NoSQL 모델은어떻게다른가? 2. Cassandra 모델링을배워보자. 3. ER 모델을 NoSQL 모델로변경해보자. 4. 실제사례를살펴보자. 5. NoSQL 모델링은누가해야하나? 6. 마치면서 5.1 불편한진실 5.2 Big Data 전문가 5.3 NoSQL 데이터베이스의변화 5.4 우리가준비해야할역량 23

5. NoSQL 모델링은누가해야하나? 5.1 불편한진실 1 전통적인방식 (RDB) 전통적인방식 1 요구사항 독립적진행 - 비즈니스요구사항을도출하고시스템이제공할기능관점의 Use Case 모델링과저장구조적측면에서 Data 모델링을독립적으로병행해서진행 2 Use Case 모델링 Data 모델링 NoSQL 방식요구사항 Use Case 모델링순차적진행 NoSQL 방식 2 - 비즈니스질의사항을이해하는 Use Case Specific 관점의모델링을수행한후 Data 모델링을수행카산드라완벽가이드데이터모델링을먼저하고쿼리를작성하는것이아니라쿼리를모델링한다음에쿼리에맞춰데이터를조직화한다는것이핵심이다. - Eben Hewitt - Data 모델링 그렇다면 NoSQL Data 모델링은개발자가? 24

DevOps 5. NoSQL 모델링은누가해야하나? 5.2 Big Data 전문가 출처 : 빅데이터의기술영역과요구역량 역할구분수행내용요구지식 현장전문가 데이터분석가 개발자 현장분야의고객요구사항을잘이해하고있고, 고객입장에서실제업무를수행 현장전문가로부터요구사항을수집하고이들로부터요건을도출하여데이터분석과개발을위한상세설계수행 데이터분석가로부터전달받은설계문서에기반하여분석시스템을구현 Visualization Infograph IR & RecSys OLAP Tools SAS SQL RDBMS NoSQL Script Language Pig, Hive MapReduce Data Scientist 주 1) Log Aggregator NoSQL 인프라담당자 데이터분석가와개발자가필요로하는분석용데이터를준비하고이를위한대용량빅데이터인프라를운영 Hadoop Linux X86 Network 빅데이터에서도각영역별전문분야가있고개발자가모델링을하는것은과도기적인형태이며 NoSQL 모델링은데이터분석가의역할이다. 주 1) Data Scientist 는다양한전문지식을바탕으로비즈니스통찰력을제시해주고의사결정을지원하는전문가 25

5. NoSQL 모델링은누가해야하나? 5.3 NoSQL 데이터베이스의변화 기존을인력활용하려고한다. Get / Set 문 set users['jbellis']['name'] = 'Jonathan Ellis'; set users['jbellis']['birth_year'] = 1976; set users['jbellis']['phone_number'] = long(1112223333); get users['jbellis']; => (cell=birth_year, value=1976, timestamp=1370470203739000) => (cell=name, value=jonathan Ellis, timestamp=1370470203736000) => (cell=phone_number, value=00000000424b2e65, timestamp=1370470203743000) 첫째, 카산드라 CQL 지원 1. 사람들에게더많은관심을얻기위해 - NoSQL에관심있는자들을자극하기위해 - SQL에관심있는자들도자극하기위해 2. 가독성, 유지보수성우수 - ( 이미알고있어 ) 사용하기용의함 - 검증됐으며간단하고직관적임출처 : CQL : SQL for Cassandra - Eric Evans CQL(Cassandra Query Language) INSERT INTO users (user_id, name, birth_year, phone_numbers) VALUES ('jbellis', 'Jonathan Ellis', 1976, 1112223333); SELECT * FROM users; user_id birth_year name phone_number ---------+------------+----------------+--------------- jbellis 1976 Jonathan Ellis 1112223333 둘째, 맵리듀스대신 SQL 로빅데이터처리 1. 오픈소스진영 SQL 엔진지속적출시 - 클라우데라의 < 임팔라 >, 하이브의 < 하이브 QL> 2. 빅데이터에서표준 SQL 의활용 - 고급하둡개발자없이표준 SQL 을통해하둡기술활용가능 출처 : 디지털데일리 (2013.06.04) 26

5. NoSQL 모델링은누가해야하나? 5.4 우리가준비해야할역량 빅데이터분석역량 I. 쿼리와리포팅은기본이다. - 빅데이터분석역량중 91% 가가장기본이되는기술인쿼리와리포팅을선택 - 쿼리와리포팅은 RDB에서도중요하고우리가계속연마했던기술임 II. 새로운패러다임은하루아침에변하지않는다. - 쿼리 / 리포팅을비롯해데이터마이닝, 데이터시각화, 최적화등과거에도존재했던기술임 우리의현재가지고있는기술을바탕으로빅데이터기술을해석하여내것으로만들면 결론 ) 걱정하지마라! 우리는누구보다잘할수있다. 출처 : 빅데이터를활용중인기업구성원대상설문자료 (IBM 2012) 27

6. 마치면서 1. 여러자료를통해확인할수있듯이앞으로빅데이터시장은성장할것이다. - RDB시장은견고한시장이고빅데이터가대체할시장은아니다. - 그러나, 전체투자비가한정되어있고지속적으로성장한다면 RDB에게도위협적인시장이다. 2. 빅데이터는보험이다. - 현재당장하지않아도어려움은없지만변 화하는미래를위해준비해야할기술이다. 28

- Thank you - 29