Skip to content

유전체 데이터에 대한 RDB 와 NoSQL DB 아키텍처의 효용성 평가 #
Find similar titles

Structured data

Category
Analysis

유전체 데이터에 대한 RDB 와 NoSQL DB 아키텍처의 효용성 평가 #

서론 #

시퀀싱 기술 발달로 인한 가격 절감으로 유전체 데이터양이 폭발적으로 증가하였고 이에 따라 효율적인 데이터 관리의 중요성이 대두하고 있다. 여러 산업 분야에서 데이터 생성 및 수집 속도 증가에 따라 기존에 사용되던 RDB (Relational Database) 를 대신할 수 있는 새로운 데이터 접근 방법에 대한 필요성이 대두 되었고, 특히 SQL 구문에 구애되지 않고 스키마가 없는 documents oriented database와 NoSQL database가 빠른 속도로 적용되기 시작했다. 이러한 흐름에도 불구하고 현재 의생물학 분야에서 이러한 새로운 아키텍처의 효용성에 대한 평가나 적용이 매우 미비하다. 이에, SNP 데이터에 대한 RDB 와 NoSQL DB를 비교분석 한 연구를 소개하고자 한다.

본론 #

이 연구에서는 약 6천 1백만여 개의 SNP 데이터 (MongoDB 기준 약 3.67GB)를 이용하여 MySQL, [PostgreSQL] (NoSQL, RDB) 및 [MongoDB] 에 데이터 관리의 효율성을 비교 분석 하였다. 본 연구에 사용된 Hardware 사양, Database platform 및 데이터는 다음과 같다.

  • Hardware

    • OS : Amazon Elastic Computer (EC2) - Amazon Linux image 64bit kernel, 3.4.73
    • 4v CPU - Intel Xeon Core
    • 15GB Memory
  • Database platform

    • NoSQL : PostgreSQL 9.4 (JSONB), MongoDB3.0.12
    • RDB : MySQL 5.5.46, PostgreSQL 9.4
  • Dataset

    • NCBI FTP dbSNP - Human SNP database (ASN.1 format) download (build 139)
    • Chromosome 1-22, X, Y, MT 에 대한 SNP 사용 (총 61,268,661개 SNPs, 데이터는 각 chromosome 별로 파일을 나누어 테스트 수행)


데이터 관리 효율성 평가를 위해 각 DB platform에 대하여 python script를 이용하여 table 생성 및 데이터 추출을 수행하였다. 각 chromosome 파일에 대한 데이터 등록 및 추출 시간을 측정하여 평균 속도를 계산하였다.

MarkDown

[그림 1] RDB 와 NoSQL 데이터에 대한 데이터 삽입 속도 비교

그림 1은 데이터 삽입 시 속도 비교 분석 결과이다. 그림에서 알 수 있듯 MySQL이 초당 2,004개 정도로 등록 속도가 가장 느리고, [PostgreSQL] (JSONB) 이 초당 3700개 정도로 등록 속도가 가장 빨랐다.

MarkDown

[그림 2] RDB 와 NoSQL 아키텍처 간 인덱스 생성 효용성 비교

그림 2는 인덱스 생성 속도에 대한 비교 분석 결과이다. 이 분석에서는 세 가지 데이터 타입(unique string, Boolean, string) 에 대한 index 생성 시간에 대한 비교분석을 진행하였다. ([PostgreSQL] (JSON) 타입의 경우 index 생성에 standard b-tree와 GIN 방법을 포함한 몇 가지 접근 방법이 있는데, 이 그림 2에서는 GIN index를 이용한 분석 결과이다) 각 데이터 타입에 따라 index 생성 효용성에 차이를 보였는데, Unique string은 [MongoDB], Boolean 타입의 경우 PostgreSQL, string 타입의 경우 PostgreSQL 가 각각 index 생성에 가장 높은 효용성을 보였다.



[표1] RDB와 NoSQL DB의 쿼리 수행 속도 비교 (in milliseconds)

Database Unique string (RSID) Boolean (significance) String (gene) Complex (Significance+gene)
MySQL 2.33 19884.61 1169.79 1002.04
PostgreSQL 0.86 1033.29 496.20 345.63
PostgreSQL (JSONB) 0.53 496.20 22.92 24.35
MongoDB 0.05 345.63 8.66 48.08



표1 은 RDB 와 NoSQL 의 쿼리 수행속도를 데이터 타입에 따라 비교한 것이다. 전반적으로 NoSQL 이 전반적으로 RDB 에 비해 쿼리 수행속도가 빠른 것을 확인할 수 있다. RDB 간에는 PostgreSQL 이 MySQL 보다 전반적으로 빠른 것을 볼 수 있고, NoSQL 간 비교 했을 때는 Complex (significance+gene) 데이터 타입을 제외한 unique string, Boolean, string 데이터 타입에서 MongoDB가 더 빠른 속도를 보이는 것을 볼 수 있었다.

결론 #

이 연구에서는 NoSQL DB 아키텍처가 전반적으로 RDB 에 비해 유전체 annotation 데이터 저장 및 검색에 대해 효율적인 경향을 보였다. 이는 RDB 에서 사용되는 transaction log 기록, 데이터 삽입 전 외래키 검색 등의 수행이 필요하기 때문으로 보이며, 따라서 데이터 구조에 따라 본 연구와는 다른 결과를 보일 수 있다. 데이터 삽입에서는 PostgreSQL 과 Mongo DB 에서 비슷한 양상을 보이는 경향을 보였지만 데이터 삽입과 index 생성에서는 MongoDB의 효율이 높은 결과를 보였기 때문에 대용량 데이터 사용 시 MongoDB 가 더 효율적일 수 있음을 시사했다. 결론적으로 NoSQL DB 는 차후 유전체 데이터를 관리하는데 새로운 효율적인 대안을 제시할 수 있을 것으로 사료된다.

참고문헌 #

Wade L. Schulz et al. 2016. Evaluation of Relational and NoSQL Database Architectures to Manage Genomic Annotations. Journal of Biomedical informatics

0.0.1_20140628_0