SlideShare uma empresa Scribd logo
1 de 69
MongoDB와 MySQL의 CRUD 연산의 성능 비교 최우영 http://blog.wychoe.net
기초 자료 수집 데이터가 증가함에 따라 서비스는 필연적으로 저장소의 확장을 요구한다. 클라우드 서비스 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 Strozzi SQL 인터페이스를 가지지 않는 DBMS 설계 Eric Evans에 의해 `09년에 다시 소개 ACID를 보장하지 않는 비 관계형, 분산 저장소에 대한 논의 비싼 분산 RDBMS와 Join 연산에 대한 제약을 극복하기 위한 대안으로 제시
NoSQL도입 사례 FaceBook, Twitter, Digg.com Cassandra Google Big Table Yahoo Hadoop Amazon Dynamo
RDBMS vsNoSQL RDBMS ACID 보장 Scalability에 대해 느린 성능 Scalability에 대해 고비용 NoSQL Scalability 우선 순위 Not Only SQL
CAP 이론(1) Consistency 모든 노드가 동일한 데이터를 가진다. Availability 노드가 멈춰도 사용할 수 있다. Partition Tolerance 물리적 분산 환경에서 동작 가능하다. 모든 DBMS는 두 가지특성만을 가진다. Consistency: ACIDTransaction Availability 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 5.5.12 x 1 VM-MongoDB Single Node MongoDB 1.8.1 x 1 VM-MongoDB Multi Node MongoDB 1.8.1 x 3 Config Server x 1 Router x 1
환경 구축(3)
환경 구축(4)
환경 구축(5)
데이터 가공(1) 데이터 원본 항공사의 정시 운행률과 지연 원인에 대한 데이터 http://www.data.gov/tools/123 레코드 수 : 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개 당 로그 평균 0.009초 소모(최소 0.001초 최대 0.267초) 소요시간
Insert 결과(index) 1000개 당 로그 평균 0.007초 소모(최소 0.002초 최대 0.302초) 소요시간
Insert 결론 No index가 Index에 비해 근소하게 빠르다(0.001초) 평균적으로는 Index가 빨랐다. No Index 는 소모 시간이 들쭉날쭉 했다. 데이터 량이 늘어도 크게 문제가 생길 정도로 성능에 영향을 미치지 않는다.
Select – 예상 소모 시간 No Index 일정한 속도를 가질 것이다. Index No Index보다 빠를 것이다.
Select 결과(no index) 100개 검색 평균 15.232초 소모(최소 14.798초 최대 15.992초) 소요시간
Select 결과(index) 100개 검색 평균 0.058초 소모(최소 0.029초 최대 0.095초) 소요시간
Select 결론 Index가 No Index에 비해 월등히 빠르다(14초)
Update – 예상 소모 시간 전체적으로 Select와 비슷한 속도를 가질 것이다. No Index 일정한 속도를 가질 것이다. Index No Index보다 빠를 것이다.
Update 결과(no index) 100개 검색 평균 46.336초 소모(최소 38.873초 최대 60.660초) 트랜잭션 Failed 발생(timeout) 소요시간
Update 결과(index) 100개 검색 평균 0.017초 소모(최소 0.002초 최대 0.072초) 소요시간
Update 결론 Index가 No Index에 비해 월등히 빠르다(60초) Select 보다 빠르다 데이터를 전송하는 시간이 없어서 결과값이 더 빠르게 나타난 것이라 예상 트랜잭션 Failed 는 데이터를 기록하며 Lock이 걸린 것으로 예상
Delete – 예상 소모 시간 No Index 선형적으로 빨라질 것이다 Index No Index보다 빠를 것이다.
Delete 결과(no index) 20개 삭제 시도 5개의 클라이언트 모두 트랜잭션 Failed 발생 Console에서 수행 평균 시간 23.631초, 최소 12.86초 최대 52.83초 소요시간
Delete 결과(index) 20개 삭제 평균 0.058초 소모(최소 0.012초 최대 0.028초) 소요시간
Delete 결론 Index가 No Index에 비해 월등히 빠르다(22초) 동시 접속 시 문제가 발생 각자가 Lock을 요구하여 문제가 발생 된 것으로 봄.
차주 작업 MongoDB, CRUD 작업 소요 시간 체크 분산 처리 성능 확인 보고서 작성
Insert – 예상 소모 시간 Single Node 데이터 수에 선형적으로 증가할 것이다. MySQL보다 느릴 것이다. Multi Node 데이터 수에 선형적으로 증가할 것이다. Single Node보다 빠를 것이다
Insert 결과(Single Node) 1000개 당 로그 평균 0.002초 소모(최소 0.0002초 최대 0.087초) MySQL보다 평균 0.005초 빠름 소요시간
Insert 결과(Multi Node) 1000개 당 로그 평균 0.001초 소모(최소 0.0002초 최대 0.099초) Shard Key는 각 레코드마다 고유하게 주어진 필드를 이용했다. Insert에 실패 한 경우가 있었다. 소요시간
Insert 결론 MongoDB에서의 Insert 연산이 MySQL에 비해 빨랐다. Single Node에 비해 Multi Node가 근소하게 빠름(평균 0.001초) MySQL보다 조금 더 빠른 이유는 ACID를 보장하지 않기 때문인 것으로 추정된다. Multi Node로 사용할 때 가장 빠른 속도를 보이거나 가장 느린 속도를 보인다. 이는 데이터가 분산되어 저장되면서 일어난 현상으로 추정된다.
Select – 예상 소모 시간 Single Node 일정한 속도를 가질 것이다. MySQL보다 느릴 것이다. Multi Node Single Node에 비해 근소하게 느릴 것이다.
Select 결과(Single Node) 100개 검색 평균 0.0002초 소모(최소 0.0000초 최대 0.004초) 소요시간
Select 결과(Multi Node) 100개 검색 평균 0.0001초 소모(최소 0.0000초 최대 0.004초) 소요시간
Select 결론 MongoDB가 MySQL에 비해 월등히 빠르다(평균 0.057초) Document로 저장되어서 검색할 때 느릴 것이라 생각했지만 그렇지 않았다. Single, Multi가 크게 차이 나지 않았다.
Update – 예상 소모 시간 전체적으로 Select와 비슷한 속도를 가질 것이다. Single Node 일정한 속도를 가질 것이다. Multi Node Single Node 보다 빠를 것이다.
Update 결과(Single Node) 100개 검색 평균 0.004초 소모(최소 0.0000초 최대 0.084초) 소요시간
Update 결과(Multi Node) 100개 검색 평균 0.003초 소모(최소 0.0000초 최대 0.068초) 소요시간
Update 결론 MongoDB가 MySQL에 비해 근소하게 빠르다(0.014초) Multi가 Single에 비해 근소하게 빠르다(0.001초)
Delete – 예상 소모 시간 Single Node 선형적으로 빨라질 것이다 Multi Node Single Node 보다 빠를 것이다.
Delete 결과(Single Node) 20개 삭제 시도 평균 시간 0.00008초, 최소 0.000초 최대 0.00009초
Delete 결과(index) 20개 삭제 평균 0.0002초 소모(최소 0.000초 최대 0.0002초)
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 http://www.mongodb.org/

Mais conteúdo relacionado

Mais procurados

[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기NHN FORWARD
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon Web Services Korea
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용I Goo Lee
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)I Goo Lee.
 
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...Amazon Web Services Korea
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016Amazon Web Services Korea
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.Kris Jeong
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례Amazon Web Services Korea
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...Amazon Web Services Korea
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기NAVER D2
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestI Goo Lee
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Mydbops
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon Web Services Korea
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to RedisDvir Volk
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Hyun-Mook Choi
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민종민 김
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksJaime Crespo
 
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAmazon Web Services Korea
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDBMike Dirolf
 
InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)I Goo Lee.
 

Mais procurados (20)

[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기[2018] MySQL 이중화 진화기
[2018] MySQL 이중화 진화기
 
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
Amazon OpenSearch Deep dive - 내부구조, 성능최적화 그리고 스케일링
 
MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용MySQL 상태 메시지 분석 및 활용
MySQL 상태 메시지 분석 및 활용
 
AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)AWS Aurora 운영사례 (by 배은미)
AWS Aurora 운영사례 (by 배은미)
 
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
AWS 비용, 어떻게 사용하고 계신가요? - 비용 최적화를 위한 AWS의 다양한 툴 알아보기 – 허경원, AWS 클라우드 파이낸셜 매니저:...
 
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
게임서비스를 위한 ElastiCache 활용 전략 :: 구승모 솔루션즈 아키텍트 :: Gaming on AWS 2016
 
이것이 레디스다.
이것이 레디스다.이것이 레디스다.
이것이 레디스다.
 
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
[Gaming on AWS] 넥슨 - AWS를 활용한 모바일 게임 서버 개발: 퍼즐 주주의 사례
 
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
오딘: 발할라 라이징 MMORPG의 성능 최적화 사례 공유 [카카오게임즈 - 레벨 300] - 발표자: 김문권, 팀장, 라이온하트 스튜디오...
 
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
 
MySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software TestMySQL/MariaDB Proxy Software Test
MySQL/MariaDB Proxy Software Test
 
Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0Redo log improvements MYSQL 8.0
Redo log improvements MYSQL 8.0
 
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
Amazon DocumentDB vs MongoDB 의 내부 아키텍쳐 와 장단점 비교
 
Introduction to Redis
Introduction to RedisIntroduction to Redis
Introduction to Redis
 
Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부Fargate 를 이용한 ECS with VPC 1부
Fargate 를 이용한 ECS with VPC 1부
 
검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민검색엔진이 데이터를 다루는 법 김종민
검색엔진이 데이터를 다루는 법 김종민
 
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricksQuery Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
Query Optimization with MySQL 5.7 and MariaDB 10: Even newer tricks
 
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 GamingAurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
Aurora는 어떻게 다른가 - 김일호 솔루션즈 아키텍트:: AWS Cloud Track 3 Gaming
 
Introduction to MongoDB
Introduction to MongoDBIntroduction to MongoDB
Introduction to MongoDB
 
InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)InnoDB MVCC Architecture (by 권건우)
InnoDB MVCC Architecture (by 권건우)
 

Semelhante a mongodb와 mysql의 CRUD 연산의 성능 비교

Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기OnGameServer
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptxYeongKiKim1
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea Strike
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCore.Today
 
google dinos
google dinosgoogle dinos
google dinosjuhyun
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Sung wook Kang
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석smartstudy_official
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기YoungSu Son
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드cranbe95
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Gruter
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxNeoClova
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...Amazon Web Services Korea
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습Hyun-woo Park
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트Dae Kim
 
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기ksdc2019
 
midas NFX CFD Catalog
midas NFX CFD Catalogmidas NFX CFD Catalog
midas NFX CFD Catalogmidasnfx
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQLrockplace
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.xTerry Cho
 

Semelhante a mongodb와 mysql의 CRUD 연산의 성능 비교 (20)

Mongo db 시작하기
Mongo db 시작하기Mongo db 시작하기
Mongo db 시작하기
 
Infiniflux introduction
Infiniflux introductionInfiniflux introduction
Infiniflux introduction
 
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
광안 1반 2팀 엠퀴즈 최종 발표 자료.pptx
 
Rhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_ArchitectureRhea_MMO_SNG_Convergence_Server_Architecture
Rhea_MMO_SNG_Convergence_Server_Architecture
 
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji DonghyunCoreDot TechSeminar 2018 - Session2 Ji Donghyun
CoreDot TechSeminar 2018 - Session2 Ji Donghyun
 
google dinos
google dinosgoogle dinos
google dinos
 
Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석Windows 성능모니터를 이용한 SQL Server 성능 분석
Windows 성능모니터를 이용한 SQL Server 성능 분석
 
Talos
TalosTalos
Talos
 
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
[스마트스터디]모바일 애플리케이션 서비스에서의 로그 수집과 분석
 
클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기클라우드 환경에서 알아야할 성능 이야기
클라우드 환경에서 알아야할 성능 이야기
 
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
Ndc2011 성능 향상을_위한_데이터베이스_아키텍쳐_구축_및_개발_가이드
 
Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014Vectorized processing in_a_nutshell_DeView2014
Vectorized processing in_a_nutshell_DeView2014
 
MySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptxMySQL_MariaDB-성능개선-202201.pptx
MySQL_MariaDB-성능개선-202201.pptx
 
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
넥슨 글로벌 플랫폼 구축 이야기 : DB Migration case study (임현수 플랫폼인프라실 Technical Manager, 넥...
 
The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습The MongoDB Strikes Back / MongoDB 의 역습
The MongoDB Strikes Back / MongoDB 의 역습
 
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
모바일 게임과 앱을 위한 오픈소스 게임서버 엔진 프로젝트 CloudBread 프로젝트
 
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
초초초 (초고속 초저지연 초연결) 5G IoT 플랫폼 개발 이야기
 
midas NFX CFD Catalog
midas NFX CFD Catalogmidas NFX CFD Catalog
midas NFX CFD Catalog
 
Migration to Azure Database for MySQL
Migration to Azure Database for MySQLMigration to Azure Database for MySQL
Migration to Azure Database for MySQL
 
빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x빠르게훓어보는 Node.js와 Vert.x
빠르게훓어보는 Node.js와 Vert.x
 

Último

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Kim Daeun
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionKim Daeun
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)Tae Young Lee
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Wonjun Hwang
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Wonjun Hwang
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스
 

Último (6)

Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
Continual Active Learning for Efficient Adaptation of Machine LearningModels ...
 
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution DetectionMOODv2 : Masked Image Modeling for Out-of-Distribution Detection
MOODv2 : Masked Image Modeling for Out-of-Distribution Detection
 
A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)A future that integrates LLMs and LAMs (Symposium)
A future that integrates LLMs and LAMs (Symposium)
 
Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)Merge (Kitworks Team Study 이성수 발표자료 240426)
Merge (Kitworks Team Study 이성수 발표자료 240426)
 
Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)Console API (Kitworks Team Study 백혜인 발표자료)
Console API (Kitworks Team Study 백혜인 발표자료)
 
캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차캐드앤그래픽스 2024년 5월호 목차
캐드앤그래픽스 2024년 5월호 목차
 

mongodb와 mysql의 CRUD 연산의 성능 비교

  • 1. MongoDB와 MySQL의 CRUD 연산의 성능 비교 최우영 http://blog.wychoe.net
  • 2. 기초 자료 수집 데이터가 증가함에 따라 서비스는 필연적으로 저장소의 확장을 요구한다. 클라우드 서비스 Facebook – 5억명 이상의 가입자 Google – 500 PB/Month Flicker – 500만개 이상의 Geotag/Month
  • 4. Scale Up의 한계 MySQL 연결과 CPU Scale up 벤치마킹 연결 16개 이상부터 성능의 향상이 거의 없음 CPU Core 16개 이상부터 성능 향상 거의 없음
  • 5. RDBMS의 확장(1) 여러 개의 인스턴스를 생성 인스턴스 별로 데이터를 관리하는 파티션 모듈 개발
  • 6. RDBMS의 확장(2) Replication 복제에 의한 확장 Master-Slave 구조 Write(n), Read(1) Partitioning(Sharding) 분할에 의한 확장 Join 불가능
  • 7. NoSQL Lightweight RDBMS, `98, Carlo Strozzi SQL 인터페이스를 가지지 않는 DBMS 설계 Eric Evans에 의해 `09년에 다시 소개 ACID를 보장하지 않는 비 관계형, 분산 저장소에 대한 논의 비싼 분산 RDBMS와 Join 연산에 대한 제약을 극복하기 위한 대안으로 제시
  • 8. NoSQL도입 사례 FaceBook, Twitter, Digg.com Cassandra Google Big Table Yahoo Hadoop Amazon Dynamo
  • 9. RDBMS vsNoSQL RDBMS ACID 보장 Scalability에 대해 느린 성능 Scalability에 대해 고비용 NoSQL Scalability 우선 순위 Not Only SQL
  • 10. CAP 이론(1) Consistency 모든 노드가 동일한 데이터를 가진다. Availability 노드가 멈춰도 사용할 수 있다. Partition Tolerance 물리적 분산 환경에서 동작 가능하다. 모든 DBMS는 두 가지특성만을 가진다. Consistency: ACIDTransaction Availability Partition Tolerance: Scale out
  • 12. MongoDB C-P 조건 만족 Document-Oriented storage 인덱스 지원 복제 & 고 가용성 Auto-Sharding 쿼리 Map/Reduce
  • 13. 주제 선정 이유 클라우드 서비스의 등장 서비스의 확장성에 대한 고민들 SNS, SNG에서의 NoSQL도입 사례 증가 DBMS의 확장하기 위한 방법은 무엇이 있을까? 기존의 RDBMS를 대체해서 NoSQL을 도입하려면 어떠한 점을 미리 알아야 하는가?
  • 14. 실험 목표 RDBMS 제품군과NoSQL제품군간의CRUD 성능 비교 RDBMS와 NoSQL의 강점과 약점에 대해서 알아본다. CRUD 연산 분산 처리
  • 15. 실험 대상과 범위 RDBMS MySQL NoSQL MongoDB
  • 16. 실험 방법 동일한 데이터에 대해 CRUD 연산 2개 이상의 클라이언트를 연결하여 연산 시도 MongoDB는 싱글노드, 멀티 노드를 구분하여 작업
  • 17. 추진 일정 ~5/18 계획 수립 ~5/25 환경 구축, 데이터 가공 ~6/1 MySQL CRUD 실험 ~6/8 MongoDB CRUD 실험 보고서 작성
  • 18. ~5/25 일정 환경 구축 데이터 가공
  • 19. 환경 구축(1) VMWare를 이용해 DBMS 설치 머신 Windows XP SP3 Intel Core2 Dual 2.5Ghz 2GB Ram 가상 머신 Windows XP SP3 512 MB Ram Single Core 12 GB HDD
  • 20. 환경 구축(2) 가상 머신 별 소프트웨어 VM-MySQL MySQL 5.5.12 x 1 VM-MongoDB Single Node MongoDB 1.8.1 x 1 VM-MongoDB Multi Node MongoDB 1.8.1 x 3 Config Server x 1 Router x 1
  • 24. 데이터 가공(1) 데이터 원본 항공사의 정시 운행률과 지연 원인에 대한 데이터 http://www.data.gov/tools/123 레코드 수 : 494,401개 필드 수 : 93 개 데이터 타입 : INT, DATE, TEXT
  • 26. 데이터 가공(3) 가공 후 데이터 레코드 수 : 494,401개 필드 수 : 93 개 -> 50개 각 레코드에 Unique 한 RecordNum필드 삽입
  • 27. 차주 작업 MySQL, CRUD 작업 소요 시간 체크 인덱스, 비인덱스 성능 체크
  • 28. ~6/1 일정 MySQL CRUD 성능 측정
  • 29. 데이터 준비 42만라인의 데이터 각 데이터마다 순차적으로 부여한 번호를 가짐 RecordNum필드 1 ~ 42만 인덱스가 없는 RecordNum에 쿼리를 보내고 측정 RecordNum에 인덱스를 걸고 측정
  • 30. Insert – 예상 소모 시간 No Index 데이터 수에 선형적으로 증가할 것 이다. Index 데이터 수에 비례해 n^2 함수형으로 증가할 것이다.
  • 31. Insert 결과(no index) 1000개 당 로그 평균 0.009초 소모(최소 0.001초 최대 0.267초) 소요시간
  • 32. Insert 결과(index) 1000개 당 로그 평균 0.007초 소모(최소 0.002초 최대 0.302초) 소요시간
  • 33. Insert 결론 No index가 Index에 비해 근소하게 빠르다(0.001초) 평균적으로는 Index가 빨랐다. No Index 는 소모 시간이 들쭉날쭉 했다. 데이터 량이 늘어도 크게 문제가 생길 정도로 성능에 영향을 미치지 않는다.
  • 34. Select – 예상 소모 시간 No Index 일정한 속도를 가질 것이다. Index No Index보다 빠를 것이다.
  • 35. Select 결과(no index) 100개 검색 평균 15.232초 소모(최소 14.798초 최대 15.992초) 소요시간
  • 36. Select 결과(index) 100개 검색 평균 0.058초 소모(최소 0.029초 최대 0.095초) 소요시간
  • 37. Select 결론 Index가 No Index에 비해 월등히 빠르다(14초)
  • 38. Update – 예상 소모 시간 전체적으로 Select와 비슷한 속도를 가질 것이다. No Index 일정한 속도를 가질 것이다. Index No Index보다 빠를 것이다.
  • 39. Update 결과(no index) 100개 검색 평균 46.336초 소모(최소 38.873초 최대 60.660초) 트랜잭션 Failed 발생(timeout) 소요시간
  • 40. Update 결과(index) 100개 검색 평균 0.017초 소모(최소 0.002초 최대 0.072초) 소요시간
  • 41. Update 결론 Index가 No Index에 비해 월등히 빠르다(60초) Select 보다 빠르다 데이터를 전송하는 시간이 없어서 결과값이 더 빠르게 나타난 것이라 예상 트랜잭션 Failed 는 데이터를 기록하며 Lock이 걸린 것으로 예상
  • 42. Delete – 예상 소모 시간 No Index 선형적으로 빨라질 것이다 Index No Index보다 빠를 것이다.
  • 43. Delete 결과(no index) 20개 삭제 시도 5개의 클라이언트 모두 트랜잭션 Failed 발생 Console에서 수행 평균 시간 23.631초, 최소 12.86초 최대 52.83초 소요시간
  • 44. Delete 결과(index) 20개 삭제 평균 0.058초 소모(최소 0.012초 최대 0.028초) 소요시간
  • 45. Delete 결론 Index가 No Index에 비해 월등히 빠르다(22초) 동시 접속 시 문제가 발생 각자가 Lock을 요구하여 문제가 발생 된 것으로 봄.
  • 46. 차주 작업 MongoDB, CRUD 작업 소요 시간 체크 분산 처리 성능 확인 보고서 작성
  • 47. Insert – 예상 소모 시간 Single Node 데이터 수에 선형적으로 증가할 것이다. MySQL보다 느릴 것이다. Multi Node 데이터 수에 선형적으로 증가할 것이다. Single Node보다 빠를 것이다
  • 48. Insert 결과(Single Node) 1000개 당 로그 평균 0.002초 소모(최소 0.0002초 최대 0.087초) MySQL보다 평균 0.005초 빠름 소요시간
  • 49. Insert 결과(Multi Node) 1000개 당 로그 평균 0.001초 소모(최소 0.0002초 최대 0.099초) Shard Key는 각 레코드마다 고유하게 주어진 필드를 이용했다. Insert에 실패 한 경우가 있었다. 소요시간
  • 50. Insert 결론 MongoDB에서의 Insert 연산이 MySQL에 비해 빨랐다. Single Node에 비해 Multi Node가 근소하게 빠름(평균 0.001초) MySQL보다 조금 더 빠른 이유는 ACID를 보장하지 않기 때문인 것으로 추정된다. Multi Node로 사용할 때 가장 빠른 속도를 보이거나 가장 느린 속도를 보인다. 이는 데이터가 분산되어 저장되면서 일어난 현상으로 추정된다.
  • 51. Select – 예상 소모 시간 Single Node 일정한 속도를 가질 것이다. MySQL보다 느릴 것이다. Multi Node Single Node에 비해 근소하게 느릴 것이다.
  • 52. Select 결과(Single Node) 100개 검색 평균 0.0002초 소모(최소 0.0000초 최대 0.004초) 소요시간
  • 53. Select 결과(Multi Node) 100개 검색 평균 0.0001초 소모(최소 0.0000초 최대 0.004초) 소요시간
  • 54. Select 결론 MongoDB가 MySQL에 비해 월등히 빠르다(평균 0.057초) Document로 저장되어서 검색할 때 느릴 것이라 생각했지만 그렇지 않았다. Single, Multi가 크게 차이 나지 않았다.
  • 55. Update – 예상 소모 시간 전체적으로 Select와 비슷한 속도를 가질 것이다. Single Node 일정한 속도를 가질 것이다. Multi Node Single Node 보다 빠를 것이다.
  • 56. Update 결과(Single Node) 100개 검색 평균 0.004초 소모(최소 0.0000초 최대 0.084초) 소요시간
  • 57. Update 결과(Multi Node) 100개 검색 평균 0.003초 소모(최소 0.0000초 최대 0.068초) 소요시간
  • 58. Update 결론 MongoDB가 MySQL에 비해 근소하게 빠르다(0.014초) Multi가 Single에 비해 근소하게 빠르다(0.001초)
  • 59. Delete – 예상 소모 시간 Single Node 선형적으로 빨라질 것이다 Multi Node Single Node 보다 빠를 것이다.
  • 60. Delete 결과(Single Node) 20개 삭제 시도 평균 시간 0.00008초, 최소 0.000초 최대 0.00009초
  • 61. Delete 결과(index) 20개 삭제 평균 0.0002초 소모(최소 0.000초 최대 0.0002초)
  • 62. Delete 결론 MongoDB가 MySQL에 비해 근소하게 빠르다(0.057초) Single Node가 Multi Node에 비해 빨랐다.
  • 63. 최종 결론(1) MongoDB가 MySQL에 비해 Insert 연산이 근소하게 빠르다.
  • 64. 최종 결론(2) MongoDB가 MySQL에 비해 Select 연산의 속도가 빠르다.
  • 65. 최종 결론(3) 최초로 Update 쿼리를 요청할 때 시간이 오래 걸렸다. 그 이후 모든 결과가 MongoDB가 빨랐다.
  • 66. 최종 결론(4) Delete 연산은 MongoDB Single이 가장 빨랐고, MySQL이 가장 느렸다.
  • 67. 최종 결론(5) 대부분의 성능이 MySQL에 비해 MongoDB가 빨랐다. ACID 보장을 위해 MySQL이 많은 시간을 소모하는 것으로 예상된다. Single Node와 Multi Node 간에 성능 차이는 거의 나지 않지만, Delete 연산을 제외하고는 Multi Node가 조금 더 빨랐다. MySQL은 ODBC를, MongoDB는 C# Driver를 사용하였다. 드라이버의 구현상에서 성능 차이가 발생할 수 있다.
  • 68. 최종 결론(6) MongoDB Multi Node의 Insert 연산 중에 연산 실패가 일어나는 경우가 있었으므로 사용상 주의가 필요하다. MongoDB는 저장 프로시저를 사용할 수 없고 트랜잭션 처리에 경험을 필요로 한다. 또, ODBC를 사용할 수 없고 전용 드라이버를 사용해야 하므로 기존의 레거시 프로그램들은 MongoDB로 교체하는데 추가 비용이 청구될 것이다. 그러나 분산을 목적으로 한 DBMS를 선택한다면, 기존의 RDBMS에 비해 낮은 비용과 빠른 성능을 제공하는 MongoDB를 선택해도 충분할 것이라 생각된다.