KR20160117691A - 스토리지 시스템 및 그것의 동작 방법 - Google Patents

스토리지 시스템 및 그것의 동작 방법 Download PDF

Info

Publication number
KR20160117691A
KR20160117691A KR1020150044347A KR20150044347A KR20160117691A KR 20160117691 A KR20160117691 A KR 20160117691A KR 1020150044347 A KR1020150044347 A KR 1020150044347A KR 20150044347 A KR20150044347 A KR 20150044347A KR 20160117691 A KR20160117691 A KR 20160117691A
Authority
KR
South Korea
Prior art keywords
data
query
query plan
storage
tables
Prior art date
Application number
KR1020150044347A
Other languages
English (en)
Other versions
KR102415962B1 (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 KR1020150044347A priority Critical patent/KR102415962B1/ko
Priority to US15/058,298 priority patent/US10482087B2/en
Publication of KR20160117691A publication Critical patent/KR20160117691A/ko
Application granted granted Critical
Publication of KR102415962B1 publication Critical patent/KR102415962B1/ko

Links

Images

Classifications

    • G06F17/30218
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation
    • G06F17/30289
    • G06F17/30442

Abstract

본 발명의 실시 예에 따른 스토리지 시스템은 데이터 스토리지 및 호스트를 포함할 수 있다. 데이터 스토리지는 복수의 테이블들로 분류된 데이터를 저장하는 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함할 수 있다. 호스트는 복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라 상기 복수의 테이블들을 참조하여 질의 계획을 생성하고, 상기 데이터 스토리지에 저장된 데이터로부터 필터링된 데이터를 읽어내도록 상기 질의 계획을 실행하는 데이터베이스 매니저를 구동할 수 있다. 상기 스토리지 컨트롤러는 상기 불휘발성 메모리 장치에 저장된 데이터에 대해 필터링 동작을 수행하여 상기 필터링된 데이터를 출력하는 패턴 매칭기를 포함할 수 있다. 본 발명에 따르면, 데이터베이스의 검색 효율이 향상될 수 있다.

Description

스토리지 시스템 및 그것의 동작 방법{STORAGE SYSTEM AND METHOD FOR OPERATING THEREOF}
본 발명은 스토리지 시스템에 관한 것으로서, 좀 더 상세하게는, 데이터 스토리지, 및 데이터 스토리지를 관리하기 위한 데이터베이스 매니저를 포함하는 스토리지 시스템에 관한 것이다.
데이터베이스 시스템에 있어서, 사용자의 질의 처리 시간을 단축할 수 있는 가장 효과적인 방법 중 하나는 호스트와 스토리지 디바이스 간의 데이터 이동을 최소화하는 것이다. 그 중 대표적인 방법으로써, 필요한 데이터만을 호스트로 전송하는 초기 필터링(Early Filtering)이다.
기존에도 초기 필터링을 지원하는 하드웨어들이 제안되어 왔으나, 이들은 초기 필터링을 하드웨어로 설계한 하드웨어 가속 처리기(Hardware Accelerated Processor)이다. 이러한 하드웨어 가속 처리기는 DBMS (Data Base Management System)에 종속적이다. 즉, DBMS의 질의 분석 및 처리 로직은 하드웨어로 구현되어야하므로, 이러한 하드웨어가 다양한 DBMS를 지원하는 것은 어렵다.
따라서, 초기 필터링을 지원하면서도 다양한 DBMS를 지원할 수 있는 범용 반도체설계자산 Intellectual Property; IP), 및 이러한 IP를 관리하는 DBMS를 개발하는 것이 중요한 문제로 부각되고 있다.
본 발명의 목적은 효율적으로 데이터 검색을 가능하게 하는 스토리지 시스템을 제공하는 데 있다.
본 발명의 실시 예에 따른 스토리지 시스템은, 복수의 테이블들로 분류된 데이터를 저장하는 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하는 데이터 스토리지, 그리고 복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라 상기 복수의 테이블들을 참조하여 질의 계획을 생성하고, 상기 데이터 스토리지에 저장된 데이터로부터 필터링된 데이터를 읽어내도록 상기 질의 계획을 실행하는 데이터베이스 매니저를 구동하는 호스트를 포함하되, 상기 스토리지 컨트롤러는 필터링 동작에 의해 상기 불휘발성 메모리 장치에 저장된 데이터로부터 상기 필터링된 데이터를 출력하도록 구성된 패턴 매칭기를 포함할 수 있다.
실시 예로써, 상기 데이터베이스 매니저는, 상기 복수의 테이블들 중 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블을 첫 번째 조인 순서로 선택하여 상기 질의 계획을 생성하는 질의 최적화기, 상기 질의 계획에 따라 상기 질의 계획을 실행하도록 요청하는 실행 엔진, 그리고 상기 질의 계획 실행 요청에 따라 상기 복수의 검색 조건들 중 상기 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하는 스토리지 엔진을 포함할 수 있다.
다른 실시 예로써, 상기 질의 최적화기는 상기 복수의 테이블들 각각의 레코드 개수 및 상기 질의 요청의 검색 조건의 개수를 기초로 하여 상기 질의 계획을 생성할 수 있다.
또 다른 실시 예로써, 상기 질의 최적화기는 상기 데이터 스토리지의 데이터 입출력의 양이 가장 적도록 상기 선택된 테이블을 제외한 나머지 테이블들에 순열을 적용하여 상기 질의 계획을 생성할 수 있다.
또 다른 실시 예로써, 상기 스토리지 엔진은, 상기 질의 요청을 분석하여 오류가 있는지 여부를 판단하는 질의 분석기를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 스토리지 컨트롤러는 상기 불휘발성 메모리 장치와 데이터를 송수신하도록 구성된 불휘발성 메모리 인터페이스를 포함하되, 상기 패턴 매칭기는 상기 불휘발성 인터페이스에 제공되고, 상기 바이너리 패턴에 기초하여 상기 필터링 동작을 수행할 수 있다.
또 다른 실시 예로써, 상기 데이터 스토리지는, 상기 필터링 동작 결과, 상기 바이너리 패턴과 매칭되는 데이터를 갖는 페이지의 정보에 기초하여 생성된 질의 실행 결과를 임시적으로 저장하는 버퍼를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 페이지의 정보는 검색 중인 페이지가 상기 바이너리 패턴과 매칭되는 데이터를 포함하는지 여부를 나타내는 매칭 플래그, 그리고 상기 검색 중인 페이지에서 상기 매칭이 발생한 처음 위치와 마지막 위치에 관한 정보 중 적어도 하나를 포함할 수 있다.
본 발명의 실시 예에 따른, 데이터 스토리지 및 상기 데이터 스토리지에 저장된 복수의 테이블들로 분류된 데이터를 관리하는 호스트를 포함하는 스토리지 시스템의 동작 방법은, 복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라 상기 복수의 테이블들을 참조하여 질의 계획을 생성하는 단계, 그리고 상기 불휘발성 메모리 장치에 저장된 데이터로부터 필터링된 데이터를 읽어내도록 상기 질의 계획을 실행하는 단계를 포함하되, 상기 필터링된 데이터는 상기 불휘발성 메모리 장치를 제어하는 스토리지 컨트롤러에 제공된 패턴 매칭기로부터 출력될 수 있다.
실시 예로써, 상기 질의 계획을 생성하는 단계는, 상기 복수의 테이블들 중 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블을 첫 번째 조인 순서로 선택하는 단계를 포함할 수 있다.
다른 실시 예로써, 상기 선택하는 단계는 상기 복수의 테이블들 각각의 레코드 개수 및 상기 질의 요청의 검색 조건의 개수를 참조하여 실행될 수 있다.
또 다른 실시 예로써, 상기 데이터 스토리지의 데이터 입출력의 양이 가장 적도록 상기 선택된 테이블을 제외한 나머지 테이블들에 순열을 적용하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 질의 계획을 실행하는 단계는, 상기 질의 계획에 따라 상기 질의 계획을 실행하도록 요청하는 단계, 상기 질의 계획 실행 요청에 따라 상기 복수의 검색 조건들 중 상기 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하는 단계, 상기 바이너리 패턴과 매칭되는 데이터를 검색하는 단계를 포함할 수 있다.
또 다른 실시 예로써, 상기 질의 계획을 실행하는 단계는, 상기 바이너리 패턴과 매칭되는 상기 데이터를 갖는 페이지를 읽는 단계, 상기 선택된 테이블을 제외한 나머지 테이블들 각각에 대응하는 키 값을 참조하여 상기 질의 요청에 부합하는 데이터를 검색하는 단계, 그리고 상기 읽혀진 페이지 및 상기 검색된 데이터에 기초하여 최종 검색 결과를 출력하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 질의 계획을 생성하는 단계는 상기 질의 요청을 분석하여 오류가 있는지 여부를 검사하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따른, 데이터 스토리지 및 상기 데이터 스토리지를 관리하는 호스트를 포함하는 스토리지 시스템의 동작 방법은, 복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라, 데이터 스토리지에 저장된 복수의 테이블들을 참조하여 질의 계획을 생성하는 단계로써, 상기 질의 계획은 상기 복수의 테이블들 중 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블이 첫 번째 조인 순서로 선택되는 것, 상기 복수의 검색 조건들 중 상기 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하는 단계, 그리고 상기 바이너리 패턴과 매칭되는 데이터를 검색하는 단계를 포함할 수 있다.
실시 예로써, 상기 검색하는 단계는 데이터 스토리지에 제공된 패턴 매칭기에 의해 실행될 수 있다.
다른 실시 예로써, 상기 질의 계획을 생성하는 단계는 상기 복수의 테이블들 각각의 레코드 개수 및 상기 질의 요청의 검색 조건의 개수를 참조하여 실행될 수 있다.
또 다른 실시 예로써, 상기 바이너리 패턴과 매칭되는 상기 데이터를 갖는 페이지를 읽는 단계, 상기 선택된 테이블을 제외한 나머지 테이블들 각각에 대응하는 키 값을 참조하여 상기 질의 요청에 부합하는 데이터를 검색하는 단계, 그리고 상기 읽혀진 페이지 및 상기 검색된 데이터에 기초하여 최종 검색 결과를 출력하는 단계를 더 포함할 수 있다.
또 다른 실시 예로써, 상기 질의 계획을 생성하는 단계 이전에, 상기 질의 요청을 분석하여 오류가 있는지 여부를 검사하는 단계를 더 포함할 수 있다.
본 발명의 실시 예에 따르면, 데이터를 효율적으로 검색할 수 있는 스토리지 시스템을 제공할 수 있다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템을 보여주는 블록도이다.
도 2는 본 도 1에 도시된 호스트의 구성을 상세하게 보여주는 블록도이다.
도 3은 도 1에 도시된 데이터 스토리지의 구성을 상세하게 보여주는 블록도이다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템의 일부를 보여주는 블록도이다.
도 5는 사용자의 질의문의 일 예를 보여주는 도면이다.
도 6은 본 발명의 실시 예에 따라 생성된 질의 계획을 보여주는 표이다.
도 7은 본 발명의 실시 예에 따른 질의 계획을 실행하는 방법을 보여주는 도면이다.
도 8은 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 보여주는 순서도이다.
도 9는 본 발명의 실시 예에 따라 질의 계획을 생성하는 방법을 보여주는 순서도이다.
도 10은 본 발명의 실시 예에 따라 질의 계획을 실행하는 방법을 보여주는 순서도이다.
도 11은 본 발명의 실시 예에 따라 질의 계획을 실행하는 방법을 보여주는 순서도이다.
앞의 일반적인 설명 및 다음의 상세한 설명 모두 예시적이라는 것이 이해되어야 하며, 청구된 발명의 부가적인 설명이 제공되는 것으로 여겨져야 한다. 참조 부호들이 본 발명의 바람직한 실시 예들에 상세히 표시되어 있으며, 그것의 예들이 참조 도면들에 표시되어 있다. 가능한 어떤 경우에도, 동일한 참조 번호들이 동일한 또는 유사한 부분을 참조하기 위해서 설명 및 도면들에 사용된다.
한 요소 또는 층이 다른 요소 또는 층에 "연결되는", "결합하는", 또는 "인접하는" 것으로 언급되는 때에는, 다른 요소 또는 층에 직접적으로 연결되거나, 결합 되거나, 또는 인접하는 것일 수 있고, 혹은 그 사이에 끼워지는 요소 또는 층이 존재할 수 있음이 잘 이해될 것이다. 본 명세서에서 사용되는 "및/또는"이라는 용어는 나열된 요소들의 하나 또는 그 이상의 가능한 조합들을 포함할 것이다.
비록 "제 1", "제 2" 등의 용어가 여기서 다양한 요소를 설명하기 위해 사용될 수 있다 하더라도, 이들 요소는 이 용어들에 의해 한정되지 않는다. 이 용어들은 단지 다른 것들로부터 하나의 구성요소를 구별하기 위해 사용될 수 있다. 따라서, 본 명세서에서 사용된 제 1 구성요소, 구간, 층과 같은 용어는 본 발명의 사상을 벗어나지 않는 범위 내에서 제 2 구성요소, 구간, 층 등으로 사용될 수 있다.
"아래의", "하부의", "위의", "상부의", 및 이와 유사한 용어들은 직접적으로(directly) 또는 다른 층을 개재하여(indirectly) 배치되는 경우를 모두 포함한다. 그리고, 공간적으로 상대적인 이러한 용어들은 도면에 도시된 방향에 더하여 다른 방향을 포함하는 것으로 이해되어야 한다. 예를 들어, 만일 장치가 뒤집히면, "아래의"로 설명된 구성요소는 "위의"가 될 것이다.
본 명세서에서 설명되는 용어는 단지 특정한 실시 예를 설명하기 위한 목적으로 사용되며, 그것에 한정되지 않는다. "하나의"와 같은 용어는 달리 명백하게 지칭하지 않으면 복수의 형태를 포함하는 것으로 이해되어야 한다. "포함하는" 또는 "구성되는"과 같은 용어는 설명된 특징, 단계, 동작, 성분, 및/또는 구성요소의 존재를 명시하며, 추가적인 하나 또는 그 이상의 특징, 단계, 동작, 성분, 구성요소 및/또는 그들의 그룹의 존재를 배제하지 않는다.
이하, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자가 본 발명의 기술적 사상을 용이하게 실시할 수 있도록 본 발명의 실시 예를 첨부된 도면을 참조하여 설명할 것이다.
도 1은 본 발명의 실시 예에 따른 스토리지 시스템(1000)을 보여주는 블록도이다. 도 1을 참조하면, 스토리지 시스템(1000)은 호스트(1100) 및 데이터 스토리지(1200)를 포함할 수 있다.
호스트(1100)는 데이터베이스 매니저(1123)를 포함할 수 있다. 데이터베이스 매니저(1123)는 사용자의 질의 요청에 따라 질의 계획을 생성하고, 질의 계획을 실행한다. 질의 계획은 사용자가 원하는 데이터를 데이터 스토리지(1200)로부터 검색하기 위한 계획을 의미할 수 있다. 데이터베이스 매니저(1123)는 사용자의 질의 요청으로부터 특정 패턴을 생성할 수 있다. 이하, 데이터 스토리지(1200)에 저장된 데이터를 필터링 하는데 사용되는 이러한 특정 패턴을 바이너리 패턴(binary pattern; BP)으로 칭하기로 한다. 호스트는 바이너리 패턴(BP)을 데이터 스토리지(1200)로 전달하고, 데이터 스토리지(1200)는 바이너리 패턴(BP)을 이용하여 필터링 동작을 수행한다. 그리고, 필터링된 데이터에 기초하여 사용자가 원하는 데이터(DATA)는 호스트(1100)로 전달될 수 있다.
데이터 스토리지(1200)는 스토리지 컨트롤러(1210) 및 불휘발성 메모리 장치(1220)를 포함할 수 있다. 스토리지 컨트롤러(1210)는 패턴 매칭기(1216)를 포함할 수 있다. 패턴 매칭기(1216)는 불휘발성 메모리 장치(1220)에 저장된 데이터를 읽어내는 과정에서 필터링 동작을 수행할 수 있다. 일반적인 데이터베이스 관리 시스템(Data Base Management System; DBMS)의 경우, 사용자의 질의 요청에 따라 필요한 데이터를 검색하는 과정에서 호스트(1100)에서 필터링 동작이 실행된다. 따라서, 사용자에게 필요하지 않은 데이터도 일단 읽어내어 호스트로 전달되므로, 호스트(1100)와 스토리지 장치(1200) 사이의 불필요한 데이터 입출력이 발생한다. 이는 스토리지 시스템의 부하를 증가시키며, 검색 효율을 감소시키는 요인이 된다.
그러나, 본 발명의 실시 예에 따르면, 스토리지 컨트롤러(1210)에 패턴 매칭기(1216)를 제공함으로써, 불필요한 데이터의 입출력을 방지할 수 있다. 사용자에게 필요한 데이터 외의 데이터는 스토리지 컨트롤러에서 필터링되므로, 호스트로 전달되는 데이터의 양이 감소한다. 예를 들어, 패턴 매칭기(1216)는 스토리지 컨트롤러(1210)와 불휘발성 메모리 장치(1220) 사이의 인터페이스를 제공하는 불휘발성 메모리 인터페이스(미도시)에 제공될 수 있다.
도 2는 본 도 1에 도시된 호스트(1100)의 구성을 상세하게 보여주는 블록도이다. 도 2를 참조하면, 호스트(1100)는 적어도 하나의 호스트 프로세서(1110), 호스트 메모리(1120), 호스트 스토리지(1130), ROM(1140), 및 호스트 인터페이스(1150)를 포함할 수 있다.
호스트 프로세서(1110)는 호스트(1100)의 전반적인 동작을 제어할 수 있다. 호스트 프로세서(1110)는 호스트를 구동하기 위한 운영 체제(operating system; OS)(1121), 애플리케이션(1122), 및 데이터베이스 매니저(1123)를 구동할 수 있다. 예를 들어, 운영 체제(1121), 애플리케이션(1122), 및 데이터베이스 매니저(1123)는 호스트 메모리(1220)에 로딩되어 구동될 수 있다.
호스트 메모리(1220)에는 호스트를 구동하거나 제어하기 위한 운영 체제(1121), 애플리케이션(1122), 및 데이터베이스 매니저(1123)가 로딩될 수 있다. 본 발명의 실시 예에 따른 데이터베이스 매니저(1123)는 사용자의 질의 요청에 따라 질의 계획을 생성하고 실행한다. 그 과정에서, 데이터베이스 매니저(1123)는 필터링된 데이터가 호스트(1100)로 로딩될 수 있도록 하는데 사용되는 바이너리 패턴을 생성한다. 데이터베이스 매니저(1123)가 질의 계획을 생성하고 실행하는 과정에 대해서는 도 4 이하에서 상세하게 설명될 것이다.
호스트 스토리지(1130)는 호스트(1100)를 구동하는데 필요한 운영 체제, 애플리케이션 등이 저장될 수 있다. 운영 체제, 애플리케이션 등은 호스트 메모리(1120)에 로딩되어 호스트(1100)를 구동시킬 수 있다.
ROM(1140)은 초기 부팅(booting)에 필요한 코드 데이터를 저장할 수 있다.
호스트 인터페이스(1150)는 호스트(1100)와 데이터 스토리지(1200) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 호스트(1100)와 데이터 스토리지(1200)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 적어도 하나를 통해 연결될 수 있다. 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, Card 인터페이스 등과 같은 다양한 인터페이스를 포함할 수 있다.
도 3은 도 1에 도시된 데이터 스토리지(1200)의 구성을 상세하게 보여주는 블록도이다. 도 3을 참조하면, 데이터 스토리지(1200)는 스토리지 컨트롤러(1210), 불휘발성 메모리 장치(1220), 및 버퍼(1230)를 포함할 수 있다.
스토리지 컨트롤러(1210)는 적어도 하나의 프로세서(1211), 워킹 메모리(1212), 호스트 인터페이스(1213), 버퍼 매니저(1214), 및 불휘발성 메모리 인터페이스(1215)를 포함할 수 있다.
프로세서(1211)는 스토리지 컨트롤러(1210)의 전반적인 동작을 제어할 수 있다. 프로세서(1211)는 스토리지 컨트롤러(1210)를 구동하기 위한 펌웨어(firmware)를 구동할 수 있다. 펌웨어는 워킹 메모리(1212)에 로딩되어 구동될 수 있으며, 펌 웨어는 플래시 변환 계층(flash translation layer; FTL) 등이 있을 수 있다.
워킹 메모리(1212)에는 스토리지 컨트롤러(1210)를 제어하기 위한 소프트웨어, 펌웨어가 로딩될 수 있다. 예를 들어, 워킹 메모리(1212)에는 플래시 변환 계층(FTL)이 로드될 수 있다. 워킹 메모리(1120)는 캐시 메모리, DRAM(dynamic random access memory), SRAM(static random access memory), PRAM(Phase-change RAM), 또는 플래시 메모리 장치 중 적어도 하나를 포함할 수 있다.
호스트 인터페이스(1213)는 호스트(1100)와 스토리지 컨트롤러(1210) 사이의 인터페이스를 제공할 수 있다. 호스트(1100)와 스토리지 컨트롤러(1210)는 다양한 표준 인터페이스들(Standardized Interfaces) 중 적어도 하나를 통해 연결될 수 있다. 표준 인터페이스들은 ATA(Advanced Technology Attachment), SATA(Serial ATA), e-SATA(external SATA), SCSI(Small Computer Small Interface), SAS(Serial Attached SCSI), PCI(Peripheral component Interconnection), PCI-E(PCI Express), USB(Universal Serial Bus), IEEE 1394, Card 인터페이스 등과 같은 다양한 인터페이스를 포함할 수 있다.
버퍼 매니저(1214)는 스토리지 컨트롤러(1210)와 버퍼(1230) 사이의 인터페이스를 제공한다. 불휘발성 메모리 장치(1220)로 저장될 데이터나, 불휘발성 메모리 장치(1220)로부터 읽혀질 데이터는 버퍼 매니저(1214)를 거쳐 버퍼(1230)에 임시적으로 저장될 수 있다.
불휘발성 메모리 인터페이스(1215)는 스토리지 컨트롤러(1210)와 불휘발성 메모리 장치(1230) 사이의 인터페이스를 제공할 수 있다. 예를 들어, 스토리지 컨트롤러(1210)는 불휘발성 메모리 인터페이스(1215)를 통하여 불휘발성 메모리 장치(1220)와 데이터를 송수신할 수 있다.
불휘발성 메모리 인터페이스(1215)는 패턴 매칭기(1216)를 포함할 수 있다. 패턴 매칭기(1216)는 사용자의 질의 요청에 따른 질의 계획을 실행하는 과정에서, 불휘발성 메모리 장치(1220)에 저장된 데이터를 필터링할 수 있다. 예를 들어, 데이터베이스 매니저(도 2 참조, 1123)가 바이너리 패턴을 불휘발성 메모리 장치(1220)의 스토리지 컨트롤러(1210)로 전송하고, 불휘발성 메모리 장치(1220)에 저장된 복수의 페이지들 각각에 대해 검색을 요청하면, 바이너리 패턴과 매칭되는 데이터를 포함하는 페이지의 정보가 패턴 매칭기(1216)로 전달될 수 있다. 호스트(1100)로부터의 읽기 요청에 따라, 스토리지 컨트롤러(1210)는 상기 정보를 참조하여, 바이너리 패턴과 매칭되는 데이터를 포함하는 페이지들을 호스트로 전달한다. 호스트(1100)는 수신된 페이지들을 이용하여 질의 계획을 실행하고, 최종적으로 사용자의 질의 요청에 부합하는 데이터는 사용자에게 제공될 수 있다.
불휘발성 메모리 장치(1220)는 메모리 셀들이 연결되는 셀 스트링이 기판에 수직으로 형성되는 3차원 불휘발성 메모리 장치일 수 있다. 그러나, 이에 한정되지 않으며, 플래너(planar) 타입의 메모리 장치일 수도 있다. 불휘발성 메모리 장치는 복수의 채널들(CH1 내지 CHi)을 통하여 불휘발성 메모리 인터페이스(1215)에 연결될 수 있다.
버퍼(1230)는 불휘발성 메모리 장치(1220)로 저장될 데이터, 또는 불휘발성 메모리 장치(1220)로부터 읽혀질 데이터를 임시적으로 저장할 수 있다. 버퍼(1230)는 비록 도면에 DRAM(dynamic random access memory)으로 도시되었으나, 이에 한정되지 않으며, SRAM(static random access memory), PRAM(Phase-change RAM) 또는 이들의 다양한 조합일 수 있다.
도 4는 본 발명의 실시 예에 따른 스토리지 시스템의 일부를 보여주는 블록도이다. 본 도면에는, 호스트(1100)의 데이터베이스 매니저(1123)와 데이터 스토리지(1200)가 간략히 도시되었다.
데이터베이스 매니저(1123)는 데이터 스토리지(1200)에 저장된 데이터를 관리한다. 데이터베이스 매니저(1123)는 호스트 프로세서(도 3 참조, 1211)에 의해 동작 또는 구동되는 호스트 시스템일 수 있다. 예를 들어, 데이터 베이스 매니저(1123)는 질의 분석기(1124), 질의 최적화기(1125), 실행 엔진(1126), 및 스토리지 엔진(1127)으로 구성될 수 있다. 도 4를 참조하여, 사용자의 질의 요청에 따라 데이터베이스 매니저(1123)가 질의 계획을 생성하고 이를 실행하여 데이터 스토리지(1200)로부터 원하는 데이터를 검색하는 과정에 대해 간략히 설명될 것이다.
질의 분석기(1124)는 사용자의 질의 요청(즉, 사용자가 입력한 질의문)을 분석하여 문법, 또는 의미상의 오류가 있는지 여부를 검사한다. 검사 결과 오류가 없다면, 분석의 결과물은 질의 최적화기(1125)로 전달된다.
질의 최적화기(1125)는 질의 분석의 결과물을 바탕으로 최적의 질의 계획을 생성한다. 최적의 질의 계획이란 호스트와 데이터 스토리지(1200) 간에 발생하는 데이터의 입출력을 최소화할 수 있는 질의 계획을 의미할 수 있다. 본 발명의 실시 예에 따르면, 질의 최적화기(1125)는 데이터 스토리지(1200)에 저장된 테이블들 중 다른 테이블을 참조하지 않는 테이블을 조인 순서(join order)의 첫 번째로 선택한다. 그리고, 레코드의 개수, 및 질의 요청을 구성하는 검색 조건들 중 내부 검색 조건의 개수 등도 함께 고려하여 조인 순서의 첫 번째 테이블을 선택한다. 질의 최적화기(1125)는 선택된 테이블을 기초로 하여 최적의 질의 계획을 생성하고, 이를 실행 엔진(1126)으로 전달한다.
실행 엔진(1126)은 질의 최적화기(1125)가 생성한 질의 계획을 실행한다. 이때, 실행 엔진(1126)은 스토리지 엔진(1127)으로 필터링을 시작하라는 요청(request)을 전송할 수 있다.
스토리지 엔진(1127)은 스토리지 엔진(1127)으로부터의 요청에 따라 질의 계획을 참조하여 패턴 매칭기(1216)가 데이터를 필터링 하는데 사용되는 바이너리 패턴을 생성하고, 패턴의 길이를 구할 수 있다. 바이너리 패턴은 첫 번째 조인 순서로 선택된 테이블과 관련된 내부 검색 조건을 참조하여 생성될 수 있다. 이때, 내부 검색 조건이란, 사용자가 입력한 질의 요청을 구성하는 검색 조건들 중, 다른 테이블을 참조하지 않는 (즉, 다른 테이블과 관련되지 않는) 검색 조건을 의미할 수 있다.
스토리지 엔진(1127)은 바이너리 패턴을 패턴 및 패턴의 길이에 관한 정보를 패턴 매칭기(1216)로 전달할 수 있다. 그리고, 스토리지 엔진(1127)은 바이너리 패턴과 매칭되는 데이터를 포함하는 페이지를 읽어내는 명령(Read_CMD)을 데이터 스토리지(1200)로 전송할 수 있다. 스토리지 컨트롤러(1210)는 읽기 명령(Read_CMD)에 따라 불휘발성 메모리 장치(1220)에 저장된 데이터를 읽어낸다.
다만, 읽혀진 데이터가 전부 호스트로 전달되지 않는다. 패턴 매칭기(1216)는 수신된 바이너리 패턴 및 패턴의 길이를 참조하여, 불휘발성 메모리 장치(1220)에 저장된 데이터를 필터링 한다. 좀 더 상세하게 설명하면, 불휘발성 메모리 장치(1220)에 저장된, 페이지 단위로 저장된 데이터를 읽어내는 과정에서 페이지에 특정 패턴이 존재하는지 여부를 검사하는 필터링 동작이 실행된다. 바이너리 패턴과 매칭되는 데이터를 포함하는 페이지의 정보(예를 들어, matching flag)는 스토리지 엔진으로 전달되고, 데이터베이스 매니저(1123)가 질의 요청을 실행하는데 이용된다.
본 발명의 실시 예에 따르면, 데이터 스토리지(1200)에 제공된 패턴 매칭기(1216)는 바이너리 패턴을 이용하여 불휘발성 메모리 장치에 저장된 데이터를 필터링한다. 그리고, 필터링된 데이터를 이용하여 사용자의 질의 요청을 실행함으로써, 호스트와 데이터 스토리지(1200) 사이에서 발생하는 데이터의 입출력을 최소화시킬 수 있다.
<질의 계획 생성>
도 5는 사용자의 질의문의 일 예를 보여주는 도면이다. 도 6은 본 발명의 실시 예에 따라 생성된 질의 계획을 보여주는 표이다. 예시적으로, 도 5의 질의문은 최저 가격 공급자를 검색하기 위한 질의문으로 구성되어 있으며, SQL (Structured Query Language)로 작성되었다. 본 예제를 통하여, 본 발명의 실시 예에 따른 데이터베이스 매니저가 질의 계획을 생성하는 과정을 설명하기로 한다.
사용자가 도 5의 질의를 입력하면, 질의 분석기(도 4 참조, 1124)는 질의를 분석하여 오류가 있는지 여부를 판단하다. 오류가 없다면, 질의 분석기는 질의를 질의 최적화기(1125)로 전달한다.
질의 최적화기(도 4 참조, 1125)가 하는 가장 중요한 작업 중의 하나는 테이블들을 연결하는 순서, 즉, 조인 순서(join order)를 결정하는 일이다. 불휘발성 메모리 장치에 저장된 데이터는 일정한 분류에 따라 테이블 형태로 저장된다. 사용자에 의해 입력되는 질의는 대부분 다수의 테이블을 참조하기 때문에, 조인 순서에 따라 검색되는 데이터 (즉, 레코드)의 양이 달라지고, 질의 계획을 처리하는 시간도 달라진다. 일반적인 질의 최적화기는 상수 테이블 또는 레코드 수가 가장 적은 테이블을 첫 번째 조인 순서로 하여 질의 계획을 실행한다. 반면, 본 발명의 실시 예에 따른 질의 최적화기는 필터링 효과가 가장 클 것으로 예상되는 테이블을 첫 번째 조인 순서로 하는 질의 계획을 생성한다.
질의 최적화기(도 4 참조, 1125)는 필터링 효과가 가장 클 것으로 예상되는 테이블을 선택하기 위해 불휘발성 메모리 장치에 저장된 테이블들 각각에 내부 검색 조건이 있는지 판단한다. 내부 검색 조건이란 다른 테이블을 참조하지 않는 검색 조건을 의미할 수 있다.
이해를 돕기 위해, 도 5에 도시된 질의를 살펴보면, 'part'와 'region' 테이블만 내부 검색 조건을 가지고 있다. 'p_partkey = ps_partkey'와 같은 검색 조건은 다른 테이블들을 참조하기 때문에 이는 고려하지 않는다.
그 다음, 내부 검색 조건을 가진 테이블들 중에서 초기 필터링 효과가 가장 클 것으로 예상되는 테이블을 선택한다. 선택시 테이블들 각각의 전체 레코드 개수, 내부 검색 조건의 개수, 내부 검색 조건 연산자의 종류 등을 고려한다.
우선, 전체 레코드 개수가 가장 많은 테이블이 첫 번째 조인 순서로 선택될 수 있다. 이는 레코드의 개수가 많을수록 필터링되는 데이터의 양이 많아지므로, 데이터 스토리지로부터 출력되는 데이터의 양을 줄일 수 있는 확률이 높아지기 때문이다. 또한, 내부 검색 조건의 개수가 많을수록 조건을 만족하는 레코드의 개수도 줄일 수 있는 확률이 높아진다. 검색 조건 연산자의 경우, 예를 들어, 범위 매치(range match)보다는 완전 매치(exact match)가 레코드의 개수를 줄일 수 있는 확률이 높다. 따라서, 이러한 요소들을 종합적으로 고려하여 초기 필터링 효과가 가장 클 것으로 예상되는 테이블을 선택한다.
예를 들어, 도 6을 참조하면, 본 발명의 실시 예에 따른 질의 최적화기도 4 참조, 1125)는 'part' 테이블을 첫 번째 조인 순서로 하는 질의 계획을 생성한다. 'partsupp' 테이블, 'supplier' 테이블, 및 'nation' 테이블은 외부 검색 조건(즉, 다른 테이블을 참조하는 검색 조건)을 가지고 있으므로, 첫 번째 조인 순서의 테이블의 대상에서 배제된다. 그리고, 'part' 테이블과 'region' 테이블 중, 'part' 테이블의 레코드 수 및 검색 조건의 수가 'region'보다 많으므로, 'part' 테이블이 첫 번째 조인 순서로 선택된다.
이후의 조인 순서는 순열(permutation)을 적용했을 때 데이터의 입출력이 가장 작게 되도록 결정된다. 순열을 적용하여 조인 순서를 결정하는 방법에 대해서는 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에게 용이한 사항이므로 상세한 설명은 생략하기로 한다. 도 6에 도시된 질의 계획이 생성되면, 질의 최적화기는 실행 엔진(도 4 참조, 1126)으로 질의 계획을 전송하고, 실행 엔진은 스토리지 엔진(도 4 참조, 1127)으로 필터링을 시작하라는 요청을 전송한다.
<질의 계획 실행>
도 7은 본 발명의 실시 예에 따른 질의 계획을 실행하는 방법을 보여주는 도면이다. 도 6과 함께 도 7을 참조하여, 질의 계획을 실행하는 방법을 좀 더 상세하게 설명하기로 한다.
질의 최적화기에 의해 질의 계획이 생성되면, 실행 엔진(1126)은 스토리지 엔진(1127)으로 필터링을 시작하라는 요청을 전송한다(S105).
스토리지 엔진(1127)은 실행 엔진(1126)으로부터의 요청에 따라 첫 번째 조인 순서로 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하고 패턴의 길이를 구한다. 바이너리 패턴은 패턴 매칭기(도 4 참조, 1216)가 불휘발성 메모리 장치에 저장된 데이터를 읽는 과정에서 사용자가 원하는 특정 데이터를 검색하는데 이용된다.
스토리지 엔진(1127)에 의해 생성되는 바이너리 패턴의 개수는 검색 조건의 종류에 따라 달라질 수 있다. 예를 들어, 검색 조건은 동일성 체크(equality check)(예를 들어, '='과 같은), 서브스트링 체크(예를 들어, 'str%', '%str%', '%str'과 같은), 및 범위 체크(range check)(예를 들어, 'between val1 and val2', '>', '>=', '<', '<='과 같은) 등이 있을 수 있다. 'part' 테이블은 두 개의 검색 조건을 포함하고 있으므로, 총 2 개의 바이너리 패턴이 생성될 수 있다. 예를 들어, 검색 조건 'p_size = 15' 및 'BRASS'는 각각 일반적인 바이너리 표현 방식에 따른 "80 00 00 0f" 및 아스키 코드(American Standard Code Information Interchange code; ASCII code) "42 52 41 53 53"로 변환될 수 있다. 변환되는 코드의 종류는 이에 한정되지 않으며, 디바이스가 인식할 수 있는 다양한 코드일 수 있다.
스토리지 엔진(1127)은 생성된 바이너리 패턴을 패턴 매칭기(도 1 참조, 1216)로 전송할 수 있다(S110).
스토리지 엔진(1127)은 패턴 매칭기(1216)로 매치 커맨드(Match CMD)를 전송할 수 있다(S115). 매치 커맨드(Match CMD)는 불휘발성 메모리 장치에 저장된 페이지들 중, 바이너리 패턴(BP)과 매칭되는 데이터를 포함하는 페이지를 검색하라는 명령일 수 있다. 실시 예로써, 하나의 매치 커맨드(Match CMD)에 의해 복수의 페이지들(예를 들어, 수백~수천 페이지)에 대해 매칭 동작이 실행될 수 있다.
스토리지 컨트롤러(1210)는 매치 커맨드(Match CMD)에 따라, 불휘발성 메모리 장치(1220)에 저장된 데이터 중 바이너리 패턴과 일치하는 데이터를 검색한다 (S120). 좀 더 구체적으로 설명하면, 패턴 매칭기(도 1 참조, 1216)는 불휘발성 메모리 장치(1220)에 저장된 페이지들이 바이너리 패턴과 일치하는 데이터를 포함하는지 여부를 페이지 단위로 검색할 수 있다(S120). 그리고 패턴 매칭기(도 1 참조, 1216)는 바이너리 패턴과 일치하는 데이터를 포함하는 페이지에 관한 정보(즉, Matching DATA)를 스토리지 엔진(1127)으로 전달할 수 있다.
이때, 매칭 데이터(Matching DATA)는 검색중인 페이지가 바이너리 패턴과 매칭되는 데이터를 포함하는지 여부를 나타내는 매칭 플래그(matching flag), 그리고 검색 중인 페이지에서 매칭이 발생한 처음 위치(start offset) 및 마지막 위치(end offset)에 관한 정보를 포함할 수 있다. 예를 들어, 검색 중인 페이지가 바이너리 패턴과 매칭되는 데이터를 포함한다면, 해당 페이지의 매칭 플래그는 “1”로 표기될 것이며, 매칭 플래그 정보는 스토리지 엔진(1127)으로 전달될 것이다(S125). 검색 중인 페이지에서 매칭이 발생한 처음 및 마지막 위치에 관한 정보를 전송하는 이유는, 처음 위치 및 마지막 위치 사이에 바이너리 패턴과 일치하는 데이터를 더 포함할 수 있기 때문이다.
반면, 검색 중인 페이지가 바이너리 패턴과 매칭되는 데이터를 포함하지 않는다면, 에러 코드가 리턴될 수 있다(S130). 즉, 해당 페이지의 매칭 플래그는 “0”으로 표기될 수 있다.
실시 예로써, 패턴 매칭기(도 1 참조, 1216)는 매칭 여부를 판단하도록 요청된 복수의 페이지들(예를 들어, 수백~수천 페이지)에 관한 매칭 데이터(Matching DATA) 및 에러 코드를 모은 후, 한 번에 스토리지 엔진(1127)로 전달할 수 있다.
스토리지 컨트롤러(1127)는 매칭 데이터(Matching DATA)를 참조하여, 바이너리 패턴(BP)과 매칭되는 데이터를 포함하는 페이지에 대한 읽기 명령(Read CMD)을 스토리지 컨트롤러(1210)로 전달할 수 있다(S135).
읽기 명령(Read CMD)에 따라, 불휘발성 메모리 장치(1220)에 저장된 데이터 중 바이너리 패턴(BP)과 매칭되는 데이터를 포함하는 페이지가 읽혀질 수 있다(S140). 읽혀진 페이지는 실행 엔진(1126)으로 전달될 수 있다.
실행 엔진(1126)은 읽혀진 페이지에 기초하여 질의를 실행한다(S150). 그리고 질의 실행 결과는 호스트 메모리(1120)에 저장된다.
스토리지 엔진(1127)은 불휘발성 메모리 장치에 저장된 모든 페이지들에 대해 매칭 동작이 실행되었는지 여부를 판단할 수 있다(S160). 만일 그렇다면(Yes), 호스트 메모리(1120)에 축적된 질의 실행 결과는 사용자에게 제공된다(S165). 반면, 그렇지 않다면(No), S115 단계로 이동한다. 그 후, 스토리지 엔진(1127)은 불휘발성 메모리 장치(1220)에 저장된 다음 페이지들(예를 들어, 수백~수천 페이지)에 대해 바이너리 패턴(BP)과 매칭되는 데이터를 포함하는 페이지를 검색하도록 매치 커맨드(CMD)를 스토리지 컨트롤러(1210)로 전송할 것이다. 결국 불휘발성 메모리 장치(1220)에 저장된 모든 페이지들에 대해 매칭 동작이 실행되어 질의 실행 결과가 사용자에게 제공될 것이다(S165).
본 발명의 실시 예에 따르면, 검색 조건의 속성, 레코드의 개수, 검색 조건의 개수 등을 고려하여, 필터링되는 데이터가 가장 많을 것으로 예상되는 테이블이 첫 번째 조인 순서로 선택된다. 그리고, 스토리지 컨트롤러에 제공되는 패턴 매칭기는 질의 계획이 실행되는 과정에서 생성된 바이너리 패턴을 이용하여 필터링 동작을 수행한다. 그 결과, 호스트와 데이터 스토리지 사이에서 발생하는 데이터의 입출력을 최소화할 수 있으며, 검색 속도를 향상시킬 수 있다.
도 8은 본 발명의 실시 예에 따른 스토리지 시스템의 동작 방법을 보여주는 순서도이다.
S210 단계에서, 사용자의 질의에 따라 복수의 테이블들을 참조하여 질의 계획이 생성된다. 질의 계획은 필터링 효과가 가장 클 것으로 예상되는 테이블을 첫 번째 조인 순서로 선택한다. 필터링 효과가 가장 클 것으로 예상되는 테이블은 내부 검색 조건의 유무, 테이블에 포함된 레코드의 개수, 검색 조건의 개수 등을 기초로 하여 선택된다.
S220 단계에서, 질의 계획이 실행된다. 질의 계획을 구성하는 테이블들 중 첫 번째 조인 순서로 선택된 테이블의 데이터가 필터링되며, 이후의 테이블들의 데이터는 해당 테이블들의 키를 참조하여 검색된다. 그리고, 최종적으로 사용자의 질의 요청에 부합하는 데이터가 검색된다.
도 9는 본 발명의 실시 예에 따라 질의 계획을 생성하는 방법을 보여주는 순서도이다.
S310 단계에서, 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블이 첫 번째 조인 오더로 선택된다. 즉, 자신의 테이블만 참조하는 검색 조건인 내부 검색 조건과 관련된 테이블이 첫 번째 조인 오더로 선택된다. 만일 내부 검색 조건과 관련된 테이블이 복수인 경우, 테이블에 포함된 레코드의 개수, 검색 조건의 개수 등을 고려하여 테이블을 선택한다.
S320 단계에서, 총 데이터 입출력이 가장 적도록, 나머지 테이블들에 대해 순열을 적용한다. 순열을 적용하는 방법은 본 발명이 속하는 기술 분야에서 통상의 지식을 지닌 자에게 자명하므로, 상세한 설명은 생략하기로 한다. 본 발명의 실시 예에 따라 생성된 질의 계획에 따라, 호스트와 데이터 스토리지 사이에 발생하는 데이터의 입출력이 최소화되고, 검색 효율이 향상될 수 있다.
도 10은 본 발명의 실시 예에 따라 질의 계획을 실행하는 방법을 보여주는 순서도이다.
S410 단계에서, 질의 구문에 대한 문법적 오류가 있는지 여부가 판단된다. 본 단계는 데이터베이스 매니저를 구성하는 질의 분석기(도 4 참조, 1124)에 의해 실행될 수 있다.
S420 단계에서, 데이터 스토리지에 저장된 테이블들이 내부 검색 조건과 관련된 테이블인지 여부가 판단된다. 내부 검색 조건이란 다른 테이블을 참조하지 않는 테이블을 의미한다. 판단 결과에 따라 동작 분기가 발생한다. 내부 검색 조건과 관련된 테이블이라면(Yes), S430 단계로 이동한다. 다른 테이블을 참조하는 검색 조건과 관련된 테이블이라면(No), S440 단계로 이동한다.
S430 단계에서, 내부 검색 조건과 관련된 테이블이 복수인지 여부가 판단된다. 판단 결과에 따라 동작 분기가 발생한다. 내부 검색 조건과 관련된 테이블이 복수라면(Yes), S440 단계로 이동하고, 그렇지 않으면, S450 단계로 이동한다.
S440 단계에서, 레코드의 개수 및 내부 검색 조건의 개수를 고려하여 테이블이 선택된다. 레코드의 양이 더 많고, 내부 검색 조건의 개수가 더 많은 테이블이 첫 번째 조인 오더로 선택된다.
S450 단계에서, 내부 검색 조건과 관련된 테이블이 1 개이므로, 내부 검색 조건과 관련된 테이블이 첫 번째 조인 오더로 선택된다.
S460 단계에서, 일반적인 방법에 따라 첫 번째 조인 오더가 선택된다. 즉, 내부 검색 조건만을 갖는 테이블이 존재하지 않으므로, 가장 적은 수의 레코드를 갖거나 인덱스를 갖는 테이블을 첫 번째 조인 오더로 선택한다. 이때, 인덱스는 검색 성능을 향상시키기 위해 키 값 및 포인터를 모아놓은 데이터 구조일 수 있다.
S470 단계에서, 첫 번째 조인 오더로 선택된 테이블을 제외한 나머지 테이블들에 대해, 총 데이터 입출력이 최소가 되도록 순열이 적용될 수 있다.
도 11은 본 발명의 다른 실시 예에 따라 질의 계획을 실행하는 방법을 보여주는 순서도이다.
S510 단계에서, 질의 계획을 실행하도록 요청된다. 예를 들어, 질의 계획이 생성되면, 실행 엔진은 스토리지 엔진에게 질의 계획을 실행하도록 요청할 수 있다.
S520 단계에서, 첫 번째 조인 오더로 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴이 생성될 수 있다. 스토리지 엔진에 의해 생성된 바이너리 패턴 및 바이너리 패턴의 길이에 관한 정보는 데이터 스토리지 컨트롤러의 매턴 매칭기로 전달된다. 그리고, 불휘발성 메모리 장치에 저장된 데이터에 대한 읽기 명령도 함께 전달될 수 있다.
S530 단계에서, 바이너리 패턴에 기초하여 필터링 동작이 실행될 수 있다. 패턴 매칭기는 불휘발성 메모리 장치에 저장된 데이터로부터 바이너리 패턴과 매칭되는 데이터를 검색할 수 있다. 본 단계는, 첫 번째 조인 오더로 선택된 테이블을 구성하는 페이지들 각각에 대해 실행된다.
S540 단계에서, 필터링된 데이터에 기초하여 질의 계획이 실행된다. 실행 엔진은 바이너리 패턴과 일치하는 데이터를 갖는 페이지를 읽어내고, 나머지 테이블들 각각에 대응하는 키 값을 참조하여 사용자의 질의문에 부합하는 데이터를 검색할 수 있다.
S550 단계에서, 최종 검색 결과가 출력된다. 예를 들어, 최종 검색 결과는 호스트 메모리에 로딩될 수 있으며, 디스플레이 장치 등 다양한 표시 매체에 표시될 수 있다.
본 발명의 실시 예에 따르면, 필터링의 효과를 극대화시키기 위해 내부 검색 조건의 유무, 테이블들 각각 레코드의 개수, 검색 조건의 개수 등을 고려하여 질의 계획을 생성한다. 그리고, 스토리지 컨트롤러에 제공된 패턴 매칭기는 질의 계획 실행 과정에서 생성된 바이너리 패턴을 이용하여 불휘발성 메모리 장치에 저장된 데이터를 필터링한다. 그 결과, 호스트와 데이터 스토리지 사이에 발생하는 데이터 입출력을 최소화하여 검색 속도가 향상될 수 있다.
이상, 본 발명의 상세한 설명에서 구체적인 실시 예에 관하여 설명되었다. 그러나, 본 발명의 범위에서 벗어나지 않는 한도 내에서 본 발명을 여러 가지 형태로 변형할 수 있은 물론이다. 따라서, 본 발명의 범위는 상술한 실시 예에 국한되지 않으며, 후술하는 특허 청구범위뿐만 아니라 본 발명의 특허 청구범위와 균등한 것들에 의해 정해져야 한다.
1000: 스토리지 시스템 1100: 호스트
1110: 호스트 프로세서 1120: 호스트 메모리
1121: 운영 체제 1122: 애플리케이션
1123: 데이터베이스 매니저 1130: 호스트 스토리지
1140: ROM 1150: 호스트 인터페이스
1200: 데이터 스토리지 1210: 스토리지 컨트롤러
1211: 프로세서 1212: 워킹 메모리
1213: 호스트 인터페이스 1214: 버퍼 매니저
1215: 불휘발성 메모리 인터페이스 1216: 패턴 매칭기
1220: 불휘발성 메모리 장치 1230: 버퍼

Claims (10)

  1. 스토리지 시스템에 있어서:
    복수의 테이블들로 분류된 데이터를 저장하는 불휘발성 메모리 장치 및 상기 불휘발성 메모리 장치를 제어하는 스토리지 컨트롤러를 포함하는 데이터 스토리지; 그리고
    복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라 상기 복수의 테이블들을 참조하여 질의 계획을 생성하고, 상기 데이터 스토리지에 저장된 데이터로부터 필터링된 데이터를 읽어내도록 상기 질의 계획을 실행하는 데이터베이스 매니저를 구동하는 호스트를 포함하되,
    상기 스토리지 컨트롤러는 필터링 동작에 의해 상기 불휘발성 메모리 장치에 저장된 데이터로부터 상기 필터링된 데이터를 출력하도록 구성된 패턴 매칭기를 포함하는 스토리지 시스템.
  2. 제 1 항에 있어서,
    상기 데이터베이스 매니저는:
    상기 복수의 테이블들 중 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블을 첫 번째 조인 순서로 선택하여 상기 질의 계획을 생성하는 질의 최적화기;
    상기 질의 계획에 따라 상기 질의 계획을 실행하도록 요청하는 실행 엔진; 그리고
    상기 질의 계획 실행 요청에 따라 상기 복수의 검색 조건들 중 상기 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하는 스토리지 엔진을 포함하는 스토리지 시스템.
  3. 제 2 항에 있어서,
    상기 질의 최적화기는 상기 복수의 테이블들 각각의 레코드 개수 및 상기 질의 요청의 검색 조건의 개수를 기초로 하여 상기 질의 계획을 생성하는 스토리지 시스템.
  4. 제 3 항에 있어서,
    상기 질의 최적화기는 상기 데이터 스토리지의 데이터 입출력의 양이 가장 적도록 상기 선택된 테이블을 제외한 나머지 테이블들에 순열을 적용하여 상기 질의 계획을 생성하는 스토리지 시스템.
  5. 제 2 항에 있어서,
    상기 스토리지 컨트롤러는 상기 불휘발성 메모리 장치와 데이터를 송수신하도록 구성된 불휘발성 메모리 인터페이스를 포함하되,
    상기 패턴 매칭기는 상기 불휘발성 인터페이스에 제공되고, 상기 바이너리 패턴에 기초하여 상기 필터링 동작을 수행하는 스토리지 시스템.
  6. 데이터 스토리지 및 상기 데이터 스토리지에 저장된 복수의 테이블들로 분류된 데이터를 관리하는 호스트를 포함하는 스토리지 시스템의 동작 방법에 있어서:
    복수의 검색 조건들을 포함하는 사용자의 질의 요청에 따라 상기 복수의 테이블들을 참조하여 질의 계획을 생성하는 단계; 그리고
    상기 불휘발성 메모리 장치에 저장된 데이터로부터 필터링된 데이터를 읽어내도록 상기 질의 계획을 실행하는 단계를 포함하되,
    상기 필터링된 데이터는 상기 불휘발성 메모리 장치를 제어하는 스토리지 컨트롤러에 제공된 패턴 매칭기로부터 출력되는 스토리지 시스템의 동작 방법.
  7. 제 6 항에 있어서,
    상기 질의 계획을 생성하는 단계는:
    상기 복수의 테이블들 중 다른 테이블을 참조하지 않는 검색 조건과 관련된 테이블을 첫 번째 조인 순서로 선택하는 단계를 포함하는 스토리지 시스템의 동작 방법.
  8. 제 7 항에 있어서,
    상기 선택하는 단계는 상기 복수의 테이블들 각각의 레코드 개수 및 상기 질의 요청의 검색 조건의 개수를 참조하여 실행되는 스토리지 시스템의 동작 방법.
  9. 제 7 항에 있어서,
    상기 질의 계획을 실행하는 단계는:
    상기 질의 계획에 따라 상기 질의 계획을 실행하도록 요청하는 단계;
    상기 질의 계획 실행 요청에 따라 상기 복수의 검색 조건들 중 상기 선택된 테이블과 관련된 검색 조건으로부터 바이너리 패턴을 생성하는 단계;
    상기 바이너리 패턴과 매칭되는 데이터를 검색하는 단계를 포함하는 스토리지 시스템의 동작 방법.
  10. 제 9 항에 있어서,
    상기 질의 계획을 실행하는 단계는:
    상기 바이너리 패턴과 매칭되는 상기 데이터를 갖는 페이지를 읽는 단계;
    상기 선택된 테이블을 제외한 나머지 테이블들 각각에 대응하는 키 값을 참조하여 상기 질의 요청에 부합하는 데이터를 검색하는 단계; 그리고
    상기 읽혀진 페이지 및 상기 검색된 데이터에 기초하여 최종 검색 결과를 출력하는 단계를 더 포함하는 스토리지 시스템의 동작 방법.
KR1020150044347A 2015-03-30 2015-03-30 스토리지 시스템 및 그것의 동작 방법 KR102415962B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020150044347A KR102415962B1 (ko) 2015-03-30 2015-03-30 스토리지 시스템 및 그것의 동작 방법
US15/058,298 US10482087B2 (en) 2015-03-30 2016-03-02 Storage system and method of operating the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020150044347A KR102415962B1 (ko) 2015-03-30 2015-03-30 스토리지 시스템 및 그것의 동작 방법

Publications (2)

Publication Number Publication Date
KR20160117691A true KR20160117691A (ko) 2016-10-11
KR102415962B1 KR102415962B1 (ko) 2022-07-04

Family

ID=57017236

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020150044347A KR102415962B1 (ko) 2015-03-30 2015-03-30 스토리지 시스템 및 그것의 동작 방법

Country Status (2)

Country Link
US (1) US10482087B2 (ko)
KR (1) KR102415962B1 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102276912B1 (ko) 2017-06-07 2021-07-13 삼성전자주식회사 스토리지 시스템 및 이의 동작 방법
US11756619B2 (en) 2021-03-31 2023-09-12 Micron Technology, Inc. Key storage for sorted string tables using content addressable memory
CN113535719A (zh) * 2021-07-07 2021-10-22 锐掣(杭州)科技有限公司 数据过滤方法、数据过滤装置、存储介质及产品
US11914587B2 (en) 2021-10-13 2024-02-27 Western Digital Technologies, Inc. Systems and methods for key-based indexing in storage devices
CN115952203B (zh) * 2023-03-08 2023-08-04 阿里巴巴(中国)有限公司 数据查询方法、设备、系统及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US7620615B1 (en) * 2001-10-26 2009-11-17 Teradata Us, Inc. Joins of relations in an object relational database system
US8051069B2 (en) * 2008-01-02 2011-11-01 At&T Intellectual Property I, Lp Efficient predicate prefilter for high speed data analysis
US8214352B2 (en) * 2008-11-26 2012-07-03 Hewlett-Packard Development Company Modular query optimizer
US8224715B2 (en) * 2004-11-12 2012-07-17 Amazon Technologies, Inc. Computer-based analysis of affiliate site performance
US8352459B2 (en) * 2009-07-23 2013-01-08 International Business Machines Corporation SQL queries for simple network management protocol management information base tables
US20140089294A1 (en) * 2012-09-26 2014-03-27 Microsoft Corporation Sql generation for assert, update and delete relational trees

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7401069B2 (en) 2003-09-11 2008-07-15 International Business Machines Corporation Background index bitmapping for faster query performance
US7499917B2 (en) 2005-01-28 2009-03-03 International Business Machines Corporation Processing cross-table non-Boolean term conditions in database queries
US7343370B2 (en) * 2005-03-07 2008-03-11 Hewlett-Packard Development Company, L.P. Plan generation in database query optimizers through specification of plan patterns
US7908259B2 (en) 2006-08-25 2011-03-15 Teradata Us, Inc. Hardware accelerated reconfigurable processor for accelerating database operations and queries
US7958158B2 (en) * 2008-06-19 2011-06-07 International Business Machines Corporation Aggregating database queries
US8380738B2 (en) * 2009-03-17 2013-02-19 Nec Laboratories America, Inc. System and methods for database distribution and querying over key-based scalable storage
US8244715B2 (en) 2009-04-09 2012-08-14 Paraccel, Inc. System and method for processing database queries
US20110055199A1 (en) * 2009-08-25 2011-03-03 Siddiqui Kashif A Join order optimization in a query optimizer for queries with outer and/or semi joins
US10803066B2 (en) 2010-06-29 2020-10-13 Teradata Us, Inc. Methods and systems for hardware acceleration of database operations and queries for a versioned database based on multiple hardware accelerators
US9535953B2 (en) * 2010-11-19 2017-01-03 Hewlett Packard Enterprise Development Lp Systems and methods for managing a database
US9934280B2 (en) 2011-05-13 2018-04-03 Entit Software Llc Join order restrictions
US8914353B2 (en) 2011-12-20 2014-12-16 Sap Se Many-core algorithms for in-memory column store databases
US9378246B2 (en) 2012-05-03 2016-06-28 Hiromichi Watari Systems and methods of accessing distributed data
US8533182B1 (en) * 2012-05-31 2013-09-10 David P. Charboneau Apparatuses, systems, and methods for efficient graph pattern matching and querying
US9747456B2 (en) * 2013-03-15 2017-08-29 Microsoft Technology Licensing, Llc Secure query processing over encrypted data

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7111282B2 (en) * 2001-06-12 2006-09-19 Hewlett-Packard Development Company, L.P. Instrumenting a software program and collecting data from the instrumented software program by type
US7620615B1 (en) * 2001-10-26 2009-11-17 Teradata Us, Inc. Joins of relations in an object relational database system
US8224715B2 (en) * 2004-11-12 2012-07-17 Amazon Technologies, Inc. Computer-based analysis of affiliate site performance
US8051069B2 (en) * 2008-01-02 2011-11-01 At&T Intellectual Property I, Lp Efficient predicate prefilter for high speed data analysis
US8214352B2 (en) * 2008-11-26 2012-07-03 Hewlett-Packard Development Company Modular query optimizer
US8352459B2 (en) * 2009-07-23 2013-01-08 International Business Machines Corporation SQL queries for simple network management protocol management information base tables
US20140089294A1 (en) * 2012-09-26 2014-03-27 Microsoft Corporation Sql generation for assert, update and delete relational trees

Also Published As

Publication number Publication date
US20160292229A1 (en) 2016-10-06
US10482087B2 (en) 2019-11-19
KR102415962B1 (ko) 2022-07-04

Similar Documents

Publication Publication Date Title
CN107247808B (zh) 一种分布式NewSQL数据库系统及图片数据查询方法
KR102485179B1 (ko) 설명 정보 확정 방법, 장치, 전자 기기 및 컴퓨터 저장 매체
US8332389B2 (en) Join order for a database query
US20190236188A1 (en) Query optimizer constraints
US8510316B2 (en) Database processing system and method
US20170083573A1 (en) Multi-query optimization
KR102415962B1 (ko) 스토리지 시스템 및 그것의 동작 방법
WO2017183065A1 (ja) リレーショナルデータベースのチューニング装置及び方法
CN1713179A (zh) 在对象模型中的影响分析
JP5791149B2 (ja) データベース・クエリ最適化のためのコンピュータで実装される方法、コンピュータ・プログラム、およびデータ処理システム
CN107480260B (zh) 大数据实时分析方法、装置、计算设备及计算机存储介质
US20210240710A1 (en) Query plan overrides
US20160342646A1 (en) Database query cursor management
EP3396542B1 (en) Database operating method and device
US20080183663A1 (en) Dynamic Index Selection for Database Queries
US20140067853A1 (en) Data search method, information system, and recording medium storing data search program
US11354313B2 (en) Transforming a user-defined table function to a derived table in a database management system
WO2012164738A1 (ja) データベース管理システム、装置及び方法
US20120179669A1 (en) Systems and methods for searching a search space of a query
CN114297204A (zh) 一种异构数据源的数据存储、检索方法及装置
CN101405727B (zh) 数据库系统中的统计视图的管理
CN112380256B (zh) 能源系统数据存取的方法、数据库、计算机可读存储介质
US20220300513A1 (en) Asynchronous query optimization using spare hosts
WO2017019883A1 (en) Locality-sensitive hashing for algebraic expressions
JP2022018435A (ja) データ管理装置及びデータ管理方法

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