KR101375684B1 - 염기서열 데이터 관리 방법 및 시스템 - Google Patents

염기서열 데이터 관리 방법 및 시스템 Download PDF

Info

Publication number
KR101375684B1
KR101375684B1 KR20120068990A KR20120068990A KR101375684B1 KR 101375684 B1 KR101375684 B1 KR 101375684B1 KR 20120068990 A KR20120068990 A KR 20120068990A KR 20120068990 A KR20120068990 A KR 20120068990A KR 101375684 B1 KR101375684 B1 KR 101375684B1
Authority
KR
South Korea
Prior art keywords
data
column
read
read data
start offset
Prior art date
Application number
KR20120068990A
Other languages
English (en)
Other versions
KR20140006181A (ko
Inventor
서광준
박상길
전범준
Original Assignee
에스코어 주식회사
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스코어 주식회사 filed Critical 에스코어 주식회사
Priority to KR20120068990A priority Critical patent/KR101375684B1/ko
Publication of KR20140006181A publication Critical patent/KR20140006181A/ko
Application granted granted Critical
Publication of KR101375684B1 publication Critical patent/KR101375684B1/ko

Links

Images

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Proteomics, Peptides & Aminoacids (AREA)
  • Biotechnology (AREA)
  • Evolutionary Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Medical Informatics (AREA)
  • Spectroscopy & Molecular Physics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Biophysics (AREA)
  • Analytical Chemistry (AREA)
  • Computing Systems (AREA)
  • Chemical & Material Sciences (AREA)

Abstract

방대한 양의 염기서열 데이터를 효율적으로 저장하고 검색하기 위한 염기서열 데이터 관리 방법 및 시스템이 제공된다. 염기서열 데이터 관리 시스템은, 기설정된 크기의 시작 오프셋 범위에 속하는 리드들에 대한 리드 데이터를 순차적으로 추출하는 리드 데이터 추출부, 상기 순차적으로 추출되는 리드 데이터를 연결하여 상기 시작 오프셋 범위를 식별하는 컬럼 네임을 가지는 컬럼 데이터를 생성하는 컬럼 데이터 생성부, 및 복수의 연속적인 시작 오프셋 범위에 대한 복수의 컬럼 데이터를 하나의 로우 데이터로 하여 상기 복수의 연속적인 시작 오프셋 범위를 식별하는 로우 키와 함께 데이터베이스에 입력하는 데이터 저장부를 포함한다.

Description

염기서열 데이터 관리 방법 및 시스템{METHOD AND SYSTEM FOR MANAGING DNA SEQUENCE DATA}
본 발명은 염기서열 데이터를 관리하는 방법 및 시스템에 관한 것으로, 보다 상세하게는 방대한 양의 염기서열 데이터를 효율적으로 저장하고 검색하기 위한 방법 및 시스템에 관한 것이다.
DNA의 염기서열 분석 방법이 다양화되고, 염기서열의 분석에 필요한 시간 및 비용이 낮아짐에 따라 염기서열 데이터를 활용한 바이오인포매틱스(Bio-informatics)가 새로운 학문 분야로 주목받고 있다. 바이오인포매틱스는 생명공학(Biotechnology)과 정보기술(Information Technology)이 융합된 학문으로, 유전자 분석방법을 통해 얻어진 DNA 염기서열 데이터를 데이터베이스에 저장하고 분석하기 위한 기술이 포함된다. 염기서열 데이터는 종래의 데이터베이스에서 관리되던 데이터에 비하여 훨씬 방대한 양의 데이터를 가지기 때문에, 종래의 데이터베이스에서 관리되기에 어려운 면이 있다.
이에, 방대한 양의 염기서열 데이터를 효과적으로 저장하고 분석하기 위한 방법들이 연구되고 있다.
종래의 관계형 데이터베이스 관리 시스템(RDBMS, Relational Database Management System)은 데이터의 입력, 추가, 삭제, 검색 등에 있어 편리한 기능들을 제공하지만, 확장성이 상대적으로 낮아 염기서열 정보와 같은 대량의 데이터를 입력하고 추가하는 데에 적합하지 않은 단점이 있다.
이에 반하여, 빅 데이터 시대를 맞아 부각되고 있는 NoSQL 데이터베이스는 확장성이 좋아 대량의 데이터를 입력, 추가, 삭제하기에는 적합하나, 종래의 관계형 데이터베이스에 비하여 낮은 수준의 검색 기능을 제공하기 때문에 방대한 양의 데이터로부터 원하는 데이터를 신속하게 검색하기가 어려운 단점이 있다.
본 발명은 상술한 문제점을 해결하기 위하여 안출된 것으로, 확장성이 좋은 NoSQL 데이터베이스를 이용하여 대용량의 염기서열 데이터를 효과적으로 저장하면서도, 신속하게 데이터의 검색을 할 수 있는 염기서열 데이터 관리 방법 및 시스템을 제공하기 위한 것이다.
상기의 과제를 해결하기 위한 본 발명의 염기서열 데이터 관리 방법의 일 실시예는 기설정된 크기의 시작 오프셋 범위에 속하는 리드들에 대한 리드 데이터를 순차적으로 추출하여, 상기 시작 오프셋 범위를 식별하는 컬럼 네임을 가지는 컬럼 데이터를 생성하는 단계, 및 복수의 연속적인 시작 오프셋 범위에 대하여 복수의 상기 컬럼 데이터를 생성하고, 상기 복수의 컬럼 데이터를 하나의 로우 데이터로 하여 상기 복수의 연속적인 시작 오프셋 범위를 식별하는 로우 키와 함께 데이터베이스에 입력하는 단계를 포함한다.
상기의 과제를 해결하기 위한 본 발명의 염기서열 데이터 관리 시스템의 일 실시예는 기설정된 크기의 시작 오프셋 범위에 속하는 리드들에 대한 리드 데이터를 순차적으로 추출하는 리드 데이터 추출부, 상기 순차적으로 추출되는 리드 데이터를 연결하여 상기 시작 오프셋 범위를 식별하는 컬럼 네임을 가지는 컬럼 데이터를 생성하는 컬럼 데이터 생성부, 및 복수의 연속적인 시작 오프셋 범위에 대한 복수의 컬럼 데이터를 하나의 로우 데이터로 하여 상기 복수의 연속적인 시작 오프셋 범위를 식별하는 로우 키와 함께 데이터베이스에 입력하는 데이터 저장부를 포함한다.
본 발명에 따르면, 각 컬럼 데이터에 포함되는 리드 데이터의 시작 오프셋의 범위를 식별할 수 있는 컬럼 네임과, 각 로우 데이터에 포함되는 리드 데이터의 시작 오프셋의 범위를 식별할 수 있는 로우 키를 이용하여 데이터를 입력하기 때문에, 사용자가 원하는 특정 시작 오프셋 범위의 리드 데이터를 대용량 데이터베이스 내에서 신속하게 추출할 수 있는 효과가 있다.
또한, 로우 키를 이용하여 입력되는 데이터를 NoSQL 데이테베이스의 다수의 물리적 저장소에 자동으로 분산하여 저장할 수 있으므로, 물리적 저장소가 확장되는 경우에도 사용자는 데이터의 분산을 위한 수고를 할 필요가 없어지게 되어, 염기서열 데이터와 같은 방대한 양의 데이터를 효과적으로 저장하기에 적합하다.
도 1은 본 발명의 실시예에 따른 염기서열 데이터 관리 시스템을 도시한 기능 블록도이다.
도 2는 본 발명의 실시예에 따른 염기서열 데이터 저장 방법을 나타내는 흐름도이다.
도 3은 본 발명의 실시예에 따른 염기서열 데이터 검색 방법을 나타내는 흐름도이다.
도 4는 본 발명의 실시예에 따른 데이터베이스 테이블의 예시적 구조를 나타내는 예시도이다.
본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다. 명세서 전체에 걸쳐 동일 참조 부호는 동일 구성 요소를 지칭한다.
본 명세서에서 사용되는 '~부(unit)'라는 용어는 소프트웨어 또는 하드웨어 구성 요소를 의미하며, 그 일 예로서 '~부(unit)'는 소프트웨어 구성요소들, 객체지향 소프트웨어 구성요소들, 클래스 구성요소들 및 태스크 구성요소들과 같은 구성요소들과, 프로세스들, 함수들, 속성들, 프로시저들, 서브루틴들, 프로그램 코드의 세그먼트들, 드라이버들, 펌웨어, 마이크로코드, 회로, 데이터, 데이터베이스, 데이터 구조들, 테이블들, 어레이들, 및 변수들을 포함할 수 있다. 구성요소들과 모듈들 안에서 제공되는 기능은 더 작은 수의 구성요소들 및 모듈들로 결합되거나 추가적인 구성요소들과 모듈들로 더 분리될 수 있다.
이하, 첨부된 도면을 참조하여 본 발명의 실시예에 따른 염기서열 데이터 관리 방법 및 시스템을 상세하게 설명하기로 한다.
[염기서열 데이터의 저장]
도 1은 본 발명의 실시예에 따른 염기서열 데이터 관리 시스템을 도시한 기능 블록도이다. 염기서열 데이터 관리 시스템(100)은 리드 데이터 추출부(110), 컬럼 데이터 생성부(120), 데이터 저장부(130), 데이터베이스(135), 쿼리 입력부(140), 검색부(150) 및 리드 데이터 제공부(160)를 포함하여 구성될 수 있다. 도 1에서는 NoSQL 데이터베이스(135)가 하나의 블록으로 도시되어 있으나, 다수의 데이터베이스 서버들로 구성될 수 있음은 본 발명이 속하는 기술분야의 통상의 지식을 가진 자에게 자명하다.
리드 데이터 추출부(110)는 염기서열 데이터 파일로부터 리드 데이터를 추출한다. 염기서열 데이터 파일은 SAM(Sequence Alignment/Map) 포맷 또는 BAM(Binary Sequence Alignment/Map) 포맷을 가질 수 있다.
SAM 포맷 파일은 각 리드의 염기서열 데이터, 염색체 내에서 각 리드의 시작점이 몇번째 염기에 위치하는 것인지를 나타내는 시작 오프셋 정보, 각 리드가 몇개의 염기로 이루어지는지를 나타내는 길이 정보 등을 포함하는 리드 데이터를 저장하고 있다. 또한, BAM 포맷은 SAM 포맷의 정보를 압축한 바이너리 파일로 SAM 포맷에 비하여 데이터 크기를 효율적으로 줄이며 데이터를 빠르게 액세스할 수 있는 장점이 있다.
본 발명의 실시예에서 염기서열 데이터 파일은 각 리드의 시작 오프셋을 기준으로 리드 데이터가 오름차순으로 정렬되어 있을 수 있다. 본 발명의 다른 실시예에서, 염기서열 데이터 관리 시스템(100)은 염기서열 데이터 파일 정렬부를 더 포함하여 염기서열 데이터 파일의 리드 데이터를 각 리드의 시작 오프셋을 기준으로 오름차순으로 정렬할 수도 있다.
리드 데이터 추출부(110)는 리드의 시작 오프셋의 순서를 기준으로 정렬된 염기서열 데이터 파일로부터 각 리드의 시작 오프셋의 순서에 따라 순차적으로 리드 데이터를 추출할 수 있다.
컬럼 데이터 생성부(120)는 리드 데이터 추출부(110)에서 추출되는 리드 데이터를 하나의 문자열로 연결한 컬럼 데이터를 생성한다. 이때, 기설정된 범위의 시작 오프셋을 가지는 리드에 대한 리드 데이터를 하나의 컬럼 데이터로 저장한다. 기설정된 시작 오프셋 범위의 크기는 데이터베이스의 테이블을 구성하는 하나의 컬럼에 저장될 수 있는 데이터의 크기에 따라 달라질 수 있다. 예를 들어, 시작 오프셋 범위의 크기가 512 base로 결정되면, 1 ~ 512 범위의 시작 오프셋을 가지는 리드의 리드 데이터는 첫번째 컬럼에 저장되고, 513 ~ 1024 범위의 시작 오프셋을 가지는 리드의 리드 데이터는 두번째 컬럼에 저장될 수 있다. 즉, n 번째 컬럼은 [(하나의 컬럼에 대한 시작 오프셋 범위의 크기)×(n-1) + 1 ~ (하나의 컬럼에 대한 시작 오프셋 범위의 크기)×n]의 범위의 시작 오프셋을 가지는 리드 데이터를 저장할 수 있다.
컬럼 데이터 생성부(120)는 하나의 컬럼 데이터를 위한 빈 문자열을 생성하고, 리드 데이터 추출부(110)로부터 추출되는 리드 데이터를 문자열에 추가함으로써 컬럼 데이터를 생성할 수 있다. 순차적으로 추출되는 리드 데이터는 상기 문자열에 추가된 이전 리드 데이터에 이어 붙여진다. 이때, 이전 리드 데이터와 추가되는 리드 데이터의 사이에 구분 문자(delimiter)를 추가함으로써 각 리드에 대한 리드 데이터를 구별할 수 있게 할 수 있다.
리드 데이터 추출부(110) 및 컬럼 데이터 생성부(120)는 하나의 컬럼 데이터에 대한 시작 오프셋 범위에 속하는 리드 데이터를 모두 추출할 때까지, 리드 데이터의 순차적 추출 및 문자열에 이어 붙이는 과정을 반복함으로써 하나의 컬럼 데이터를 완성할 수 있다.
컬럼 데이터는 그 안에 포함되어 있는 리드 데이터의 시작 오프셋 범위를 식별할 수 있는 컬럼 네임을 가진다. 보다 구체적으로, 컬럼 네임은 각 컬럼에 대한 시작 오프셋 범위에 따라 산출되는 컬럼 넘버(col #)를 포함하고, 상기 컬럼 네임으로부터 컬럼 데이터에 포함되어 있는 리드 데이터의 시작 오프셋 범위를 식별할 수 있게 된다.
예를 들어, 각 컬럼에 대한 시작 오프셋 범위가 512 base의 크기를 가지는 경우, 1 ~ 512의 시작 오프셋 범위를 가지는 컬럼 데이터의 컬럼 네임은 "Bin_1"로 명명되고, 513 ~ 1024의 시작 오프셋 범위를 가지는 컬럼 데이터의 컬럼 네임은"Bin_2"로 명명되고, 512×(n-1) + 1 ~ 512×n의 시작 오프셋 범위를 가지는 컬럼 데이터의 컬럼 네임은 "Bin_n"으로 명명될 수 있다. 여기에서, 컬럼 넘버는 각각 1, 2, n이 된다. 이와 같이, 컬럼 데이터가 컬럼 넘버를 포함하는 컬럼 네임을 가짐으로써, 각 컬럼 데이터에 저장되어 있는 리드 데이터에 대한 시작 오프셋의 범위를 식별할 수 있게 된다.
데이터 저장부(130)는 컬럼 데이터 생성부(120)에서 생성되는 컬럼 데이터를 큐(que)에 저장하고, 하나의 로우에 속하는 컬럼들에 대한 컬럼 데이터가 모두 생성되어 큐에 저장되면, 상기 큐에 저장된 컬럼 데이터를 하나의 로우 데이터로 하여 데이터베이스(135)에 입력한다.
여기에서, 하나의 로우에 속하는 컬럼의 개수는 데이터베이스(135)의 특성에 따라 달라질 수 있다. 하나의 로우에 속하는 컬럼의 개수는 데이터베이스(135)에서 지원하는 Row당 최적의 크기를 바탕으로 조정되는 것이 바람직하며, 예를 들어, 도 4에 예시된 본 발명의 실시예에서는 4096개의 컬럼이 하나의 로우에 포함되는 것으로 하고 있다.
또한, 하나의 로우에 속하는 복수의 컬럼들은 연속적인 시작 오프셋 범위를 가진다. 도 4에 예시된 본 발명의 실시예에서는 첫번째 로우의 첫번째 컬럼(Bin_1)은 1 ~ 29의 시작 오프셋의 범위를 가지고, 첫번째 로우의 두번째 컬럼(Bin_2)는 29 + 1 ~ 210의 시작 오프셋의 범위를 가지는 것으로 하고 있다. 이로써, 하나의 로우 데이터는 (하나의 컬럼에 대한 시작 오프셋 범위의 크기)×(각 로우에 포함되는 컬럼의 개수)에 해당하는 크기의 연속적인 범위의 시작 오프셋을 가지는 리드 데이터를 포함하게 된다.
데이터 저장부(130)는 상기 큐에 저장된 복수의 연속적인 시작 오프셋 범위에 대한 복수의 컬럼 데이터를 로우 키(row key)와 함께 데이터베이스(135)에 입력한다. 로우 키는 상기 복수의 연속적인 시작 오프셋 범위에 따라 산출되는 로우 넘버(row #) 및 상기 리드 데이터가 속하는 염색체의 번호를 포함할 수 있다.
예를 들어, 도 4에 예시된 본 발명의 실시예에서, 1 ~ 221 의 범위의 시작 오프셋을 가지는 리드 데이터를 저장하는 첫번째 로우 데이터의 로우 넘버는 1로 산출되고, 221 + 1 ~ 2×221 의 범위의 시작 오프셋을 가지는 리드 데이터를 저장하는 두번째 로우 데이터의 로우 넘버는 2로 산출될 수 있다. 이 실시예에서, 로우 넘버가 n인 로우 데이터는 (n-1)×221 + 1 ~ n×221 의 범위의 시작 오프셋을 가지는 리드 데이터를 저장하게 된다. 도 4에 예시된 실시예에서, 로우 키는 "chr_(염색체의 번호)_(로우 넘버)"의 형태로 정해진다. 이와 같은 로우 키로부터, 염색체의 번호 및 상기 복수의 연속적인 시작 오프셋 범위를 식별할 수 있게 된다.
데이터베이스(135)는 로우 데이터와 함께 입력된 로우 키를 기준으로 다수의 물리적 저장소에 분산하여 데이터를 저장하는 NoSQL 데이터베이스일 수 있다. NoSQL 데이터베이스는 로우 키를 기준으로 데이터를 자동으로 분산하여 저장하기 때문에, 데이터양의 증가에 따라 물리적 저장소가 확장되더라도 사용자가 데이터의 분산을 위한 수고를 할 필요가 없어지게 되어, 염기서열 데이터와 같이 방대한 양의 데이터를 저장하기에 적합하다. 로우 키에 따라 데이터를 분산하여 저장하는 알고리즘은 각 NoSQL 데이터베이스의 특성에 따라 다를 수 있다.
도 2는 본 발명의 실시예에 따른 염기서열 데이터 저장 방법을 나타내는 흐름도이다. 이하, 도 2를 참조하여 염기서열 데이터 저장 방법을 설명한다.
먼저, 데이터베이스(135)의 특성 및 염기서열 데이터 관리 방법이 수행되는 환경에 따라 데이터베이스 테이블의 크기 및 데이터 사이즈를 결정한다(S110). 즉, 하나의 로우에 포함되는 컬럼의 개수와, 하나의 컬럼에 할당되는 시작 오프셋 범위의 크기가 결정된다. 도 4에 예시된 본 발명의 실시예에서는 하나의 로우에 포함되는 컬럼의 개수는 4096개이고, 하나의 컬럼에 할당되는 시작 오프셋 범위의 크기는 512로 결정되어 있다.
다음으로, 컬럼 데이터 생성부(120)는 하나의 컬럼 데이터를 저장하기 위한 빈 문자열을 생성하고(S120), 리드 데이터 추출부(110)는 염기서열 데이터 파일로부터 리드의 시작 오프셋의 순서에 따라 리드 데이터를 리드 단위로 순차적으로 추출한다(S130). 이때, 염기서열 데이터 파일이 리드의 시작 오프셋을 기준으로 오름차순으로 정렬되어 있으면, 리드 데이터 추출부(110)는 파일의 시작 위치에서부터 리드 데이터를 순차적으로 추출할 수 있다.
컬럼 데이터 생성부(120)는 리드 데이터 추출부(110)에서 추출된 리드 데이터를 컬럼 데이터를 저장하기 위한 문자열에 추가한다(S140). 이때, 구분 문자를 추가함으로써 기존에 추가된 리드 데이터와 구별될 수 있게 한다.
리드 데이터 추출부(110)에서 읽어들인 리드 데이터의 시작 오프셋이 현재의 컬럼에 할당된 시작 오프셋 범위를 초과하지 않는 범위에서 S130 단계와 S140 단계를 반복한다(S150).
현재의 컬럼에 할당된 시작 오프셋 범위의 리드 데이터를 모두 추출하면, 컬럼 데이터 생성부(120)는 생성한 문자열을 큐에 추가한다(S160). 컬럼 데이터 생성부에서 생성한 문자열은 컬럼 데이터로서 큐에 추가되고, 이때, 컬럼에 할당된 시작 오프셋 범위를 식별하는 컬럼 네임이 정하여질 수 있다.
상기 S110 단계에서 결정된 하나의 로우 당 컬럼의 개수에 이르게 될 때까지, 새로운 컬럼에 대하여 S120 단계 내지 S160 단계를 반복한다(S170).
상기 S110 단계에서 결정된 하나의 로우 당 컬럼의 개수에 이르게 되면, 데이터 저장부(130)는 컬럼 데이터가 저장된 요청큐를 데이터베이스(135)에 입력한다(S180). 이때, 큐에 저장된 컬럼 데이터는 로우 데이터로서 데이터베이스(135)에 입력되고, 입력되는 로우 데이터의 염기서열 범위를 식별하는 로우 키가 정하여질 수 있다.
하나의 염색체에 속하는 모든 리드 데이터를 추출하여 저장하게 될 때까지 S120 단계 내지 S180 단계를 반복한다(S190). 이로써, 하나의 염색체에 속하는 모든 리드 데이터는 데이터베이스의 하나의 테이블에 저장될 수 있게 된다.
이와 같이, 본 발명의 실시예의 염기서열 데이터 저장 방법에 따르면, 로우 키를 이용하여 입력되는 데이터를 NoSQL 데이테베이스의 다수의 물리적 저장소에 자동으로 분산하여 저장할 수 있으므로, 물리적 저장소가 확장되는 경우에도 사용자는 데이터의 분산을 위한 수고를 할 필요가 없어지게 되어, 염기서열 데이터와 같은 방대한 양의 데이터를 효과적으로 저장하기에 적합하다.
[염기서열 데이터의 검색]
도 3은 본 발명의 실시예에 따른 염기서열 데이터 검색 방법을 나타내는 흐름도이다. 이하, 도 1 및 도 3을 참조하여, 본 발명의 실시예에 따른 염기서열 데이터 시스템에서 염기서열 데이터를 검색하기 위한 구성 및 이를 이용한 염기서열 데이터 검색 방법에 대하여 살펴본다.
쿼리 입력부(140)는 리드 데이터를 검색하기 위한 검색 인터페이스를 사용자에게 제공하고, 사용자로부터 검색 대상 염색체의 번호 및 검색 대상 리드들에 대한 시작 오프셋의 검색 범위를 입력받는다(S210).
검색부(150)는 상기 사용자로부터 검색 범위의 상한값 및 하한값에 대한 로우 키와 컬럼 네임을 각각 구한다. 우선, 검색부(150)는 입력받은 검색 범위의 상한값 및 하한값에 대하여 각각 로우 넘버(row #)와 컬럼 넘버(col #)를 각각 산출한다(S220).
로우 넘버는 다음의 수식으로 산출될 수 있다.
Figure 112012051172878-pat00001
컬럼 넘버는 다음의 수식으로 산출될 수 있다.
Figure 112012051172878-pat00002
검색부(150)는 상한값 및 하한값에 대한 각각의 로우 넘버 및 염색체의 번호로부터 각각의 로우 키를 구하고, 상한값 및 하한값에 대한 각각의 컬럼 넘버로부터 컬럼 네임을 구할 수 있다.
예를 들어, 도 4에 예시된 테이블 구조를 가지는 데이터베이스에서, 사용자가 2번 염색체 중 시작 오프셋이 2,090,000 ~ 2,100,000의 범위를 가지는 리드 데이터를 요청한 경우, 검색 범위의 상한값(2,100,000)에 대한 로우 넘버는, 2,100,000 / (512 × 4096) + 1 = 2 로 산출되고, 하한값(2,090,000)에 대한 로우 넘버는, 2,090,000 / (512 × 4096) + 1 = 1 로 산출된다.
또한, 검색 범위의 상한값에 대한 컬럼 넘버는, 2,100,000 / 512 + 1 = 4102 로 산출되고, 검색 범위의 하한값에 대한 컬럼 넘버는, 2,090,000 / 512 + 1 = 4083 로 산출된다.
따라서, 검색 범위의 상한값에 대한 로우 키는 "chr_2_2", 컬럼 네임은 "Bin_4102"로 구해지고, 검색 범위의 하한값에 대한 로우 키는 "chr_2_1", 컬럼 네임은 "Bin_4083"으로 구해진다.
검색부(150)는 상기 상한값에 대한 로우 키와 컬럼 네임 및 하한값에 대한 로우 키와 컬럼 네임으로부터 상기 검색 범위에 해당하는 컬럼 데이터를 데이터베이스(135)로부터 추출한다(S240). 상술한 예에서, 검색부(150)는 "Bin_4083" 컬럼부터 "Bin_4102" 컬럼까지의 모든 컬럼 데이터를 데이터베이스로부터 추출할 수 있다. 이때, 각 컬럼이 포함되는 로우의 로우 키를 데이터베이스로 입력하여, 신속한 검색이 수행되게 할 수 있다.
검색부(150)는 상기 검색 범위에 속하는 각각의 컬럼에 대한 컬럼 데이터를 데이터베이스(135)에 요청하여 컬럼 데이터를 추출할 수도 있으며, 상기 검색 범위에 속하는 로우에 대한 로우 데이터를 데이터베이스(135)에 요청하여 로우 데이터를 추출할 수도 있다.
검색부(150)는 추출된 컬럼 데이터를 파싱하여 사용자가 원하는 검색 범위의 리드 데이터를 추출한다(S250). 컬럼 데이터에 포함된 각각의 리드 데이터는 구분 문자로 구별되어 있으므로, 구분 문자를 기준으로 리드 데이터를 파싱하여 추출할 수 있다.
리드 데이터 제공부(160)는 검색된 리드 데이터를 사용자에게 제공한다(S260). 검색된 리드 데이터는 화면상에 표시될 수도 있으며, 파일의 형태로 사용자에게 제공될 수도 있다.
이상과 같이, 본 발명의 실시예에 따르면 사용자로부터 입력받은 검색 범위에 대한 로우 키 및 컬럼 네임을 구하여, 데이터베이스(135)로부터 직접 컬럼 데이터를 추출하므로, 대용량 데이터베이스 내에서 신속하게 필요한 데이터를 추출할 수 있는 효과가 있다.
본 발명이 속하는 기술분야의 통상의 지식을 가진 자는 본 발명이 그 기술적 사상이나 필수적인 특징을 변경하지 않고서 다른 구체적인 형태로 실시될 수 있다는 것을 이해할 수 있을 것이다. 그러므로 이상에서 기술한 실시예들은 모든 면에서 예시적인 것이며 한정적이 아닌 것으로 이해해야만 한다. 본 발명의 범위는 상기 상세한 설명보다는 후술하는 특허청구의 범위에 의하여 나타내어지며, 특허청구의 범위의 의미 및 범위 그리고 그 균등 개념으로부터 도출되는 모든 변경 또는 변형된 형태가 본 발명의 범위에 포함되는 것으로 해석되어야 한다.

Claims (19)

  1. 기설정된 크기의 시작 오프셋 범위에 속하는 리드들에 대한 리드 데이터를 순차적으로 추출하는 단계, 상기 시작 오프셋 범위에 따라 산출되는 컬럼 넘버를 포함하는 컬럼 네임을 가지는 컬럼 데이터를 생성하는 단계; 및
    복수의 연속적인 시작 오프셋 범위에 대하여 복수의 상기 컬럼 데이터를 생성하고, 상기 복수의 컬럼 데이터를 하나의 로우 데이터로 하여 상기 복수의 연속적인 시작 오프셋 범위에 따라 산출되는 로우 넘버 및 상기 리드 데이터가 속하는 염색체의 번호를 포함하는 로우 키와 함께 데이터베이스에 입력하는 단계를 포함하는 염기서열 데이터 관리 방법.
  2. 제 1 항에 있어서,
    상기 리드 데이터는 상기 리드에서의 염기의 배열을 나타내는 염기서열 데이터를 포함하는 것을 특징으로 하는 염기서열 데이터 관리 방법.
  3. 제 1 항에 있어서,
    상기 데이터베이스는,
    상기 로우 키를 기준으로 다수의 물리적 저장소에 데이터를 분산하여 저장하는 NoSQL 데이터베이스인 것을 특징으로 하는 염기서열 데이터 관리 방법.
  4. 제 1 항에 있어서,
    상기 컬럼 데이터를 생성하는 단계는,
    하나의 컬럼 데이터를 위한 빈 문자열을 생성하는 단계, 및
    추출되는 리드 데이터의 시작 오프셋이 상기 시작 오프셋 범위를 초과하지 않는 동안, 염기서열 데이터 파일로부터 각 리드에 대한 리드 데이터를 순차적으로 추출하고, 기생성된 문자열에 포함된 이전의 리드 데이터와 구별하기 위해 구분문자를 이용하여 기생성된 문자열에 추가하는 것을 반복하는 단계를 포함하는 것을 특징으로 하는 염기서열 데이터 관리 방법.
  5. 삭제
  6. 제 4 항에 있어서,
    상기 염기서열 데이터 파일은 각 리드의 시작 오프셋을 기준으로 오름차순으로 리드 데이터가 정렬되어 있는 것을 특징으로 하는 염기서열 데이터 관리 방법.
  7. 제 1 항에 있어서,
    사용자로부터 검색 대상 리드들에 대한 시작 오프셋의 검색 범위를 입력받고, 상기 검색 범위의 상한값 및 하한값에 대한 로우 키와 컬럼 네임을 각각 산출하는 단계,
    상기 상한값에 대한 로우 키와 컬럼 네임 및 상기 하한값에 대한 로우 키와 컬럼 네임으로부터 상기 검색 범위에 해당하는 컬럼 데이터를 데이터베이스로부터 추출하는 단계, 및
    상기 컬럼 데이터를 파싱하여 상기 검색 범위에 해당하는 리드들의 리드 데이터를 추출하는 단계를 더 포함하는 것을 특징으로 하는 염기 서열 데이터 관리 방법.
  8. 삭제
  9. 삭제
  10. 제 1 항 내지 제 4 항 및 제 6 항 내지 제 7 항 중 어느 한 항의 방법을 수행하는 컴퓨터 프로그램을 저장한 컴퓨터로 읽을 수 있는 기록 매체.
  11. 기설정된 크기의 시작 오프셋 범위에 속하는 리드들에 대한 리드 데이터를 순차적으로 추출하는 리드 데이터 추출부,
    상기 순차적으로 추출되는 리드 데이터를 연결하여 상기 시작 오프셋 범위에 따라 산출되는 컬럼 네임을 가지는 컬럼 데이터를 생성하는 컬럼 데이터 생성부, 및
    복수의 연속적인 시작 오프셋 범위에 대한 복수의 컬럼 데이터를 하나의 로우 데이터로 하여 상기 복수의 연속적인 시작 오프셋 범위에 따라 산출되는 로우 넘버 및 상기 리드 데이터가 속하는 염색체의 번호를 포함하는 로우 키와 함께 데이터베이스에 입력하는 데이터 저장부를 포함하는 염기서열 데이터 관리 시스템.
  12. 제 11 항에 있어서,
    상기 리드 데이터는 상기 리드에서의 염기의 배열을 나타내는 염기서열 데이터를 포함하는 것을 특징으로 하는 염기서열 데이터 관리 시스템.
  13. 제 11 항에 있어서,
    상기 데이터베이스는,
    상기 로우 키를 기준으로 다수의 물리적 저장소에 데이터를 분산하여 저장하는 NoSQL 데이터베이스인 것을 특징으로 하는 염기서열 데이터 관리 시스템.
  14. 제 11 항에 있어서,
    상기 컬럼 데이터 생성부는,
    하나의 컬럼 데이터를 위한 빈 문자열을 생성하고,
    추출되는 리드 데이터의 시작 오프셋이 상기 시작 오프셋 범위를 초과하지 않는 동안, 상기 리드 데이터 추출부로부터 순차적으로 추출되는 리드 데이터를 기생성된 문자열에 포함된 이전의 리드 데이터와 구별하기 위해 구분문자를 이용하여 기생성된 문자열에 추가하는 것을 반복하는 것을 특징으로 하는 염기서열 데이터 관리 시스템.
  15. 삭제
  16. 제 11 항에 있어서,
    상기 리드 데이터 추출부는,
    각 리드의 시작 오프셋을 기준으로 오름차순으로 리드 데이터가 정렬되어 있는 염기서열 데이터 파일로부터 상기 리드 데이터를 추출하는 것을 특징으로 하는 염기서열 데이터 관리 시스템.
  17. 제 11 항에 있어서,
    사용자로부터 검색 대상 리드들에 대한 시작 오프셋의 검색 범위를 입력받는 쿼리 입력부, 및
    상기 검색 범위의 상한값 및 하한값에 대한 로우 키와 컬럼 네임을 각각 산출하고, 상기 상한값에 대한 로우 키와 컬럼 네임 및 상기 하한값에 대한 로우 키와 컬럼 네임으로부터 상기 검색 범위에 해당하는 컬럼 데이터를 데이터베이스로부터 추출하고, 상기 컬럼 데이터를 파싱하여 상기 검색 범위에 해당하는 리드들의 리드 데이터를 추출하는 검색부를 더 포함하는 것을 특징으로 하는 염기서열 데이터 관리 시스템.
  18. 삭제
  19. 삭제
KR20120068990A 2012-06-27 2012-06-27 염기서열 데이터 관리 방법 및 시스템 KR101375684B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20120068990A KR101375684B1 (ko) 2012-06-27 2012-06-27 염기서열 데이터 관리 방법 및 시스템

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120068990A KR101375684B1 (ko) 2012-06-27 2012-06-27 염기서열 데이터 관리 방법 및 시스템

Publications (2)

Publication Number Publication Date
KR20140006181A KR20140006181A (ko) 2014-01-16
KR101375684B1 true KR101375684B1 (ko) 2014-04-09

Family

ID=50141164

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120068990A KR101375684B1 (ko) 2012-06-27 2012-06-27 염기서열 데이터 관리 방법 및 시스템

Country Status (1)

Country Link
KR (1) KR101375684B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039657A (zh) * 2020-07-20 2020-12-04 北京邮电大学 一种用于生成密钥的方法、装置、设备以及存储介质

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102234896B1 (ko) 2018-11-08 2021-04-01 주식회사 쓰리빌리언 염색체 유전 변이 정보 저장 및 탐색을 위한 파일구조를 가진 데이터를 기록한 컴퓨터로 읽을 수 있는 기록 매체

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120041592A (ko) * 2010-10-21 2012-05-02 삼성에스디에스 주식회사 파티션 테이블을 이용한 염기서열 데이터 관리 시스템 및 방법

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20120041592A (ko) * 2010-10-21 2012-05-02 삼성에스디에스 주식회사 파티션 테이블을 이용한 염기서열 데이터 관리 시스템 및 방법

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Davy Suvee, ‘Big Data Genomics - How to efficiently store and retrieve mutation data’, 인터넷 아카이브[Online], 2011.08.18.
Davy Suvee, 'Big Data Genomics - How to efficiently store and retrieve mutation data', 인터넷 아카이브[Online], 2011.08.18. *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112039657A (zh) * 2020-07-20 2020-12-04 北京邮电大学 一种用于生成密钥的方法、装置、设备以及存储介质
CN112039657B (zh) * 2020-07-20 2021-05-25 北京邮电大学 一种用于生成密钥的方法、装置、设备以及存储介质

Also Published As

Publication number Publication date
KR20140006181A (ko) 2014-01-16

Similar Documents

Publication Publication Date Title
KR101266358B1 (ko) 다중 길이 시그니처 파일 기반 분산 색인 시스템 및 방법
CN101315640B (zh) 一种目录管理方法和装置
CN103902623B (zh) 用于在存储系统上存取文件的方法和系统
US20100023514A1 (en) Tokenization platform
US20080228783A1 (en) Data Partitioning Systems
CN104636502A (zh) 一种查询系统的数据加速查询方法
CN105260464A (zh) 数据存储结构的转换方法及装置
CN108241615A (zh) 数据去重方法和装置
CN110570928A (zh) 一种基于HBase和ozone的医疗影像文件存取方法
CN104834650A (zh) 一种有效查询任务生成方法及系统
KR101358793B1 (ko) 인덱스 파일 생성방법, 사전 인덱스 파일을 이용한 데이터 검색 방법 및 데이터 관리 시스템, 기록매체
JP5994490B2 (ja) データ検索プログラム、データベース装置および情報処理システム
KR101375684B1 (ko) 염기서열 데이터 관리 방법 및 시스템
CN105843809B (zh) 数据处理方法和装置
CN105260465A (zh) 一种图数据处理服务的方法、装置
KR20090065137A (ko) 클러스터 환경에서 고확장성을 지원하는 대용량 고차원데이터 색인 장치 및 방법
KR20130114294A (ko) 유전 정보 관리 장치 및 방법
JP2009093556A (ja) インデクス構築方法、文書検索装置及びインデクス構築プログラム
KR20130047042A (ko) 분산 데이터 저장소를 위한 데이터 파티셔닝 장치 및 방법
CN105025013A (zh) 基于优先级Trie树的动态IP匹配模型
CN110442614B (zh) 元数据的搜索方法及装置、电子设备、存储介质
KR101035037B1 (ko) 동적 임계값이 적용된 유사문서 분류화 장치 및 방법
CN106547843B (zh) 多级分类查询方法和装置
CN114416741A (zh) 基于多级索引的kv数据写入读取方法、装置及存储介质
CN103827854A (zh) 检索方法以及信息管理装置

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20170313

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180312

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190311

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20200305

Year of fee payment: 7