KR20230116470A - 하이브리드 인덱스 시스템을 위한 동작 방법 - Google Patents

하이브리드 인덱스 시스템을 위한 동작 방법 Download PDF

Info

Publication number
KR20230116470A
KR20230116470A KR1020220013443A KR20220013443A KR20230116470A KR 20230116470 A KR20230116470 A KR 20230116470A KR 1020220013443 A KR1020220013443 A KR 1020220013443A KR 20220013443 A KR20220013443 A KR 20220013443A KR 20230116470 A KR20230116470 A KR 20230116470A
Authority
KR
South Korea
Prior art keywords
data
ssd
tree
segment
hot
Prior art date
Application number
KR1020220013443A
Other languages
English (en)
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 KR1020220013443A priority Critical patent/KR20230116470A/ko
Publication of KR20230116470A publication Critical patent/KR20230116470A/ko

Links

Images

Classifications

    • 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/24569Query processing with adaptation to specific hardware, e.g. adapted for using GPUs or SSDs
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F16/2246Trees, e.g. B+trees
    • 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/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/061Improving I/O performance
    • G06F3/0611Improving I/O performance in relation to response time
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • G06F3/068Hybrid storage device

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Computational Linguistics (AREA)
  • Human Computer Interaction (AREA)
  • Software Systems (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

본 발명의 실시 예에 따른 시맨틱 웹 환경에서 SSD와 HDD를 저장 매체로 사용하는 하이브리드 인덱스 시스템의 동작 방법은, 검색 요청된 링크드 데이터에 대응하는 RDF 트리플을 3차원의 버킷 단위로 R*-tree를 사용하여 필터링하는 단계, 상기 필터링된 버킷 단위를 Kd-tree로 인덱싱하여 트리플 패턴을 구체화하는 정제 단계, 상기 트리플 패턴을 조인 함수를 사용하여 조인(Join)하는 단계, 상기 RDF 트리플을 의사결정 트리를 사용하여 핫 세그먼트 또는 콜드 세그먼트로 분류하는 단계, 그리고 상기 핫 세그먼트는 상기 SSD에, 상기 콜드 세그먼트는 상기 HDD에 저장하는 단계를 포함한다.

Description

하이브리드 인덱스 시스템을 위한 동작 방법{OPERATING METHOD OF HYBIRD INDEX SYSTEM}
본 발명은 링크드 데이터 시스템에 관한 것으로, 좀더 구체적으로는 하이브리드 인덱스 시스템에서 활용되는 인덱싱 및 핫-콜드 세그먼트 분류 방법에 관한 것이다.
링크드 데이터(Linked data)는 시맨틱 웹(Semantic Web) 환경을 만들기 위한 방법의 하나로 웹상에 존재하는 데이터를 개별 URI(Uniform Resource Identification)로 식별하고, 공개, 공유하는 방법이다. 링크드 데이터의 핵심 개념은 일반 웹 아키텍처를 하나의 글로벌한 규모의 데이터베이스처럼 사용할 수 있다는 것이다. 링크드 데이터를 게시하고 여러 리소스를 연결하기 위해 URI, RDF(Resource Description Framework), HTTP(Hypertext Transfer Protocol) 기술이 적용된다. 여기서 RDF는 주어(Subject), 술어(Predicate), 목적어(Object)의 트리플(Triple) 형태로 구성된다. 그동안 링크드 데이터는 시맨틱 웹(Semantic Web)을 구현하기 위한 최적의 방법으로 인식되어 왔지만 해결해야 할 이슈들이 아직까지 남아있다. 예를 들면, RDF 트리플은 스키마를 사용하지 않고 그래프로 모델링되기 때문에 기존의 XML 솔루션 등에 직접 적용할 수 없다. 따라서 링크드 데이터의 검색 및 저장을 위한 새로운 솔루션이 필요하다.
링크드 데이터 검색 및 저장 기술에 관한 기존 연구는 다음과 같이 분류할 수 있다. 첫째, 모든 RDF 트리플을 로컬 저장소에 복사 및 관리하는 로컬 접근 방식(Local approach) 이다. 로컬 접근 방식은 RDF 데이터를 미리 수집하여 사전 처리 후 결합된 데이터를 로컬 저장소에 저장한다. 이 방식은 네트워크 트래픽이 발생하지 않기 때문에 응답 속도는 빠르지만, 최신 데이터를 반영하지 못한다. 둘째, 재귀적인 URI 탐색 엔진을 사용하여 분산된 저장소에 접근하는 실시간 탐색 방식(Live exploration approach)이다. 실시간 탐색 방식은 분산된 SPARQL(SPARQL Protocol and RDF Query Language) 엔드 포인트에 대해 검색을 수행한다. 이 방식은 데이터를 동기화할 필요가 없으며 최신 데이터를 반영할 수 있지만, 게시자가 신뢰할 수 있는 SPARQL 엔드 포인트를 제공한다고 보장할 수 없다. 셋째, 효율적인 검색 처리를 위해 링크드 데이터 셋에 대해 인덱싱하는 인덱스 방식(Index approach)이다. 인덱스를 사용함으로써 분산되어 있는 데이터 셋들을 효율적으로 탐색할 수 있고, 필요한 부분만 빠르게 필터링할 수 있지만, 인덱스의 구축 및 유지 보수에 큰 비용이 필요하다. 따라서, 각 방식의 단점을 보완하기 위해 인덱스 방식과 실시간 탐색 방식을 융합한 하나의 새로운 하이브리드 인덱스 시스템의 개발에 대한 요구가 발생한다.
링크드 데이터를 효율적으로 검색 및 저장하는 기존 연구는 대부분 HDD(Hard Disk Drive)를 기반으로 진행되어 왔다. 링크드 데이터는 대용량 데이터를 얼마나 효율적으로 저장하고, 원하는 정보를 빨리 찾아낼 수 있느냐가 하나의 중요한 목표가 될 수 있다. 이를 위해선 HDD보다 SSD(Solid State Drive)를 사용하는 것이 더욱 효율적일 수 있다. 하지만, SSD의 가격 하락이 계속 진행되고 있다고 해도 여전히 SSD의 가격은 2020년 기준 1GByte당 240원으로 1GByte당 94원인 HDD에 비해 2.6배나 비싸다. 그렇기 때문에 전체 저장 장치를 SSD로 대체하는 것은 대단히 비효율적이다. 따라서, SSD 성능의 일정 수준을 유지하면서 비용은 최소한으로 사용하기 위해 HDD와 SSD를 함께 사용하는 하이브리드 저장 시스템이 요구되는 실정이다.
(1) 한국 공개특허공보 10-2019-0084203 (2019.07.16) (2) 한국 공개특허공보 10-2020-0073302 (2020.06.24)
본 발명은 상술한 기술적 과제를 해결하기 위한 것으로써, 본 발명의 목적은 분산되어 있는 최신 데이터 셋들을 인덱싱하여 검색 속도를 향상시키고, 의사결정 트리를 사용하여 핫 세그먼트는 SSD에, 콜드 세그먼트는 HDD에 저장함으로써 SSD의 사용량을 절약할 수 있는 하이브리드 인덱스 시스템의 동작 방법을 제공하는 데 있다.
본 발명의 실시 예에 따른 시맨틱 웹 환경에서 SSD와 HDD를 저장 매체로 사용하는 하이브리드 인덱스 시스템의 동작 방법은, 검색 요청된 링크드 데이터에 대응하는 RDF 트리플을 3차원의 버킷 단위로 R*-tree를 사용하여 필터링하는 단계, 상기 필터링된 버킷 단위를 Kd-tree로 인덱싱하여 트리플 패턴을 구체화하는 정제 단계, 상기 트리플 패턴을 조인 함수를 사용하여 조인(Join)하는 단계, 상기 RDF 트리플을 의사결정 트리를 사용하여 핫 세그먼트 또는 콜드 세그먼트로 분류하는 단계, 그리고 상기 핫 세그먼트는 상기 SSD에, 상기 콜드 세그먼트는 상기 HDD에 저장하는 단계를 포함한다.
실시 예로서, 상기 조인 함수는 Nested-Loop에 대응한다.
실시 예로서, 상기 핫 세그먼트 또는 상기 콜드 세그먼트로 분류하는 단계는, 상기 RDF 트리플의 주어(S), 술어(P), 목적어(O)의 요소들을 해시 함수로 처리하여 저장하고, 최근성(Rec) 속성, 접근 횟수에 대응하는 카운트(Count) 속성, 그리고 핫 또는 콜드 여부를 지시하는 타입(Type) 속성을 저장하는 단계, 그리고 상기 타입 속성에 대한 엔트로피와, 상기 최근성 속성에 대한 상기 타입 속성의 엔트로피를 사용하여 핫 세그먼트와 콜드 세그먼트를 식별하는 단계를 포함한다.
실시 예로서, 상기 저장하는 단계에서, 상기 SSD에 저장되는 데이터는 상기 SSD의 페이지 크기의 배수가 될 때까지 쓰기 데이터를 버퍼에 수집한 후에 상기 SSD로 기입된다.
실시 예로서, 상기 조인하는 단계에서, 조인 결과를 사용자에게 반환하는 단계를 더 포함한다.
본 발명의 실시 예에 따르면, SSD 성능의 일정 수준을 유지하면서 비용은 최소한으로 사용하기 위해 HDD와 SSD를 함께 사용하는 하이브리드 인덱스 시스템을 구현할 수 있다.
도 1은 본 발명의 실시 예에 따른 하이브리드 인덱스 시스템을 예시적으로 보여주는 블록도이다.
도 2는 본 발명의 여과 단계를 처리하기 위한 R*-tree를 보여주는 도면이다.
도 3은 본 발명의 정제 단계를 처리하기 위한 Kd-tree(K dimensional-tree)를 보여주는 도면이다.
도 4는 인덱스 조인 검색 방법을 간략히 보여주는 순서도이다.
도 5는 본 발명의 실시 예에 따른 핫-콜드 세그먼트 분류를 위한 식별 테이블을 보여주는 도면이다.
도 6은 본 발명의 핫-콜드 세그먼트 분류 알고리즘을 예시적으로 보여주는 순서도이다.
도 7은 본 발명의 SSD 쓰기 연산 알고리즘을 예시적으로 보여주는 도면이다.
도 8은 본 발명에 따른 알고리즘의 성능을 분석하기 위한 데이터 셋들을 간략히 보여주는 테이블이다.
도 9, 도 10, 그리고 도 11은 의사결정 트리가 'DBpedia', 'Drugbank', 'LinkedGeoData'의 핫-콜드 데이터를 식별한 과정을 각각 보여준다.
도 12는 의사결정 트리가 각 데이터 셋을 식별한 결과의 정확도를 도시한 그래프이다.
도 13은 의사결정 트리가 식별한 핫-콜드 데이터를 사용하여 각 데이터를 적절한 저장 장치로 재배치한 결과를 보여준다.
도 14는 SSD만 사용한 시스템과 본 발명의 하이브리드 저장 장치를 사용한 시스템(Hybrid Storage System으로 HSS라 함), 그리고 HDD만 사용한 시스템(HDD라 함)의 검색 성능을 비교한 그래프이다.
도 15는 페이지 크기의 배수 쓰기 연산과 즉시 쓰기 연산을 수행했을 때의 성능을 비교한 그래프이다.
이하, 본 발명의 일부 실시 예들을 예시적인 도면을 참조하여 상세하게 설명한다. 각 도면의 구성요소들에 참조 부호를 부가함에 있어서, 동일한 구성 요소들에 대해서는 비록 다른 도면상에 표시되더라도 가능한 한 동일한 부호를 가질 수 있다. 또한, 본 발명을 설명함에 있어, 관련된 공지 구성 또는 기능에 대한 구체적인 설명이 본 발명의 요지를 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명은 생략할 수 있다.
도 1은 본 발명의 실시 예에 따른 하이브리드 인덱스 시스템을 예시적으로 보여주는 블록도이다. 도 1을 참조하면, 본 발명의 하이브리드 인덱스 시스템(1000)은 컨트롤러(1100), SSD(1200), 그리고 HDD(1300)를 포함한다.
컨트롤러(1100)는 호스트의 요청에 따라 데이터를 저장하거나 출력할 수 있다. 컨트롤러(1100)는 HDD(1300)와 SSD(1200)를 함께 사용하는 환경에서 SSD(1200) 성능의 일정 수준을 유지하면서 비용은 최소한으로 사용하기 여과(Filtering)와 정제(Refinement) 단계가 분리된 인덱스 구조를 활용한다. 또한, 컨트롤러(1100)는 의사결정 트리(Decision tree)를 사용하여 접근이 적은 정적인 속성의 데이터는 콜드 세그먼트로 분류하여 HDD(1300)에 저장하고, 빈번히 접근되는 동적인 속성의 데이터는 핫 세그먼트로 분류하여 SSD(1200)에 저장할 수 있다. 따라서, 컨트롤러(1100)는 고비용의 SSD(1200)의 저장 효율을 높일 수 있다. 결과적으로, 본 발명의 컨트롤러(1100)의 인덱스 구조 및 세그먼트 분류 방식에 의해 SSD(1200)의 사이즈를 최소화하면서도 성능은 일정 수준을 유지하여 비용과 성능의 균형을 맞출 수 있다. 이를 위해 컨트롤러(1100)는 인덱스 처리부(1120)와 핫-콜드 분류부(1140)를 포함한다.
인덱스 처리부(1120)는 여과(Filtering)와 정제(Refinement) 단계가 분리된 인덱스 구조를 갖는다. RDF 트리플은 3차원 데이터이며 그래프로 모델링되기 때문에 기존 데이터베이스에서 사용되는 인덱스 구조를 그대로 적용할 수 없다. 이를 해결하기 위해 인덱스 처리부(1120)의 R*-tree를 3차원 데이터 환경에 적합하게 다시 프로그래밍하였다. 불규칙한 3차원 공간의 점들을 효율적으로 관리할 수 있는 MBB(Minimum Bounding Box) 기반 인덱스 구조인 R*-tree와 버킷 내의 점들을 구조화할 수 있도록 Kd-tree(K dimensional-tree)를 결합시켰다. 디스크 환경에 최적화된 인덱스 구조인 R*-tree를 플래시 메모리에 적합하게 개선한 Kd-tree와 결합하여 사용함으로써 SSD 환경에 최적화시킬 수 있다.
핫-콜드 분류부(1140)는 의사결정 트리(Decision tree)를 사용하여 접근이 적은 정적인 속성의 데이터는 콜드 세그먼트로 분류하여 HDD(1300)에 저장하고, 빈번히 접근되는 동적인 속성의 데이터는 핫 세그먼트로 분류하여 SSD(1200)에 저장할 수 있다. 결과적으로 핫-콜드 분류부(1140)는 SSD(1200)의 사이즈를 최소한으로 사용하면서 성능은 일정 수준을 유지하여 비용과 성능의 균형을 맞출 수 있다.
SSD(1200)는 하이 앤드(High End)형 보조 기억 장치로 낸드 플래시 기반의 스토리지 장치이다. SSD(1200)에서, 회전형 자기 디스크(또는 플레터)와 액츄에이터(Actuator) 및 헤더(Header) 등의 기계적 구성을 낸드 플래시 메모리로 전환하였다. 따라서, SSD(1200)는 저전력, 저소음, 내구성, 휴대성을 구비한 대용량 저장 장치로 입지를 넓혀가고 있다. SSD(1200)는 자기 디스크형 하드 디스크 드라이브(HDD)에 비하여 기억 용량이나 비용면에서는 여전히 불리하다. 더불어, 쓰기 단위와 소거 단위가 달라 블록 단위의 소거 방식을 채택하고 있어, 소거 후 쓰기 방식을 사용해야 하는 한계가 있다. 하지만, SSD(1200)는 액세스 속도, 소형화, 그리고 충격으로부터의 안정성 등에서 하드 디스크 드라이브(HDD)에 비하여 우위를 점하고 있다.
HDD(1300)는 자기 디스크로 구성되는 플레터를 저장 매체로 하는 데이터 저장 장치이다. HDD(1300)는 덮어쓰기가 가능하지만, 헤더를 플레터 상에서 이동시키기 위해서는 액추에이터와 암의 기계적 구동이 동반된다. 따라서, HDD(1300)는 데이터의 집적도는 높지만, 읽기/쓰기 속도는 SSD(1200)에 비하여 상대적으로 느리다.
도 2는 본 발명의 여과 단계를 처리하기 위한 R*-tree를 보여주는 도면이다. R*-tree는 N차원의 공간 데이터를 효과적으로 저장하고 위치 정보와 관련된 질의를 빠르게 수행할 수 있는 자료 구조이다.
도 2를 참조하면, R*-tree는 사각형 영역 안에 객체가 완전히 포함되도록 하는 최소사각형(Minimum Bounding Rectangle: MBR)에 기반한 인덱싱 기법이다. R*-tree는 R-tree의 성능을 개선한 것으로 기본적인 구조, 연산은 거의 동일하다. 각 노드와 객체는 MBR 또는 MBB(Minimum Bouding Box)에 의해서 표현되며, 노드는 디스크 페이지에 대응할 수 있다. R*-tree는 MBR들간의 포함 관계로 표현된다. R*-tree는 삽입, 삭제 연산시 부모 노드의 사각형을 효율적으로 확장 가능하다. R*-tree의 분할 방법은 겹침을 줄이고 강제 재삽입을 통해 노드 클러스터링 효과를 증대시킬 수 있다.
도 3은 본 발명의 정제 단계를 처리하기 위한 Kd-tree(K dimensional-tree)를 보여주는 도면이다. Kd-tree는 각 노드의 데이터가 공간의 K 차원 포인트인 이진 검색 트리다. 즉, K 차원 공간의 점을 구성하기 위한 공간 분할 구조이다.
RDF 트리플은 3차원 데이터이며 그래프로 모델링되기 때문에 기존 데이터베이스에서 사용되는 인덱스 구조를 그대로 적용할 수 없다. 이를 해결하기 위해 R*-tree를 3차원 데이터 환경에 적합하게 다시 프로그래밍하였다. 불규칙한 3차원 공간의 점들을 효율적으로 관리할 수 있는 MBB 기반 인덱스 구조인 R*-tree와 버킷 내의 점들을 구조화할 수 있도록 Kd-tree(K dimensional-tree)를 결합시켰다. 디스크 환경에 최적화된 인덱스 구조인 R*-tree를 플래시 메모리에 적합하게 개선한 Kd-tree와 결합하여 사용함으로써 SSD 환경에 최적화 시킨다.
여과와 정제 단계가 분리된 인덱스 구조를 구축하기 위해 RDF 트리플을 3차원 공간의 점으로 변환해야 한다. 점으로 변환하기 위해 RDF 트리플의 구성 요소인 주어, 술어, 목적어에 개별적으로 해시 함수를 적용하여 3개의 숫자를 얻는다. 다음 단계에서 3차원 공간은 버킷으로 분할되며 각 버킷에 3개의 숫자로 변환된 RDF 트리플 정보가 포함된다. R*-tree는 내부 노드와 리프 노트로 구성되어 있으며 내부 노드는 자식 노드의 버킷 영역과 주소 지시자를 포함하고 있다. 리프 노드는 버킷 식별자와 MBB 그리고 Kd-tree의 주소 지시자를 포함하고 있다. R*-tree 하부에 있는 Kd-tree는 R*-tree의 버킷을 구성하는 RDF 트리플의 식별자와 URI를 포함하고 있다.
도 4는 인덱스 조인 검색 방법을 간략히 보여주는 순서도이다. SPARQL 질의는 8개의 트리플 패턴이 있다. 이들 중 (?s, ?p, ?o)는 s, p, o가 어떤 값이든 될 수 있기 때문에 전체 스캔이 필요하고, (s, p, o)는 s, p, o가 정해져 있기 때문에 결과가 존재하거나 존재하지 않는다. 따라서 검색 성능을 향상시키기 위해 고려해야 할 질의 패턴은 (?s, p, o), (s, ?p, o), (s, p, ?o), (?s, ?p, o), (s, ?p, ?o), (?s, p, ?o)의 6개이다. 실제 사용자는 패턴 하나를 검색하는 경우보다 6개 패턴을 조인(Join)하여 검색하는 경우가 일반적이다.
조인 함수는 Nested-Loop 조인, Sort-Merge 조인, Hash 조인이 있다. Nested-Loop 조인은 선행 테이블의 처리 범위를 하나씩 접근하면서 추출된 값으로 연결할 테이블을 조인하는 방식이다. Sort-Merge 조인은 양쪽 테이블의 처리 범위를 각자 접근하여 정렬한 결과를 스캔하면서 연결의 조건으로 합병하는 방식이다. Hash 조인은 해시 값을 이용해 조인하는 방식으로 병렬처리를 사용하기 때문에 대용량 데이터를 처리하는데 적합한 방법이다. Sort-Merge 조인은 데이터 리스트를 반드시 정렬해야 하므로 시간이 오래 걸리는 단점이 있고, Hash 조인은 메모리 사용량이 많다는 단점이 있기 때문에 본 발명에서는 모든 트리플에 수정 없이 직관적으로 사용 가능하며 메모리 사용량, 성능 모두 적정 수준을 만족하는 Nested-Loop 조인을 사용한다.
다시 도 4를 참조하면, 조인 검색 과정은 다음의 절차에 따라 수행될 수 있다.
S110 단계에서, 인덱스 처리부(1100, 도 1 참조)는 사용자로부터 검색을 요청을 수신한다.
S120 단계에서, 인덱스 처리부(1100)는 수신된 사용자의 검색 요청에 따라 먼저 R*-tree가 필요한 데이터가 존재하는 버킷을 필터링한다.
S130 단계에서, 인덱스 처리부(1100)는 필터링된 버킷을 Kd-tree로 인덱싱하여 각 트리플 패턴을 구체화하는 정제 과정을 진행한다.
S140 단계에서, 인덱스 처리부(1100)는 R*-tree를 이용하여 필터링한 결과와 Kd-tree를 통해서 정제한 결과를 조인한다.
S150 단계에서, 인덱스 처리부(1100)는 각 Kd-tree를 조인한 결과가 존재하는지의 여부에 따라 동작을 분기한다. 만일, 각 Kd-tree를 조인한 결과가 존재하면, 절차는 S160 단계로 이동한다. 반면에, 각 Kd-tree를 조인한 결과가 존재하지 않으면, 제반 절차는 종료된다.
S160 단계에서, 인덱스 처리부(1100)는 조인한 해당 결과를 사용자에게 반환한다. 사용자에게 반환되는 결과 값은 URL로 해당 엔드 포인트에서 RDF 트리플을 검색할 수 있기 때문에 실시간 탐색이 가능하다.
도 5는 본 발명의 실시 예에 따른 핫-콜드 세그먼트 분류를 위한 식별 테이블을 보여주는 도면이다. 도 5를 참조하면, SSD(1200)와 HDD(1300)에 데이터를 어떻게 재배치할 것인지 판단하기 위해 식별 테이블(1125)을 활용하는 핫-콜드 세그먼트 분류 기법을 적용한다.
S, P, O(1121)의 속성은 메모리의 사용량을 줄이기 위해 RDF 트리플의 각 요소에 해시 함수(1123)를 적용하여 저장한다. Rec 속성은 최근성을 나타내는 속성으로 해당 데이터가 최근에 접근 되었는지의 여부가 저장되고, Count 속성은 데이터에 접근된 횟수가 저장된다. 마지막으로, Type 속성은 해당 데이터의 핫-콜드 여부가 '1'과 '0'값으로 저장된다. 수집된 사용자 접근 데이터의 핫-콜드 여부는 Rec 속성 값이 '1'이고, Count 속성 값이 미리 정의된 임계값보다 크면 해당 데이터를 핫 데이터로 식별한다. 핫-콜드 데이터를 식별하기 위한 조건 중 Rec 속성은 굉장히 중요하다. 아무리 많이 접근된 데이터라도 최근에 접근되지 않았다면 앞으로도 접근되지 않을 가능성이 크기 때문이다.
위 과정은 의사결정 트리의 트레이닝 데이터로 사용하기 위한 관측값을 수집하는 과정이다. 의사결정 트리는 관측값으로 주어진 수많은 데이터를 어떤 속성을 기준으로 식별할지 선택할 때 정보 획득 접근법을 사용한다. 정보 획득 접근법은 속성의 정보량과 엔트로피를 사용한다. 정보량은 사건이 가지는 정보의 양으로 드물게 발생하는 사건일수록 정보량의 값은 크다. 엔트로피는 정보량의 기댓값으로 발생한 모든 사건들의 정보량의 평균을 구한 것이다. 엔트로피가 크다는 것은 각 사건들이 일어날 확률이 거의 비슷한 경우이다. 즉, 엔트로피가 작을수록 정보 획득량이 크다. 의사결정 트리는 정보 획득량이 큰 속성 순서로 데이터를 식별한다. 다음은 식별 테이블 속성의 정보 획득량을 구하는 과정이다.
먼저, 아래 수학식 1을 기초로 Type 속성에 대한 엔트로피 E(Type)를 구한다. 'Nhot'은 핫 데이터의 수(number of hot data), 'Nall'은 모든 데이터의 수(number of all data), 그리고 'Ncold'는 콜드 데이터의 수(number of cold data)를 각각 의미한다.
이어서, 아래 수학식 2를 기초로 Rec 속성에 대한 Type 속성의 엔트로피 E(T│R)를 구한다. 'T'는 Type, 'R'은 Rec의 약자이다. 'Pone'은 1 일 확율(probability of one), 'Pzero'는 0일 확율(probability of zero)의 약자로 속성 값의 확률을 의미한다.
Rec의 정보 획득량은 수학식 1- 수학식 2를 통해서 구할 수 있다. 이와 같은 과정을 통해 식별 테이블의 모든 속성의 정보 획득량을 구하여 식별할 속성의 순서를 결정한다. 속성의 순서가 결정되면 목표 변수인 테스트 데이터로 입력받은 사용자가 접근하지 않은 데이터의 핫-콜드 여부를 식별하고, 식별 결과를 신뢰할 수 있는지 정확도를 구한다. 의사결정 트리가 식별한 데이터는 RDF 파일로 작성되어 적절한 저장 장치에 재배치된다. 핫 데이터로 구성된 R*-tree의 버킷인 핫 세그먼트는 SSD(1200)에서 Kd-tree로 인덱싱되고, 나머지 R*-tree의 버킷인 콜드 세그먼트는 HDD(1300)에서 Kd-tree로 인덱싱된다.
도 6은 본 발명의 핫-콜드 세그먼트 분류 알고리즘을 예시적으로 보여주는 순서도이다. 도 6을 참조하면, 본 발명의 전체적인 핫-콜드 세그먼트 분류 절차가 설명될 것이다.
S210 단계에서, 의사결정 트리의 트레이닝 데이터로 사용하기 위한 관측값들이 수집된다. 그리고 핫-콜드 분류부(1140, 도 1 참조)에 의해서 수집된 데이터에 대한 접근이 발생할 수 있다.
S220 단계에서, 핫-콜드 분류부(1140)는 데이터 클리닝을 수행한다. 데이터 클리닝을 통해 결측치를 대체하고, 잡음 데이터나 불일치 데이터, 이상치를 확인하고 제거할 수 있다.
S230 단계에서, 모델 학습(Model training)이 수행된다.
S240 단계에서, 도 5에서 설명된 핫-콜드 세그먼트의 분류가 수행된다. 즉, 핫-콜드 분류부(1140)는 입력받은 사용자가 접근하지 않은 데이터의 핫-콜드 여부를 식별하고, 식별 결과를 신뢰할 수 있는지 정확도를 구한다. 핫-콜드 분류부(1140)는 의사결정 트리가 식별한 데이터를 RDF 파일로 작성하여 적절한 저장 장치에 재배치된다.
S250 단계에서, 핫-콜드 분류부(1140)는 핫 데이터로 구성된 R*-tree의 버킷인 핫 세그먼트는 SSD(1200)에서 Kd-tree로 인덱싱하고, 나머지 R*-tree의 버킷인 콜드 세그먼트는 HDD(1300)에서 Kd-tree로 인덱싱한다.
S260 단계에서, 핫-콜드 분류부(1140)는 사이클 조건에 따라 S210 단계로 복귀하거나 제반 절차를 종료한다. 사이클 조건에 부합하면, 절차는 S210 단계로 복귀하여 핫-콜드 분류 사이클을 반복하게 될 것이다.
도 7은 본 발명의 SSD 쓰기 연산 알고리즘을 예시적으로 보여주는 도면이다. 도 7을 참조하면, 사용자가 쓰기 연산을 요청하면, 해당 쓰기 연산을 버퍼에 저장하고 버퍼의 크기가 저장 장치의 페이지 크기의 배수인지 확인한다.
SSD(1200)의 치명적인 단점은 덮어쓰기가 불가능하여 새로운 데이터로 업데이트될 때마다 블록 단위로 지우기 연산이 선행되어야 하기 때문에 쓰기 연산의 속도가 느리다는 것과 쓰기 제한이다. 본 발명에서는 불필요한 쓰기 연산을 줄이기 위해 SSD 페이지 크기의 배수가 될 때까지 쓰기 데이터를 수집한 후 쓰기 연산을 수행하는 방법을 채택한다. 이와 같은 방법은 데이터가 수집되는 동안 발생하는 중복 수정 데이터를 제거하고, 빈번하게 수정되는 데이터와 그렇지 않은 데이터를 다른 페이지에 저장하여 Read-Modify-Write 작업을 효율적으로 수행할 수 있도록 한다.
중복 수정은 부차적인 지우기 연산을 발생시켜 쓰기 연산의 속도를 저하시킨다. 빈번하게 수정되는 데이터와 그렇지 않은 데이터가 같은 페이지에 저장된다면 빈번하게 수정되는 데이터가 수정될 때마다 그렇지 않은 데이터까지 함께 Read-Modify-Write 작업에 포함되어 수정이 필요하지 않은 데이터까지 수정해야 하는 문제가 발생한다. 이러한 불필요한 지우기 및 쓰기 연산은 SSD(1200)의 셀을 사용 불가능한 상태로 만든다. 사용 불가능 상태는 SSD(1200)의 쓰기 횟수 제한을 야기하며 결과적으로 SSD(1200)의 수명을 감소시킨다. 페이지 크기의 배수만큼 데이터를 수집하여 쓰기 연산을 수행하면 앞에서 언급한 문제 발생을 줄여 쓰기 연산의 성능을 개선할 수 있다.
여기서, 쓰기 연산의 크기를 비교하기 전에 버퍼에 저장하는 이유는 한 번의 쓰기 연산은 높은 확률로 페이지의 크기를 초과하지 않기 때문이다. 그리고 현재 쓰기 연산의 끝을 알리는 구분자와 함께 저장한다. 쓰기 연산의 무한 대기 발생을 제거하기 위해 일정 시간이 지나면 요청된 쓰기 연산의 크기가 저장 장치의 페이지 크기를 초과하지 않더라도 쓰기 연산을 수행한다.
도 8은 본 발명에 따른 알고리즘의 성능을 분석하기 위한 데이터 셋들을 간략히 보여주는 테이블이다. 도 8을 참조하면, 본 발명의 알고리즘의 성능을 분석하기 위해 'DBpedia', 'Drugbank', 'LinkedGeoData'의 3가지 데이터 셋이 사용되었다. 'DBpedia'는 위키피디아에서 추출한 RDF 정보가 포함되어 있고, 'Drugbank'는 약물과 약물 표적에 대한 정보가 포함되어 있다. 'LinkedGeoData'는 공간 지식에 대한 방대한 정보를 가지고 있다. 도시된 테이블에는 데이터 셋의 특징들이 간략히 나타나 있다.
도 9, 도 10, 그리고 도 11은 의사결정 트리가 'DBpedia', 'Drugbank', 'LinkedGeoData'의 핫-콜드 데이터를 식별한 과정을 각각 보여준다. 식별을 위한 첫 번째 기준인 X[1]은 Rec 속성이다. Rec 속성은 최근에 해당 데이터에 접근되었는지를 나타내는 속성으로 '1' 또는 '0'의 두 가지 값만 가질 수 있다. 의사결정 트리는 Rec 속성 값이 0.5 이하이면 콜드 데이터로 식별하였다. Rec 속성의 식별 기준은 모든 데이터 셋에서 동일하게 적용된다. 식별을 위한 두 번째 기준인 X[2]는 Count 속성으로 데이터의 접근 횟수를 나타낸다.
Rec 속성으로 0.5 이상으로 식별된 데이터 중에서 Count 속성 값이 임계값 이상이면 핫 데이터로 식별한다. 임계값 역시 의사결정 트리가 트레이닝 데이터를 분석하여 적절한 값으로 설정한다. 'DBpedia'의 임계값은 50.5이고, 'Drugbank'의 임계값은 81.0이며 'LinkedGeoData'의 임계값은 107.5이다.
도 12는 의사결정 트리가 각 데이터 셋을 식별한 결과의 정확도를 도시한 그래프이다. 도 12를 참조하면, 의사결정 트리의 깊이가 깊을수록 오버피팅(over fitting)이 일어나 정확도는 낮아진다. 본 발명에서 구축한 의사결정 트리는 깊이가 3으로 그다지 깊지 않기 때문에 실제 데이터에 일반화하여 사용하여도 오류가 없는 높은 정확도를 만족시킨다. 'DBpedia', 'Drugbank', 'LinkedGeoData'의 평균 정확도는 각각 약 95%, 98%, 98%로 매우 높은 정확도를 보인다.
도 13은 의사결정 트리가 식별한 핫-콜드 데이터를 사용하여 각 데이터를 적절한 저장 장치로 재배치한 결과를 보여준다. 도 13을 참조하면, 모든 데이터 셋이 핫 세그먼트를 저장하기 위해 SSD를 평균 42% 사용하였고, 콜드 세그먼트를 저장하기 위해 HDD(1300)를 평균 58% 사용하여 SSD(1200)를 최소한으로 사용하였다.
도 14는 SSD만 사용한 시스템과 본 발명의 하이브리드 저장 장치를 사용한 시스템(Hybrid Storage System으로 HSS라 함), 그리고 HDD만 사용한 시스템(HDD라 함)의 검색 성능을 비교한 그래프이다. 모든 데이터 셋에서 SSD의 성능은 HDD에 비해 1.6배 이상 빠른 성능을 보이지만 비용은 2.6배나 더 비쌌다. 이에 비용과 성능의 최적 균형을 맞춘 HSS의 성능은 비싼 SSD를 최소한으로 사용하면서 SSD 검색 성능의 70% 이상을 유지하였다.
도 15는 페이지 크기의 배수 쓰기 연산과 즉시 쓰기 연산을 수행했을 때의 성능을 비교한 그래프이다. 도 15를 참조하면, 페이지 크기 쓰기(Page size write)는 SSD(1200)의 페이지 크기의 배수가 될 때까지 쓰기 데이터를 수집한 후 쓰기 연산을 수행하는 것을 의미하고, 즉시 쓰기(Immediate write)는 즉시 쓰기 연산을 의미한다. 본 실험에서 사용한 SSD(1200)의 페이지 크기는 4KByte이다. 4KByte만큼 쓰기 데이터가 수집되는 동안 발생하는 중복 수정 데이터를 제거하고, 빈번하게 수정되는 데이터와 그렇지 않은 데이터를 서로 다른 페이지를 사용하도록 함으로써 Read-Modify-Write 작업이 효율적으로 수행되도록 하였다. 결과적으로 불필요한 지우기 및 쓰기 연산과 셀의 사용 불가능 상태를 감소시켜 쓰기 연산의 성능 향상과 쓰기 횟수 제한을 개선했다. 쓰기 연산 횟수가 적을 때도 5.9배 이상의 성능 향상을 보였으며 쓰기 연산의 횟수가 늘어날수록 본 발명에서 제안한 방식의 성능이 더욱 우수함을 보였다.
기존 링크드 데이터 검색 및 저장 기술의 이슈들을 보완한 융합 방식으로 다차원 인덱스 구조인 R*-tree와 Kd-tree를 결합한 하이브리드 인덱스 시스템을 제안하였다. 링크드 데이터의 기술적인 요소 중 RDF 트리플은 3차원 데이터이며 그래프로 모델링되기 때문에 기존 데이터베이스에서 사용하는 인덱스 구조를 그대로 적용하는 것은 불가능하다. 이를 해결하기 위해 R*-tree를 3차원 데이터 환경에 적합하게 다시 프로그래밍하였고, 플래시 메모리 환경에 적합하게 개선한 Kd-tree와 함께 사용함으로써 SSD 환경에 최적화 시켰다.
본 발명의 접근 방식은 인덱스 방식과 실시간 탐색 방식을 융합하여 분산되어 있는 최신 데이터 셋들을 효율적으로 탐색하고 데이터가 검색될 때 필요한 부분만 빠르게 필터링하여 검색 속도를 향상시켰다. 링크드 데이터와 같은 대용량 데이터를 효율적으로 저장하고 정보를 빨리 찾기 위해 HDD(1300)보다 SSD(1200)를 사용하는 것이 효율적일 수 있지만, SSD(1200)의 성능은 HDD(1300)에 비해 1.6배 이상 빠른 성능을 보이지만 비용은 2.6배나 더 비싸기 때문에 전체 저장 장치를 SSD(1200)로 대체하는 것은 장기적으로 비효율적일 수 있다. 이를 보완하기 위해 SSD(1200)와 HDD(1300)를 함께 사용하는 HSS를 여과(또는 필터링)와 정제 단계가 분리된 인덱스 시스템에 활용하였다. 본 발명에서는 데이터를 적절한 저장 장치에 재배치하기 위해 핫-콜드 세그먼트 분류 알고리즘을 제안했다. 빈번히 접근되는 핫 세그먼트를 SSD(1200)에 저장하고, 접근이 적은 콜드 세그먼트를 HDD(1300)에 저장함으로써 SSD(1200)의 사용량을 최소화시켰다. 또한, SSD(1200)의 쓰기 성능을 개선하기 위해 SSD 페이지 크기의 배수가 될 때까지 쓰기 연산을 수집한 후 쓰기 연산을 실행하는 방법을 채택하였다. 결과적으로 비싼 SSD(1200)를 최소한으로 사용하면서 SSD(1200) 검색 성능의 70% 이상을 유지하여 비용과 성능의 최적 균형을 맞추었다.
상술한 내용은 본 발명을 실시하기 위한 구체적인 실시 예들이다. 본 발명은 상술한 실시 예들 이외에도, 단순하게 설계 변경되거나 용이하게 변경할 수 있는 실시 예들도 포함할 것이다. 또한, 본 발명은 실시 예들을 이용하여 용이하게 변형하여 실시할 수 있는 기술들도 포함될 것이다. 따라서, 본 발명의 범위는 상술한 실시 예들에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 발명의 특허청구범위와 균등한 것들에 의해 정해져야 할 것이다.

Claims (5)

  1. 시맨틱 웹 환경에서 SSD와 HDD를 저장 매체로 사용하는 하이브리드 인덱스 시스템의 동작 방법에 있어서:
    검색 요청된 링크드 데이터에 대응하는 RDF 트리플을 3차원의 버킷 단위로 R*-tree를 사용하여 필터링하는 단계;
    상기 필터링된 버킷 단위를 Kd-tree로 인덱싱하여 트리플 패턴을 구체화하는 정제 단계;
    상기 트리플 패턴을 조인 함수를 사용하여 조인(Join)하는 단계;
    상기 RDF 트리플을 의사결정 트리를 사용하여 핫 세그먼트 또는 콜드 세그먼트로 분류하는 단계; 그리고
    상기 핫 세그먼트는 상기 SSD에, 상기 콜드 세그먼트는 상기 HDD에 저장하는 단계를 포함하는 동작 방법.
  2. 제 1 항에 있어서,
    상기 조인 함수는 Nested-Loop에 대응하는 동작 방법.
  3. 제 1 항에 있어서,
    상기 핫 세그먼트 또는 상기 콜드 세그먼트로 분류하는 단계는:
    상기 RDF 트리플의 주어(S), 술어(P), 목적어(O)의 요소들을 해시 함수로 처리하여 저장하고, 최근성(Rec) 속성, 접근 횟수에 대응하는 카운트(Count) 속성, 그리고 핫 또는 콜드 여부를 지시하는 타입(Type) 속성을 저장하는 단계; 그리고
    상기 타입 속성에 대한 엔트로피와, 상기 최근성 속성에 대한 상기 타입 속성의 엔트로피를 사용하여 핫 세그먼트와 콜드 세그먼트를 식별하는 단계를 포함하는 동작 방법.
  4. 제 1 항에 있어서,
    상기 저장하는 단계에서, 상기 SSD에 저장되는 데이터는 상기 SSD의 페이지 크기의 배수가 될 때까지 쓰기 데이터를 버퍼에 수집한 후에 상기 SSD로 기입되는 동작 방법.
  5. 제 1 항에 있어서,
    상기 조인하는 단계에서, 조인 결과를 사용자에게 반환하는 단계를 더 포함하는 동작 방법.
KR1020220013443A 2022-01-28 2022-01-28 하이브리드 인덱스 시스템을 위한 동작 방법 KR20230116470A (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020220013443A KR20230116470A (ko) 2022-01-28 2022-01-28 하이브리드 인덱스 시스템을 위한 동작 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020220013443A KR20230116470A (ko) 2022-01-28 2022-01-28 하이브리드 인덱스 시스템을 위한 동작 방법

Publications (1)

Publication Number Publication Date
KR20230116470A true KR20230116470A (ko) 2023-08-04

Family

ID=87568521

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020220013443A KR20230116470A (ko) 2022-01-28 2022-01-28 하이브리드 인덱스 시스템을 위한 동작 방법

Country Status (1)

Country Link
KR (1) KR20230116470A (ko)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190084203A (ko) 2017-12-22 2019-07-16 삼성전자주식회사 Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치
KR20200073302A (ko) 2018-12-13 2020-06-24 경북대학교 산학협력단 링크드 데이터를 활용하여 시각적 분석 서비스를 제공하는 방법, 플랫폼 시스템 및 해당 프로그램이 기록된 기록매체

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190084203A (ko) 2017-12-22 2019-07-16 삼성전자주식회사 Ssd기반 클라우드 계산 스토리지 시스템을 위한 aclb를 위한 방법 및 장치
KR20200073302A (ko) 2018-12-13 2020-06-24 경북대학교 산학협력단 링크드 데이터를 활용하여 시각적 분석 서비스를 제공하는 방법, 플랫폼 시스템 및 해당 프로그램이 기록된 기록매체

Similar Documents

Publication Publication Date Title
US20220027383A1 (en) Data normalization using data edge platform
CN110825748B (zh) 利用差异化索引机制的高性能和易扩展的键值存储方法
US7689574B2 (en) Index and method for extending and querying index
KR101972645B1 (ko) 클러스터링 저장 방법 및 장치
US9149054B2 (en) Prefix-based leaf node storage for database system
CN105912687B (zh) 海量分布式数据库存储单元
WO2010105218A2 (en) System and method for knowledge research
CN107491487A (zh) 一种全文数据库架构及位图索引创建、数据查询方法、服务器及介质
De Vries et al. Robust record linkage blocking using suffix arrays and bloom filters
CN102968464B (zh) 一种基于索引的本地资源快速检索系统的检索方法
CN110858210B (zh) 数据查询方法及装置
CN110134335A (zh) 一种基于键值对的rdf数据管理方法、装置及存储介质
Amur et al. Design of a write-optimized data store
CN114610708A (zh) 一种向量数据处理方法及装置、电子设备及存储介质
CN109299143B (zh) 基于Redis缓存的数据互操作测试知识库的知识快速索引方法
CN107273443B (zh) 一种基于大数据模型元数据的混合索引方法
Chung et al. Multiple k nearest neighbor search
KR20230116470A (ko) 하이브리드 인덱스 시스템을 위한 동작 방법
CN109213760A (zh) 非关系数据存储的高负载业务存储及检索方法
Wang et al. PL-Tree: An efficient indexing method for high-dimensional data
CN113448968A (zh) 一种海量轨迹数据的读写方法及系统
CN112307272A (zh) 确定对象之间关系信息的方法、装置、计算设备及存储介质
Kwon et al. G-Index Model: A generic model of index schemes for top-k spatial-keyword queries
CN113760171A (zh) 一种元数据存储方法及装置
KR100892406B1 (ko) 정보 검색 방법 및 그 시스템

Legal Events

Date Code Title Description
E902 Notification of reason for refusal