최우영 기초 자료 수집 데이터가 증가함에 따라 서비스는 필연적으로 저장소 의 확장을 요구한다. 클라우드 서비스 Facebook – 5 억명 이상의 가입자 Google – 500 PB/Month Flicker – 500 만개 이상의.

Slides:



Advertisements
Similar presentations
이혁재 /KASA NoSQL. 요약 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머 NoSQL 소개 데이타베이스 관련 문서 대상 : 클라이언트 프로그래머.
Advertisements

1 08 시스템 구성도 고려사항 * 웹 서버 클러스터 구성  클러스터 구축은 ㈜ 클루닉스의 Encluster 로 구축 (KT 인증,IT 인증 획득, 실제 클러스터 구축 사이트 200 여곳 )  웹 서버 클러스터는 Dynamic, Static, Image.
Big Data & Hadoop. 1. Data Type by Sectors Expected Value using Big Data.
영화 예매 시스템 - 많이 봤다이가 ? CSE Corp. PM 송진희 김성욱 김보람 천창영.
액체의 따른 잉크의 확산 속도 조원 : 김연주 문나래 민예담 정선주 한수경 한혜원.
사과의 갈변현상을 막는 방법 박주현 ( 지도교사 김미정 ). 서론 1. 연구 동기 2. 연구목적 및 연구문제 이론적 배경 1. 사과가 갈변하는 이유 연구 내용 및 결과 1. 연구 가설, 기간 2. 연구 내용 및 결과.
Flash SSD 강원대학교 `01 최경집.
2010 – 06 – 24 주간 보고서.
컴퓨터와 인터넷.
You YOungseok 데이터베이스 테이블 및 인덱스 You YOungseok.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
1. Windows Server 2003의 역사 개인용 Windows의 발전 과정
연결리스트(linked list).
JSP Programming with a Workbook
뇌를 자극하는 Windows Server 2012 R2
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
20장. Hyper-V 설치와 운영(64bit 전용)
MS SQL Server - 마이크로소프트 사가 윈도우 운영 체제를 기반으로 개발한 관계 DBMS
Windows Server 장. 사고를 대비한 데이터 백업.
3장. 데이터베이스 구축의 전체 과정 미리 실습하기
5장 Mysql 데이터베이스 한빛미디어(주).
교육팀 도경모 Big.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
뇌를 자극하는 SQL Server 장. SQL Server 2008 소개.
8장. 원격지 시스템 관리하기.
소리가 작으면 이어폰 사용 권장!.
Error Detection and Correction
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
HDFS와 대용량 데이터 처리 콘텐츠서비스연구팀 최완.
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
20장. Hyper-V 설치와 운영(64bit 전용)
이동식 다 관절 로봇팔 Removable Articulated robot arm
뇌를 자극하는 Windows Server 장. 장애 조치 클러스터.
5장 Mysql 데이터베이스 한빛미디어(주).
13 인덱스 인덱스의 개념 인덱스의 구조 인덱스의 효율적인 사용 방법 인덱스의 종류 및 생성 방법 인덱스 실행 경로 확인
1장. 데이터베이스 자료의 조직적 집합체_데이터베이스 시스템의 이해
Grade Server Team14. Attention Seeker
웹 어플리케이션 보안 2016년 2학기 3. Mongo db.
박성진 컴퓨터 프로그래밍 기초 [09] 배열 part 1 박성진
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
RMI Messenger 지도 : 김정배 교수님 조봉진.
뇌를 자극하는 Windows Server 2012 R2
뇌를 자극하는 Windows Server 장. 원격 접속 서버.
ADO.NET (SqlConnection, SqlCommand)
FileMaker를 이용한 데이터 관리 옥현진(KICE).
NoSQL 박훈
보고서 #7 (기한: 6/2) 2개의 스택, stk1, stk2를 이용하여 큐를 구현하라.
데이터 베이스 DB2 관계형 데이터 모델 권준영.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
균형이진탐색트리 이진 탐색(binary search)과 이진 탐색 트리(binary search tree)와의 차이점
( Windows Service Application Debugging )
“웹과 모바일을 연동한 평가 간편 시스템” vol
클러스터 시스템에서 효과적인 미디어 트랜스코딩 부하분산 정책
AT MEGA 128 기초와 응용 I 기본적인 구조.
테이블 관리 테이블 생성,수정,삭제 데이터 입력 수정, 삭제 2010학년도 2학기.
~27 윤형기 Python 프로그래밍 (보충) ~27 윤형기
광합성에 영향을 미치는 환경 요인 - 생각열기 – 지구 온난화 해결의 열쇠가 식물에 있다고 하는 이유는 무엇인가?
세션에 대해 알아보고 HttpSession 에 대해 이해한다 세션 관리에 사용되는 요소들을 살펴본다
멀티미디어시스템 제 5 장. 멀티미디어 데이터베이스 개념 IT응용시스템공학과 김 형 진 교수.
비교분석 보고서 Template 2015.
Installation Guide.
 6장. SQL 쿼리.
DBMS & SQL Server Installation
M.B.TEAM 중간 발표 (5.18) 이 제걸 백 인호.
6 객체.
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

최우영

기초 자료 수집 데이터가 증가함에 따라 서비스는 필연적으로 저장소 의 확장을 요구한다. 클라우드 서비스 Facebook – 5 억명 이상의 가입자 Google – 500 PB/Month Flicker – 500 만개 이상의 Geotag/Month

Scalability

Scale Up 의 한계 MySQL 연결과 CPU Scale up 벤치마킹 연결 16 개 이상부터 성능의 향상이 거의 없음 CPU Core 16 개 이상부터 성능 향상 거의 없음

RDBMS 의 확장 (1) 여러 개의 인스턴스를 생성 인스턴스 별로 데이터를 관리하는 파티션 모듈 개발

RDBMS 의 확장 (2) Replication 복제에 의한 확장 Master-Slave 구조 Write(n), Read(1) Partitioning(Sharding) 분할에 의한 확장 Join 불가능

NoSQL Lightweight RDBMS, `98, Carlo StrozziCarlo Strozzi SQL 인터페이스를 가지지 않는 DBMS 설계 Eric Evans 에 의해 `09 년에 다시 소개 ACID 를 보장하지 않는 비 관계형, 분산 저장소에 대 한 논의 비싼 분산 RDBMS 와 Join 연산에 대한 제약을 극복하 기 위한 대안으로 제시

NoSQL 도입 사례 FaceBook, Twitter, Digg.com Cassandra Google Big Table Yahoo Hadoop Amazon Dynamo

RDBMS vs NoSQL RDBMS ACID 보장 Scalability 에 대해 느린 성능 Scalability 에 대해 고비용 NoSQL Scalability 우선 순위 Not Only SQL

CAP 이론 (1) Consistency 모든 노드가 동일한 데이터를 가진다. Availability 노드가 멈춰도 사용할 수 있다. Partition Tolerance 물리적 분산 환경에서 동작 가능하다. 모든 DBMS 는 두 가지 특성만을 가진다. Consistenc y: ACID Transaction Consistenc y: ACID Transaction Availability Partition Tolerance: Scale out Partition Tolerance: Scale out

CAP 이론 (2)

MongoDB C-P 조건 만족 Document-Oriented storage 인덱스 지원 복제 & 고 가용성 Auto-Sharding 쿼리 Map/Reduce

주제 선정 이유 클라우드 서비스의 등장 서비스의 확장성에 대한 고민들 SNS, SNG 에서의 NoSQL 도입 사례 증가 DBMS 의 확장하기 위한 방법은 무엇이 있을까 ? 기존의 RDBMS 를 대체해서 NoSQL 을 도입하려면 어 떠한 점을 미리 알아야 하는가 ?

실험 목표 RDBMS 제품군과 NoSQL 제품군간의 CRUD 성능 비 교 RDBMS 와 NoSQL 의 강점과 약점에 대해서 알아본다. CRUD 연산 분산 처리

실험 대상과 범위 RDBMS MySQL NoSQL MongoDB

실험 방법 동일한 데이터에 대해 CRUD 연산 2 개 이상의 클라이언트를 연결하여 연산 시도 MongoDB 는 싱글 노드, 멀티 노드를 구분하여 작업

추진 일정 ~5/18 계획 수립 ~5/25 환경 구축, 데이터 가공 ~6/1 MySQL CRUD 실험 ~6/8 MongoDB CRUD 실험 보고서 작성

~5/25 일정 환경 구축 데이터 가공

환경 구축 (1) VMWare 를 이용해 DBMS 설치 머신 Windows XP SP3 Intel Core2 Dual 2.5Ghz 2GB Ram 가상 머신 Windows XP SP3 512 MB Ram Single Core 12 GB HDD

환경 구축 (2) 가상 머신 별 소프트웨어 VM-MySQL MySQL x 1 VM-MongoDB Single Node MongoDB x 1 VM-MongoDB Multi Node MongoDB x 3 Config Server x 1 Router x 1

환경 구축 (3)

환경 구축 (4)

환경 구축 (5)

데이터 가공 (1) 데이터 원본 항공사의 정시 운행률과 지연 원인에 대한 데이터 레코드 수 : 494,401 개 필드 수 : 93 개 데이터 타입 : INT, DATE, TEXT

데이터 가공 (2)

데이터 가공 (3) 가공 후 데이터 레코드 수 : 494,401 개 필드 수 : 93 개 -> 50 개 각 레코드에 Unique 한 RecordNum 필드 삽입

차주 작업 MySQL, CRUD 작업 소요 시간 체크 인덱스, 비인덱스 성능 체크

~6/1 일정 MySQL CRUD 성능 측정

데이터 준비 42 만라인의 데이터 각 데이터마다 순차적으로 부여한 번호를 가짐 RecordNum 필드 1 ~ 42 만 인덱스가 없는 RecordNum 에 쿼리를 보내고 측정 RecordNum 에 인덱스를 걸고 측정

Insert – 예상 소모 시간 No Index 데이터 수에 선형적으로 증가할 것 이다. Index 데이터 수에 비례해 n^2 함수형으로 증가할 것이다.

Insert 결과 (no index) 1000 개 당 로그 평균 초 소모 ( 최소 초 최대 초 )

Insert 결과 (index) 1000 개 당 로그 평균 초 소모 ( 최소 초 최대 초 )

Insert 결론 No index 가 Index 에 비해 근소하게 빠르다 (0.001 초 ) 평균적으로는 Index 가 빨랐다. No Index 는 소모 시간이 들쭉날쭉 했다. 데이터 량이 늘어도 크게 문제가 생길 정도로 성능에 영향을 미치지 않는다.

Select – 예상 소모 시간 No Index 일정한 속도를 가질 것이다. Index No Index 보다 빠를 것이다.

Select 결과 (no index) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Select 결과 (index) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Select 결론 Index 가 No Index 에 비해 월등히 빠르다 (14 초 )

Update – 예상 소모 시간 전체적으로 Select 와 비슷한 속도를 가질 것이다. No Index 일정한 속도를 가질 것이다. Index No Index 보다 빠를 것이다.

Update 결과 (no index) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 ) 트랜잭션 Failed 발생 (timeout)

Update 결과 (index) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Update 결론 Index 가 No Index 에 비해 월등히 빠르다 (60 초 ) Select 보다 빠르다 데이터를 전송하는 시간이 없어서 결과값이 더 빠르게 나타난 것이라 예상 트랜잭션 Failed 는 데이터를 기록하며 Lock 이 걸린 것으로 예상

Delete – 예상 소모 시간 No Index 선형적으로 빨라질 것이다 Index No Index 보다 빠를 것이다.

Delete 결과 (no index) 20 개 삭제 시도 5 개의 클라이언트 모두 트랜잭션 Failed 발생 Console 에서 수행 평균 시간 초, 최소 초 최대 초

Delete 결과 (index) 20 개 삭제 평균 초 소모 ( 최소 초 최대 초 )

Delete 결론 Index 가 No Index 에 비해 월등히 빠르다 (22 초 ) 동시 접속 시 문제가 발생 각자가 Lock 을 요구하여 문제가 발생 된 것으로 봄.

차주 작업 MongoDB, CRUD 작업 소요 시간 체크 분산 처리 성능 확인 보고서 작성

Insert – 예상 소모 시간 Single Node 데이터 수에 선형적으로 증가할 것이다. MySQL 보다 느릴 것이다. Multi Node 데이터 수에 선형적으로 증가할 것이다. Single Node 보다 빠를 것이다

Insert 결과 (Single Node) 1000 개 당 로그 평균 초 소모 ( 최소 초 최대 초 ) MySQL 보다 평균 초 빠름

Insert 결과 (Multi Node) 1000 개 당 로그 평균 초 소모 ( 최소 초 최대 초 ) Shard Key 는 각 레코드마다 고유하게 주어진 필드를 이용했다. Insert 에 실패 한 경우가 있었다.

Insert 결론 MongoDB 에서의 Insert 연산이 MySQL 에 비해 빨랐 다. Single Node 에 비해 Multi Node 가 근소하게 빠름 ( 평 균 초 ) MySQL 보다 조금 더 빠른 이유는 ACID 를 보장하지 않기 때문인 것으로 추정된다. Multi Node 로 사용할 때 가장 빠른 속도를 보이거나 가장 느린 속도를 보인다. 이는 데이터가 분산되어 저 장되면서 일어난 현상으로 추정된다.

Select – 예상 소모 시간 Single Node 일정한 속도를 가질 것이다. MySQL 보다 느릴 것이다. Multi Node Single Node 에 비해 근소하게 느릴 것이다.

Select 결과 (Single Node) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Select 결과 (Multi Node) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Select 결론 MongoDB 가 MySQL 에 비해 월등히 빠르다 ( 평균 초 ) Document 로 저장되어서 검색할 때 느릴 것이라 생각 했지만 그렇지 않았다. Single, Multi 가 크게 차이 나지 않았다.

Update – 예상 소모 시간 전체적으로 Select 와 비슷한 속도를 가질 것이다. Single Node 일정한 속도를 가질 것이다. Multi Node Single Node 보다 빠를 것이다.

Update 결과 (Single Node) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Update 결과 (Multi Node) 100 개 검색 평균 초 소모 ( 최소 초 최대 초 )

Update 결론 MongoDB 가 MySQL 에 비해 근소하게 빠르다 (0.014 초 ) Multi 가 Single 에 비해 근소하게 빠르다 (0.001 초 )

Delete – 예상 소모 시간 Single Node 선형적으로 빨라질 것이다 Multi Node Single Node 보다 빠를 것이다.

Delete 결과 (Single Node) 20 개 삭제 시도 평균 시간 초, 최소 초 최대 초

Delete 결과 (index) 20 개 삭제 평균 초 소모 ( 최소 초 최대 초 )

Delete 결론 MongoDB 가 MySQL 에 비해 근소하게 빠르다 (0.057 초 ) Single Node 가 Multi Node 에 비해 빨랐다.

최종 결론 (1) MongoDB 가 MySQL 에 비해 Insert 연산이 근소하게 빠르다.

최종 결론 (2) MongoDB 가 MySQL 에 비해 Select 연산의 속도가 빠 르다.

최종 결론 (3) 최초로 Update 쿼리를 요청할 때 시간이 오래 걸렸다. 그 이후 모든 결과가 MongoDB 가 빨랐다.

최종 결론 (4) Delete 연산은 MongoDB Single 이 가장 빨랐고, MySQL 이 가장 느렸다.

최종 결론 (5) 대부분의 성능이 MySQL 에 비해 MongoDB 가 빨랐다. ACID 보장을 위해 MySQL 이 많은 시간을 소모하는 것으로 예상된다. Single Node 와 Multi Node 간에 성능 차이는 거의 나 지 않지만, Delete 연산을 제외하고는 Multi Node 가 조금 더 빨랐다. MySQL 은 ODBC 를, MongoDB 는 C# Driver 를 사용하 였다. 드라이버의 구현상에서 성능 차이가 발생할 수 있다.

최종 결론 (6) MongoDB Multi Node 의 Insert 연산 중에 연산 실패가 일어나는 경우가 있었으므로 사용상 주의가 필요하다. MongoDB 는 저장 프로시저를 사용할 수 없고 트랜잭 션 처리에 경험을 필요로 한다. 또, ODBC 를 사용할 수 없고 전용 드라이버를 사용해 야 하므로 기존의 레거시 프로그램들은 MongoDB 로 교체하는데 추가 비용이 청구될 것이다. 그러나 분산을 목적으로 한 DBMS 를 선택한다면, 기 존의 RDBMS 에 비해 낮은 비용과 빠른 성능을 제공 하는 MongoDB 를 선택해도 충분할 것이라 생각된다.

감사합니다 Q&A