Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

내부 세미나 발표자료

No description
by

Do-Gyun Kim

on 30 June 2014

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of 내부 세미나 발표자료

1. What is Vertica?

2. Vertica Issue 해결 제안방안

- PK (Primary Key) 중복

- UTF-8 encoding

- Stored Procedure

3. Google Trend

Vertica vs Exadata vs Netezza vs Grenplum
1. What is Vertica?
2. Vertica Issue 해결 제안방안
PK (Primary Key) 중복
C-Store
: A Column-oriented DBMS
LG히다찌

솔루션팀 내부 세미나

일시 : 2012/12/17

발표자 : 김도균

The Vertica Analytic Database
: C-Store 7 Years Later
Table에 Primary Key(이하 PK)가 선언되어 있음에도, 동일데이터 insert를

시도하면 insert 되는 현상 발생.

Vertica는 타 DBMS와 달리 DB에서 데이터의 PK 중복여부를 처리할 수 없음.

따라서 Vertica로 데이터를 적재하기 전에, 프로그래밍 상에서 데이터의 PK중복

여부를 체크한 후 검증 완료된 데이터를 table에 적재해야 함.
1) 이슈사항 정의
해당 이슈사항을 해결하기 위한 library 또는 module이 별도로 존재하지 않음.

따라서 프로그래밍 상에서 데이터의 PK중복 여부를 체크한 후 검증 완료된

데이터를 table에 적재해야 하는 프로세스를 작성해서 처리해야 함.

현재 최선의 해결방안으로 생각됨.
2) 해결 제안 방안 (1/3)
PK중복 처리방안은 크게 3가지 내부 프로세스로 나눌 수 있음.

A => B => C 의 순서로 프로세스가 진행되어야 함.
2) 해결 제안 방안 (2/3)
A. analyze_constraints를 이용한 TEMP TABLE에 적재된

데이터에 대한 duplication 체크
B. TEMP TABLE과 TARGET TABLE의 Equal Join체크
C. TEMP TABLE과 TARGET TABLE에 동일한 데이터 존재 시에

처리방안 선택
A. analyze_constraints를 이용한 TEMP TABLE에 적재된 데이터에 대한

duplication 체크
Vertica는 DB로 데이터 적재시에는 PK에 대한 중복여부를 체크할 수는 없으나,

이미 적재된 데이터에 대해서는 PK중복여부를 체크할 수 있는 analyze_constraints라는 함수를 제공.

이 함수는 이미 적재된 테이블에 중복된 데이터가 있는지를 확인하여 결과값을 화면에 출력함.
<그림 1. 데이터 적재 시 PK중복처리방안 흐름도>
1. analyze_constraints를 사용하여 table에 중복된 데이터가 있는지 체크.

2. analyze_constraints 조회 결과로 출력된 값을 LOG_TEMP 파일에 저장한 후 해당 파일을

cat으로 읽어 ‘row’, ‘rows’ 또는 ‘행 수’의 문자열을 파싱.

3. 파싱한 값이 0이면 중복된 데이터가 없으므로 <그림 1>의 ②번으로 진행하고, 0보다

큰 경우는 중복된 데이터가 존재하는 것이므로 TEMP TABLE을 truncate 함.
B. TEMP TABLE과 TARGET TABLE의 Equal Join체크
analyze_constraints를 통해 정상적으로 검증된 TEMP TABLE의 데이터는 현재 TEMP TABLE에 적재된

데이터 중에서 PK중복이 없는 것으로 검증된 데이터 임.

그러나 이 검증된 데이터가 최종 적재테이블인 TARGET TABLE에 적재된 데이터와 비교된 것은 아님.

따라서 1차로 TEMP TABLE에 적재된 검증된 데이터를 TARGET TABLE로 옮기기 전에 TEMP와

TARGET TABLE의 Equal Join을 통해서 중복된 데이터가 있는지 확인해야 함.
C. TEMP TABLE과 TARGET TABLE에 동일한 데이터 존재 시에 처리방안 선택
UTF-8 encoding
1) 이슈사항 정의
Vertica가 지원하는 charactr encoding 타입은 UTF-8을 지원함.

다른 encoding type은 지원하지 않음. encoding type이 UTF-8이 아닌 경우

문제가 발생함.
2) 해결 제안 방안
리눅스에서 지원하는 iconv라는 명령어를 사용하여 encoding type을 변경함.
Stored Procedure
1) 이슈사항 정의
Vertica는 타 DBMS와 다르게 내장된(Internal) Stored Procedure (이하 SP)

기능을 제공하지 않고 External Procedure 라는 기능을 제공함.

그러나 External Procedure는 타 DBMS의 SP와는 차이점이 있음.

타 DBMS는 PL/SQL (Oracle), Transact-SQL (Sybase) 등의 절차적 언어

(Procedural Language)를 직접 지원하여 SP생성이 가능함. 그러나 Vertica는

절차적 언어를 직접 지원하지 않고, Shell과 SQL문이 결합된 형태의 External

Procedure 기능을 지원함. 즉, SP와 동일한 기능이 수행될 수 있도록 하는

Shell + SQL 조합형태의 Shell Script를 작성하는 것임.
2) 해결 제안 방안
SQL내에서 if~else 등의 로직 분기처리가 반드시 필요한 경우는 External

Procedure를 사용해야 하나, 단순히 파라미터 변수를 넘겨 손쉽게 sql파일을

수행하고자 하는 경우는 프로시저를 사용할 필요는 없음.

sql 파일을 사용하여 bind variable을 사용하여 수행을 하는 것이 더 용이함.
Google Trend : http://www.google.com/trends/explore#q=vertica%2C%20oracle%20exadata%2C%20ibm%20Netezza%2C%20Greenplum&date=8%2F2008%2053m&cmpt=q
참고사이트
3. Google Trend
Vertica vs Exadata vs Netezza vs Greenplum
Michael Stonebraker :
http://en.wikipedia.org/wiki/Michael_Stonebraker
Vertica :
http://en.wikipedia.org/wiki/Vertica
http://www.vertica.com
C-Store :
http://db.csail.mit.edu/projects/cstore/
Vertica
Exadata
Netezza
Greenplum
감사합니다
Full transcript