KR102407510B1 - 데이터 저장 및 조회 방법, 장치, 기기 및 매체 - Google Patents
데이터 저장 및 조회 방법, 장치, 기기 및 매체 Download PDFInfo
- Publication number
- KR102407510B1 KR102407510B1 KR1020190162474A KR20190162474A KR102407510B1 KR 102407510 B1 KR102407510 B1 KR 102407510B1 KR 1020190162474 A KR1020190162474 A KR 1020190162474A KR 20190162474 A KR20190162474 A KR 20190162474A KR 102407510 B1 KR102407510 B1 KR 102407510B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- index
- string
- determining
- primary
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
- G06F16/2264—Multidimensional index structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2228—Indexing structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/221—Column-oriented storage; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/22—Indexing; Data structures therefor; Storage structures
- G06F16/2282—Tablespace storage structures; Management thereof
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2379—Updates performed during online database operations; commit processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2453—Query optimisation
- G06F16/24534—Query rewriting; Transformation
- G06F16/24539—Query rewriting; Transformation using cached or materialised query results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/28—Databases characterised by their database models, e.g. relational or object models
- G06F16/284—Relational databases
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
본 발명의 실시예는 데이터 저장 및 조회 방법, 장치, 기기 및 매체에 관한 것이다. 데이터 저장 방법은 저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스를 생성하는 단계를 포함한다. 상기 방법은 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성하는 단계를 더 포함하고, 상기 방법은 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성하는 단계를 더 포함한다. 이 밖에, 상기 방법은 보조 인덱스 및 기본 인덱스를 상기 데이터 테이블 내의 인덱스열에 작성하는 단계를 더 포함한다. 본 발명의 실시예는 지식 베이스 내의 엔티티 데이터가 빈번하게 업데이트되는 경우, 데이터의 작성 및 조회 성능이 저하되지 않도록 확보할 수 있다.
Description
본 발명의 실시예는 컴퓨터 분야에 관한 것으로서, 보다 구체적으로는 데이터 저장 및 조회 방법, 장치, 기기 및 컴퓨터 판독 가능 저장 매체에 관한 것이다.
지식 베이스(Knowledge Base)로도 불리우는 지식 그래프는 현실 세계에 존재하는 다양한 엔티티, 이들 사이의 관계 및 이들 각각의 속성을 설명하기 위한 것으로, 근래에 검색, 인공지능, 딥 러닝 등 분야에 널리 사용된다.
지식 그래프 내의 데이터 규모의 급격한 증가 및 데이터의 응용에 따라, 지식 그래프의 엔티티 데이터는 빈번하게 업데이트될 수 있다. 이 밖에, 지식 그래프에서 생성되는 각 링크에서도 흔히 지식 그래프 내의 엔티티 데이터에 대한 증분화 수정이 필요하다. 따라서, 상기 엔티티 데이터가 빈번하게 업데이트되는 상황에서 데이터 작성 및 데이터 조회 성능이 저하되지 않도록, 지식 그래프 내의 엔티티 데이터를 저장 및 조회하는 기술이 요구되고 있다.
선행기술문헌: 미국 특허출원공개공보US2018/0276262호(2018.09.27.)
선행기술문헌: 미국 특허출원공개공보US2018/0276262호(2018.09.27.)
본 발명의 실시예는 데이터 저장 및 조회 방법을 제공한다.
제1 양태에 있어서, 본 개시의 실시예는 데이터 저장 방법을 제공하며, 상기 방법은, 저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스(primary index)를 생성하는 단계; 상기 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성(writing)하는 단계; 상기 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스(secondary index)를 생성하는 단계; 및 상기 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 인덱스열에 작성하는 단계를 포함한다.
제2 양태에 있어서, 본 개시의 실시예는 데이터 조회 방법을 제공하며, 상기 방법은, 데이터 테이블에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여, 상기 데이터 테이블의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하는 단계 - 상기 인덱스열은 상기 데이터를 인덱싱하기 위한 기본 인덱스 및 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장함 - ; 상기 인덱스열 내의 상기 기본 인덱스에 기반하여 상기 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하는 단계 - 상기 데이터열은 상기 기본 인덱스 및 상기 데이터를 저장함 - ; 상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 단계; 및 상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정된 것에 응답하여, 상기 조회 요청에 대한 응답으로서 상기 데이터열에서 상기 데이터를 획득하는 단계를 포함한다.
제3 양태에 있어서, 본 개시의 실시예는 데이터 저장 장치를 제공하며, 상기 장치는, 저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스를 생성하는 기본 인덱스 생성 모듈; 상기 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성하는 데이터열 작성 모듈; 상기 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성하는 보조 인덱스 생성 모듈; 및 상기 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 인덱스열에 작성하는 인덱스열 작성 모듈을 포함한다.
제4 양태에 있어서, 본 개시의 실시예는 데이터 조회 장치를 제공하며, 상기 장치는, 데이터 테이블에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여, 상기 데이터 테이블의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하는 인덱스열 결정 모듈 - 상기 인덱스열은 상기 데이터를 인덱싱하기 위한 기본 인덱스 및 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장함 - ; 상기 인덱스열 내의 상기 기본 인덱스에 기반하여 상기 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하는 데이터열 결정 모듈 - 상기 데이터열은 상기 기본 인덱스 및 상기 데이터를 저장함 - ; 상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 매칭 모듈; 및 상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정된 것에 응답하여, 상기 조회 요청에 대한 응답으로서 상기 데이터열에서 상기 데이터를 획득하는 데이터 획득 모듈을 포함한다.
제5 양태에 있어서, 본 개시의 실시예는 데이터 저장 기기를 제공하며, 상기 기기는, 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램이 저장된 저장 장치를 포함하고, 상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제10항 중 어느 한 항에 따른 데이터 저장 방법을 구현하도록 한다.
제6 양태에 있어서, 본 개시의 실시예는 데이터 조회 기기를 제공하며, 상기 기기는, 하나 또는 복수의 프로세서; 및 하나 또는 복수의 프로그램이 저장된 저장 장치를 포함하고, 상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제11항 내지 제21항 중 어느 한 항에 따른 데이터 조회 방법을 구현하도록 한다.
제7 양태에 있어서, 본 개시의 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 제공하며, 상기 컴퓨터 프로그램은 프로세서에 의해 실행될 경우 본 개시의 제1 양태에 따른 방법을 구현한다.
제8 양태에 있어서, 본 개시의 실시예는 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체를 제공하며, 상기 컴퓨터 프로그램은 프로세서에 의해 실행될 경우 본 개시의 제2 양태에 따른 방법을 구현한다.
본 발명 내용의 일부에서 설명된 내용은 본 발명의 실시예의 핵심 또는 주요 특징을 한정하려는 것을 목적으로 하지 않으며, 본 발명의 범위를 한정하려는 것이 아님을 이해해야 한다. 본 발명의 다른 특징은 이하 설명에 의해 쉽게 이해될 것이다.
첨부된 도면과 함께 이하 상세한 설명을 참조하여, 본 발명의 다양한 실시예의 상술한 설명 및 다른 특징 이점 및 양태는 보다 명백해질 것이다. 도면에서, 동일하거나 유사한 도면 표기는 동일하거나 유사한 요소를 나타낸다.
도 1은 본 발명의 실시예에 따른 예시적인 시스템의 블록도를 도시한다.
도 2는 본 발명의 실시예에 따른 데이터를 저장 및 조회하기 위한 예시적인 서버의 블록도를 도시한다.
도 3은 본 발명의 실시예에 따른 데이터 저장 방법의 흐름도를 도시한다.
도 4a 및 4b는 본 발명의 실시예에 따른 예시적인 데이터 테이블의 개략도를 도시한다.
도 5는 본 발명의 실시예에 따른 데이터 조회 방법의 흐름도를 도시한다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 블록도를 도시한다.
도 7은 본 발명의 실시예에 따른 데이터 조회 장치의 블록도를 도시한다.
도 8은 본 발명의 실시예를 구현할 수 있는 컴퓨팅 기기의 블록도를 도시한다.
도 1은 본 발명의 실시예에 따른 예시적인 시스템의 블록도를 도시한다.
도 2는 본 발명의 실시예에 따른 데이터를 저장 및 조회하기 위한 예시적인 서버의 블록도를 도시한다.
도 3은 본 발명의 실시예에 따른 데이터 저장 방법의 흐름도를 도시한다.
도 4a 및 4b는 본 발명의 실시예에 따른 예시적인 데이터 테이블의 개략도를 도시한다.
도 5는 본 발명의 실시예에 따른 데이터 조회 방법의 흐름도를 도시한다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치의 블록도를 도시한다.
도 7은 본 발명의 실시예에 따른 데이터 조회 장치의 블록도를 도시한다.
도 8은 본 발명의 실시예를 구현할 수 있는 컴퓨팅 기기의 블록도를 도시한다.
아래에 첨부된 도면을 참조하여 본 발명의 실시예를 보다 상세하게 설명한다. 비록 도면에는 본 발명의 일부 실시예가 도시되어 있으나 본 발명은 다양한 형태로 구현될 수 있음을 이해해야 하고, 여기서 설명된 실시예에 한정되는 것으로 해석되어서는 안되며, 반대로 이러한 실시예는 본 발명을 보다 명확하고 완전하게 이해시키기 위해 제공된다. 본 발명의 도면 및 실시예는 단지 예시로서 작용되며, 본 발명의 보호 범위를 한정하려는 것이 아님을 이해해야 한다.
본 발명의 실시예의 설명 과정에서, 용어 "포함하다" 및 이와 유사한 용어는 "포함하나 한정되지 않음"과 같은 개방적인 포함으로 이해되어야 한다. 용어 "기반하여"는 "적어도 부분적으로 기반하여"으로 이해되어야 한다. 용어 "일 실시예" 또는 "상기 실시예"는 "적어도 일 실시예"로 이해되어야 한다. 용어 "제1", "제2" 등은 상이하거나 동일한 객체를 지칭할 수 있다. 아래 설명은 다른 명시적 및 암시적 정의를 더 포함할 수 있다.
지식 그래프 내의 데이터 규모의 급격한 증가 및 데이터의 응용에 따라, 지식 그래프의 엔티티 데이터는 빈번하게 업데이트될 수 있다. 이 밖에, 지식 그래프에서 생성되는 각 링크에서도 흔히 지식 그래프 내의 엔티티 데이터에 대한 증분화 수정이 필요하다. 이러한 업데이트 및 수정은 흔히 지식 그래프 내의 데이터에 대한 저장 시스템의 조회 기능에 의존한다.
지식 그래프 내의 데이터는 일반적으로 주어 서술자 목적어(SPO) 형태의 트리플렛을 이용하여 표현될 수 있다. 엔티티 "에피프렘넘 아우레움"을 예로 들면, 이와 연관된 데이터("엔티티 데이터"로도 지칭됨)는 예를 들어 "에피프렘넘 아우레움의 생물학적 분류는 단자엽 식물류이다"(여기서, "에피프렘넘 아우레움"은 주어이고, "생물학적 분류"는 서술자이며, 또한 "단자엽 식물류"는 목적어임), "에피프렘넘 아우레움의 상기 과목은 천남성과이다"(여기서, "에피프렘넘 아우레움"은 주어이고, "생물학적 분류"는 서술자이며, 또한 "단자엽 식물류"는 목적어임) 등을 포함한다.
SPO 데이터의 "에피프렘넘 아우레움의 생물학적 분류는 단자엽 식물류이다"를 예로 들어, 엔티티 "에피프렘넘 아우레움" 및 엔티티 "단자엽 식물류"를 두 개의 노드로 간주하고, 관계 "생물학적 분류"를 상기 두 개의 노드를 연결하는 에지로 간주하면, 상기 에지는 엔티티 "에피프렘넘 아우레움"의 노드를 나타내는 "아웃 에지" 또는 "양의 에지"로 지칭될 수 있고, 또한 엔티티 "단자엽 식물류"의 노드를 나타내는 "인 에지" 또는 "음의 에지"로 지칭될 수 있으며, 엔티티 "단자엽 식물류"는 엔티티 "에피프렘넘 아우레움"의 "아웃 에지 엔티티" 또는 "양의 에지 엔티티"로 지칭될 수 있고, 엔티티 "에피프렘넘 아우레움"은 엔티티 "단자엽 식물류"의 "인 에지 엔티티" 또는 "음의 에지 엔티티"로 지칭될 수 있다. 엔티티 "단자엽 식물류"에 대한 엔티티 "에피프렘넘 아우레움"의 관계는 "아웃 에지 관계" 또는 "양의 에지 관계"로 지칭될 수도 있고, 엔티티 "에피프렘넘 아우레움"에 대한 엔티티 "단자엽 식물류"의 관계는 "인 에지 관계" 또는 "음의 에지 관계"로 지칭될 수도 있다. 이 밖에, 설명의 편의를 위해 본 명세서에서는 SPO 트리플렛 중 목적어인 엔티티를 "객체" 또는 "객체 엔티티"로 지칭한다.
지식 그래프 내의 엔티티 데이터는 다양한 포맷으로 표현될 수 있다. 예를 들어, JASON포맷의 엔티티 데이터의 예시는 다음과 같다.
{
"@id": "01rzqh7j",
"@type": ["Plant"],
"name": [{
"@value": "에피프렘넘 아우레움",
"@lang": "zh-cn",
"@fromurl": "http://abc.com/..."
}],
"biologyClass": [{
"@id": "01702l79",
"@value": "단자엽 식물류"
}],
"biologyFamily": [{
"@fromurl": "http://def.com/...",
"@id": "01mmz9lr"
"@value": "천남성과"
}]
}
상기 JASON포맷의 엔티티 데이터에서, 주어의 명칭(name)은 "에피프렘넘 아우레움"이고, 대응되는 엔티티 식별자(id)는 "01rzqh7j"이며, 서술자(predicate)는 "생물학적 분류(biologyClass)"이고, 목적어의 값(value)은 "단자엽 식물류"이며, 대응되는 엔티티 식별자는 "01702l79"이고, 다른 서술자는 "소속 과목(biologyFamily)"이며, 목적어의 값은 "천남성과"이고, 대응되는 엔티티 식별자는 "01mmz9lr"이다.
지식 그래프의 생성 및 사용 과정에서, 상기 엔티티 데이터를 저장하고 또한 저장된 엔티티 데이터에 대한 다양한 조회 동작을 수행할 수 있도록 하는 것이 바람직하다. 예를 들어, 에피프렘넘 아우레움과 연관된 모든 정보, 즉 정해진 주어(S)의 모든 SPO 데이터를 조회한다. 다른 예를 들어, 에피프렘넘 아우레움의 생물학적 분류 정보, 즉 정해진 주어 및 서술자의 조합(SP)을 조회하고, 상기 조합과 연관된 SPO 데이터를 조회한다. 또 다른 예를 들어, 단자엽 식물류를 목적어로 하는 모든 엔티티(인 에지 엔티티), 즉 정해진 목적어(O)를 조회하고, 상기 목적어와 연관된 주어(S)를 조회한다. 또 다른 예를 들어, 모든 생물학적 분류가 단자엽 식물류인 엔티티, 즉 정해진 목적어(O) 및 서술자(P)의 조합을 조회하고, 상기 조합과 연관된 주어(S)를 조회하는 등이다.
일부 종래의 해결수단은 mongoDB를 비롯한 데이터베이스를 적용하여 엔티티 데이터의 저장 및 조회를 수행한다. monogoDB에 기반한 저장 시스템은 일반적으로 단일 데이터 테이블에 다중 인덱스를 구축하고, 다중 인덱스의 조회를 통해 음의 에지 엔티티에 대한 조회를 구현한다. 그러나, 다중 인덱스는 흔히 데이터 테이블의 작성 성능에 심각한 영향을 끼치게 되므로 엔티티 데이터가 빈번하게 업데이트되는 응용 상황에 적응하지 못한다. 다른 종래의 해결수단은 GraphIndex를 비롯한 맵 검색 시스템을 적용하여 엔티티 데이터의 저장 및 조회를 수행한다. 이러한 타입의 해결수단은 정적 엔티티 데이터 집합에 대한 맵 조회 기술을 구현할 수 있으나, 임의의 엔티티 노드를 업데이트하는 경우, 상기 엔티티 노드와 연결된 에지도 흔히 따라서 업데이트해야 하므로 업데이트 오버헤드가 커져 마찬가지로 엔티티 데이터가 빈번하게 업데이트되는 응용 상황에 적응하지 못한다.
본 발명의 실시예에 따르면, 데이터 저장 및 조회를 위한 수단을 제공한다. 상기 수단은 지식 그래프 내의 엔티티 데이터에 대한 저비용 및 확장 가능한 저장 및 조회 기술을 구현함으로써 상기 문제점 및/또는 다른 잠재된 문제점을 해결할 수 있다. 상기 수단은 엔티티 데이터 및 엔티티 데이터를 인덱싱하기 위한 기본 인덱스를 데이터 테이블의 데이터열에 저장하고, 데이터 테이블에 대한 조회 규칙에 기반하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 구축하며, 보조 인덱스 및 기본 인덱스는 동일한 데이터 테이블 내의 인덱스열에 저장된다. 엔티티 데이터가 업데이트되는 경우, 신규 보조 인덱스가 생성되고, 이는 기본 인덱스와 함께 상기 데이터 테이블의 신규 인덱스열에 작성되고 이전 인덱스열의 제거는 실제 데이터가 조회되기 전까지 지연되어 수행된다. 이러한 방식을 통해, 본 발명의 실시예는 지식 베이스 내의 엔티티 데이터가 빈번하게 업데이트되는 경우, 데이터의 작성 및 조회 성능이 저하되지 않도록 확보할 수 있다.
이하, 도면을 참조하여 본 발명의 실시예를 구체적으로 설명한다.
도 1은 본 발명의 실시예에 따른 예시적인 시스템(100)의 블록도를 도시한다. 도 1에 도시된 바와 같이, 예시적인 시스템(100)은 전체적으로 클라이언트(120) 및 복수의 서버(130-1, 130-2, ……, 130-N(총괄적으로 또는 개별적으로 "서버(130)"로 지칭되며, 여기서 N은 자연수임))를 포함할 수 있다. 복수의 서버(130)는 각각 복수의 데이터 테이블((140-1), 140-2, ……, 140-N(총괄적으로 또는 개별적으로 "데이터 테이블(140)"로 지칭되며, 여기서 N은 자연수임))과 연관된다. 도 1에는 예시적인 목적으로 시스템(100)의 구조 및 기능이 설명되었으며, 이는 본 발명의 범위에 대한 어떠한 한정도 암시하지 않음을 이해해야 한다. 본 발명의 실시예는 상이한 구조 및/또는 기능을 구비한 환경에 적용될 수도 있다.
엔티티 데이터를 저장할 경우, 사용자(110)는 클라이언트(120)에 저장할 데이터(예를 들어, 상술한 바와 같은 JASON포맷의 엔티티 데이터)를 입력할 수 있고, 클라이언트(120)는 저장할 데이터를 하나 또는 복수의 서버(130), 예를 들어 서버(130-1)에 전달할 수 있으며. 서버(130-1)는 수신한 엔티티 데이터를 데이터 테이블(140-1)에 저장할 수 있다.
비록 도 1에는 각 서버(130)와 단일 데이터 테이블(140)이 연관되는 것으로 도시되었으나 이는 단지 예시 및 설명의 편의를 위한 것일 뿐 본 발명의 범위를 한정하려는 것이 아님을 이해해야 한다. 일부 실시예에서, 각 서버(130)는 복수의 데이터 테이블과 연관될 수 있다. 다른 일부 실시예에서, 단일 데이터 테이블은 복수의 데이터 조각(data fragment)으로 분할될 수 있고, 또한 각 서버(130)는 복수의 데이터 조각 내의 적어도 일부 데이터 조각과만 연관될 수 있다. 즉, 단일 데이터 테이블은 복수의 서버(130)에 걸쳐 저장될 수 있다.
엔티티 데이터를 조회할 경우, 사용자(110)는 클라이언트(120)에 조회 요청을 입력할 수 있다. 조회 요청은 예를 들어 특정 속성값을 갖는 엔티티에 대한 조회, 특정 객체와 특정 관계를 갖는 엔티티에 대한 조회, 특정 엔티티와 특정 객체 사이의 아웃 에지 관계에 대한 조회, 특정 엔티티와 특정 객체 사이의 인 에지 관계에 대한 조회, 특정 엔티티와 연관된 데이터에 대한 조회, 특정 아웃 에지 관계를 갖는 엔티티에 대한 조회, 특정 인 에지 관계를 갖는 엔티티에 대한 조회 등을 포함할 수 있으나 이에 한정되지는 않는다. 클라이언트(120)는 상기 조회 요청을 복수의 서버(130)에 전달할 수 있고, 각 서버(130)는 조회 결과를 획득하기 위해 저장된 데이터 테이블(140)에서 엔티티 데이터를 조회할 수 있으며, 각 서버(130)는 상기 조회 결과를 클라이언트(120)에 리턴할 수 있고, 클라이언트(120)는 각 서버(130)로부터의 조회 결과를 병합하여 병합된 조회 결과를 사용자(110)에게 리턴할 수 있다.
도 2는 본 발명의 실시예에 따른 예시적인 서버(130)의 블록도를 도시한다. 도 2에 도시된 바와 같이, 예시적인 서버(130)는 대체적으로 데이터 저장 장치(210), 데이터 조회 장치(220), 캐시 장치(230) 및 저장 장치(240)를 포함할 수 있다. 도 2에는 예시적인 목적으로 서버(130)의 구조 및 기능이 설명되었으며 이는본 발명의 범위에 대한 어떠한 한정도 암시하지 않음을 이해해야 한다. 본 발명의 실시예는 상이한 구조 및/또는 기능을 구비한 서버에 적용될 수도 있다.
도 2에 도시된 바와 같이, 데이터 저장 장치(210)는 클라이언트(120)로부터 저장할 데이터를 수신하고, 또한 저장할 데이터를 서버(130)의 데이터 테이블(140)에 저장할 수 있다. 데이터 테이블(140)은 저장 장치(240)에 저장될 수 있고, 데이터 테이블(140)의 조회 성능을 향상시키기 위해, 데이터 테이블(140) 내의 적어도 일부 데이터는 캐시 장치(230)에 캐싱될 수 있다. 이하 도 3을 추가로 참조하여 데이터 저장 장치(210)의 동작을 설명한다.
도 2에 도시된 바와 같이, 데이터 조회 장치(220)는 클라이언트(120)로부터 조회 요청을 수신하고, 또한 상기 조회 요청에 따라 서버(130)에 저장된 데이터 테이블(140)에 대해 조회 동작을 수행할 수 있다. 이하 도 5를 함께 참조하여 데이터 조회 장치(220)의 동작을 자세히 설명한다.
도 3은 본 발명의 실시예에 따른 데이터 저장 방법(300)의 흐름도를 도시한다. 예를 들어, 방법(300)은 도 2에 도시된 데이터 저장 장치(210)에 의해 수행될 수 있다. 이하 도 2를 참조하여 방법(300)을 상세히 설명한다. 방법(300)은 또한 도시되지 않은 추가 블록들을 포함하거나 및/또는 도시된 블록들은 생략될 수 있음을 이해해야 한다. 본 발명의 범위는 이에 한정되지 않는다.
블록(310)에서, 데이터 저장 장치(210)는 저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스를 생성한다.
일부 실시예에서, 저장할 데이터는 지식 베이스 내의 엔티티와 연관된 정보를 기록할 수 있다. 이하에서는, 상술한 바와 같은 엔티티 "에피프렘넘 아우레움"의 JASON포맷과 연관된 데이터를 저장할 데이터로서 예시한다. 일부 실시예에서, 예를 들어, 데이터 저장 장치(210)는 상기 데이터에서 엔티티 "에피프렘넘 아우레움"의 식별자(즉, "01rzqh7j")를 추출하고, 또한 상기 식별자를 상기 데이터를 인덱싱하기 위한 기본 인덱스로서 사용할 수 있다. 이는 단지 기본 인덱스를 생성하기 위한 하나의 예시적인 형태일 뿐, 다른 실시예에서 데이터 저장 장치(210)는 엔티티의 식별자 및/또는 다른 정보에 기반하여 데이터를 인덱싱하기 위한 기본 인덱스를 생성할 수도 있다.
블록(320)에서, 데이터 저장 장치(210)는 생성된 기본 인덱스 및 저장할 데이터를 데이터 테이블(140) 내의 데이터열에 작성한다.
일부 실시예에서, 데이터 테이블(140)은 예를 들어 분산형 저장 시스템(HBase) 내의 데이터 테이블(또는 HBase 데이터 테이블 내의 하나의 데이터 조각)이다. Hbase은 열 단위로 데이터를 저장하는 고 신뢰성, 고성능, 열 지향 및 확장 가능한 분산형 저장 시스템이다. 일부 실시예에서, 데이터 테이블(140) 내의 열은 데이터열과 인덱스열으로 구분될 수 있다. 여기에 설명된 "데이터열"은 타겟 데이터가 저장되는 열을 의미하고, "인덱스열"은 인덱스 정보만 저장하는 열을 의미한다. 도 4a는 본 발명의 실시예에 따른 예시적인 데이터 테이블(140)의 개략도를 도시한다. 도 4a에 도시된 바와 같이, 데이터 테이블(140)(HBase 데이터 테이블 또는 HBase 데이터 테이블의 하나의 데이터 조각)은 인덱스 영역(440) 및 데이터 영역(450)을 포함할 수 있고, 데이터 영역(450)은 복수의 데이터열(451, 452) 등을 포함할 수 있으며, 인덱스 영역(440)은 복수의 인덱스열(441, 442) 등을 포함할 수 있다.
일부 실시예에서, 데이터 저장 장치(210)는 생성된 기본 인덱스를 데이터열의 행 키(rowkey)로, 또한 저장할 데이터를 데이터열의 값으로서 양자를 데이터열에 작성할 수 있다. 예를 들어, 도 4a 내의 데이터열(451)을 예로 들면, 기본 인덱스(420-1)은 상기 데이터열(451)의 행 키로 사용되고, 대응되는 데이터(430-1)는 상기 데이터열(451)의 값으로 사용된다. 도 4a 내의 데이터열(452)을 예로 들면, 기본 인덱스(420-2)는 상기 데이터열(452)의 행 키로 사용되고, 대응되는 데이터(430-2)는 상기 데이터열(452)의 값으로 사용된다.
블록(330)에서, 데이터 저장 장치(210)는 데이터 테이블(140)의 조회 규칙 및 저장할 데이터에 기반하여, 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성한다.
일부 실시예에서, 데이터 저장 장치(210)는 데이터 테이블(140)의 인덱스 구성 정보를 획득할 수 있다. 예를 들어, 데이터 테이블(140)의 인덱스 구성 정보는 데이터 테이블(140)과 연관된 관계 데이터베이스(예를 들어, MySQL)에 미리 저장될 수 있다. 일부 실시예에서, 상기 인덱스 구성 정보는 예를 들어 연관된 데이터 테이블(140)의 식별자(예를 들어, 테이블명), 데이터 테이블(140)이 지원하는 조회 규칙, 데이터 테이블(140) 내의 더티 인덱스열(즉, 이와 연관된 데이터열과 매칭되지 않는 인덱스열)의 처리 규칙 등 정보를 지시할 수 있다. 일부 실시예에서, 데이터 저장 장치(210)는 인덱스 구성 정보에서 지시된 데이터 테이블(140)의 조회 규칙 및 저장할 데이터 자체에 기반하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성할 수 있다.
일부 실시예에서, 데이터 테이블(140)의 조회 규칙은 예를 들어 데이터 테이블(140)이 지원하는 조회 모드를 지시할 수 있다. 데이터 테이블(140)에 저장된 타겟 데이터는 지식 베이스 내의 엔티티 데이터이다. 상술한 바와 같은 엔티티 "에피프렘넘 아우레움"의 JASON포맷과 연관된 엔티티 데이터를 예로 들면, 이는 엔티티 "에피프렘넘 아우레움"의 하나 또는 복수의 속성값 및/또는 엔티티 "에피프렘넘 아우레움"과 하나 또는 복수의 객체 엔티티(예를 들어, 객체 엔티티 "단자엽 식물류", "천남성과") 사이의 대응 관계를 설명한다. 일부 실시예에서, 데이터 테이블(140)이 지원하는 조회 모드는 예를 들어, 데이터 테이블(140) 중 특정 속성값을 갖는 엔티티(예를 들어, 조회 타입이 "식물"인 엔티티)에 대한 조회, 특정 객체와 특정 관계를 갖는 엔티티에 대한 조회(예를 들어, "생물학적 분류"가 "단자엽 식물류"인 엔티티에 대한 조회), 특정 엔티티와 특정 객체 사이의 아웃 에지 관계에 대한 조회(예를 들어, "에피프렘넘 아우레움"과 "단자엽 식물류" 사이의 아웃 에지 관계, 즉 "단자엽 식물류"에 대한 "에피프렘넘 아우레움"의 관계에 대한 조회), 특정 엔티티와 특정 객체 사이의 인 에지 관계에 대한 조회(예를 들어, "에피프렘넘 아우레움"과 "단자엽 식물류" 사이의 인 에지 관계, 즉 "에피프렘넘 아우레움"에 대한 "단자엽 식물류"의 관계에 대한 조회), 특정 엔티티와 연관된 데이터에 대한 조회(예를 들어, 엔티티 "에피프렘넘 아우레움"의 모든 SPO 데이터에 대한 조회), 특정 아웃 에지 관계를 갖는 엔티티에 대한 조회(예를 들어, 아웃 에지 관계가 "생물학적 분류"인 엔티티에 대한 조회), 특정 인 에지 관계를 갖는 엔티티에 대한 조회(예를 들어, 인 에지 관계가 "생물학적 분류"인 엔티티에 대한 조회) 중 하나일 수 있다.
일부 실시예에서, 데이터 저장 장치(210)는 데이터 테이블(140)의 조회 규칙에 기반하여 엔티티 데이터 내의 각 SPO의 의미를 분석하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성할 수 있다. 추가적으로, 일부 실시예에서, 데이터 저장 장치(210)는 데이터 테이블(140)의 시작 메인 키를 보조 인덱스의 프리픽스로 사용하여 상기 보조 인덱스를 생성할 수 있다.
조회 규칙 "생물학적 분류가 단자엽 식물류인 엔티티에 대한 조회"를 예로 들면, 상기 조회 규칙이 정해진 SPO 트리플렛 내의 목적어(O) 및 서술자(P)에 의해 지시된 상황에서 주어(S)인 엔티티를 조회한다. 예를 들어, 보조 인덱스는 3개의 세그먼트로 구분될 수 있고, 각 세그먼트 사이는 부호 "|"로 분할할 수 있다. 제1 세그먼트는 데이터 테이블(140)의 시작 메인 키 및 목적어(O)의 id를 저장할 수 있고, 양자 사이는 부호 "'"로 분할될 수 있다. 데이터 테이블(140)의 시작 메인 키가 "01akbg1g"라고 가정하면, 제1 세그먼트는 예를 들어 "01akbg1g'01702l79"이고 제2 세그먼트는 조회 규칙과 연관된 JasonPath의 표현식일 수 있다. 상기 예시에 있어서, 제2 세그먼트는 예를 들어 "$.biologyClass.@id"이고, 제3 세그먼트는 주어(S)인 엔티티의 id, 즉 조회하려는 엔티티 데이터의 행 키일 수 있다. 상기 예시에 있어서, 제3 세그먼트는 예를 들어 "01rzqh7j"이다. 즉, 조회 규칙 "생물학적 분류가 단자엽 식물류인 엔티티에 대한 조회"에 있어서, 생성된 보조 인덱스는 "01akbg1g'01702l79 | $.biologyClass.@id | 01rzqh7j"이다. 다른 예를 들어, 조회 규칙 "소속 과목이 천남성과인 엔티티에 대한 조회"를 예로 들면, 생성된 보조 인덱스는 "01akbg1g' 01mmz9lr | $.biologyFamily.@id | 01rzqh7j"이다.
블록(340)에서, 데이터 저장 장치(210)는 보조 인덱스 및 기본 인덱스를 데이터 테이블(140) 내의 인덱스열에 작성한다.
일부 실시예에서, 데이터 저장 장치(210)는 생성된 기본 인덱스를 데이터열의 행 키로, 또한 저장할 데이터를 데이터열의 값으로서 양자를 데이터열에 작성할 수 있다. 예를 들어, 도 4a 내의 인덱스열(441)을 예로 들면, 이는 데이터열(451)과 연관된다. 보조 인덱스(410-1)는 상기 인덱스열(441)의 행 키로 사용되고, 데이터열(451)의 행 키인 기본 인덱스(420-1)는 상기 인덱스열(441)의 값으로 사용된다. 도 4a 내의 인덱스열(442)을 예로 들면, 이는 데이터열(452) 과 연관된다. 보조 인덱스(410-2)는 상기 인덱스열(442)의 행 키로 사용되고, 데이터열(452)의 행 키인 기본 인덱스(420-2)는 상기 인덱스열(442)의 값으로 사용된다.
추가적이거나 선택적으로, 일부 실시예에서, 데이터 저장 장치(210)는 데이터열 및 인덱스열의 작성된 원자성 및 데이터열 및 인덱스열의 일치성을 확보하기 위해, 서로 연관된 데이터열 및 인덱스열의 작성을 하나의 배치 트랜잭션 동작으로서 수행할 수 있다.
추가적이거나 선택적으로, 일부 실시예에서, 데이터 테이블(140)에 복수의 데이터 조각이 존재하는 경우, 데이터 저장 장치(210)는 조회시 인덱스 및 데이터가 동일한 서버에서 액세스되어 인덱스 및 데이터의 오프 사이트 액세스로 인한 추가 오버헤드를 피면하도록, 서로 연관된 인덱스열 및 데이터열(예를 들어, 인덱스열(441) 및 데이터열(451))이 항상 동일한 데이터 조각에 저장되도록 확보하여야 한다. 상기 목적을 달성하기 위해, 예를 들어 인덱스열의 행 키(즉, 보조 인덱스)를 생성할 경우, 데이터 저장 장치(210)는 데이터열이 위치하는 데이터 조각의 시작 메인 키를 인덱스열의 행 키의 프리픽스로 사용할 수 있다. 이러한 방식을 통해, 데이터 저장 장치(210)는 서로 연관된 인덱스열 및 데이터열이 항상 동일한 데이터 테이블의 동일한 데이터 조각에 저장되도록 확보할 수 있다. 이 밖에, 데이터 테이블(140)의 데이터 조각이 분해되거나 복수의 데이터 조각들이 병합될 경우, 데이터 저장 장치(210)는 서로 연관된 인덱스열 및 데이터열을 동기적으로 분해 또는 병합할 수 있고, 서로 연관된 인덱스열 및 데이터열이 항상 동일한 데이터 테이블의 동일한 데이터 조각에 저장되도록 확보할 수 있다.
일부 실시예에서, 예를 들어, 데이터열 및 인덱스열을 HBase 데이터 테이블에 작성할 경우, 데이터 저장 장치(210)는 인덱스열의 행 키가 사전(dictionary)의 순서에 따라 항상 데이터열의 행 키 앞에 배열되도록 하여 동일한 데이터 테이블(또는 데이터 테이블의 동일한 데이터 조각)의 전반 영역은 인덱스 영역이고 후반 영역은 데이터 영역일 수 있다. 이 밖에, 인덱스열의 값 및 데이터열의 값은 각각 HBase 데이터 테이블의 상이한 열 클러스터에 저장될 수 있으므로 인덱스열과 데이터열의 물리적 격리를 구현할 수 있다.
이러한 방식을 통해, 지식 그래프의 엔티티 데이터는 후속 조회를 위해 데이터 테이블(140)에 작성될 수 있다.
일부 실시예에서, 데이터 저장 장치(210)는 또한 클라이언트(120)로부터 엔티티 데이터 업데이트 요청을 수신할 수 있다. 예를 들어, 도 4b에 도시된 바와 같이, 데이터 저장 장치(210)는 도 4a에 도시된 데이터열(451) 내의 원본 데이터(430-1)를 데이터 (430-3)로 업데이트하고자 하는 요청을 수신할 경우, 데이터 저장 장치(210)는 데이터(430-3)를 데이터열(451)에 작성 할 수 있다. 데이터 저장 장치(210)는 업데이트된 데이터(430-3) 및 데이터 테이블(140)의 조회 규칙에 기반하여 원본 기본 인덱스(420-1)를 인덱싱하기 위한 신규 보조 인덱스(420-3)를 생성하고, 또한 신규 보조 인덱스(420-3) 및 원본 기본 인덱스(420-1)를 신규 인덱스열(443)에 작성할 수 있다. 도 4b에 도시된 바와 같이, 이전 인덱스열(441)은 데이터 테이블(140)에서 즉시 제거되지 않는다. 이하 도 5를 참조하여 진일보 설명한 바와 같이, 이전 인덱스열(441) 의 제거는 실제 데이터가 조회되기 전까지 지연되어 수행되므로 빈번하게 업데이트될 경우 데이터 테이블(140)의 작성 성능이 저하되지 않도록 확보할 수 있다. 추가적이거나 선택적으로, 일부 실시예에서, 업데이트된 데이터열 및 신규 인덱스열의 일치성을 확보하기 위해 데이터열의 업데이트 및 신규 인덱스열의 작성을 하나의 배치 트랜잭션 동작으로서 수행할 수 있다.
일부 실시예에서, 데이터 저장 장치(210)는 데이터 테이블(140)을 도 2에 도시된 저장 장치(240)에 저장할 수 있고, 저장 장치(240)는 예를 들어 제1 저장 매체를 이용하여 구현될 수 있다. 데이터 테이블(140)의 조회 성능을 향상시키기 위해, 데이터 테이블(140) 내의 인덱스 영역(440)는 예를 들어 도 2에 도시된 1차 캐시(231)에 캐싱될 수 있다. 1차 캐시(231)는 예를 들어 제2 저장 매체를 이용하여 구현될 수 있다. 이 밖에, 데이터 테이블(140) 내의 데이터 영역(450)은 예를 들어 도 2에 도시된 2차 캐시(232)에 캐싱될 수 있다. 2차 캐시(232)는 예를 들어 제3 저장 매체를 이용하여 구현될 수 있다.
일부 실시예에서, 1차 캐시(231)를 구현하기 위한 제2 저장 매체의 액세스 속도는 2차 캐시(232)를 구현하기 위한 제3 저장 매체의 액세스 속도를 초과하고, 또한 제3 저장 매체의 액세스 속도는 저장 장치(240)를 구현하기 위한 제1 저장 매체의 액세스 속도를 초과한다. 예를 들어, 제1 저장 매체의 예는 자기 디스크이고, 제2 저장 매체의 예는 메모리이며, 제3 저장 매체의 예는 솔리드 스테이트 디스크이나 상기 제1 저장 매체, 제2 저장 매체 및 제3 저장 매체의 예시는 본 발명의 범위를 한정하려는 것이 아니다. 다른 저장 매체도 도 2에 도시된 저장 장치(240) 및 캐시 장치(230)를 구현할 수 있음을 이해해야 한다.
도 5는 본 발명의 실시예에 따른 데이터 조회 방법(500)의 흐름도를 도시한다. 예를 들어, 방법(500)은 도 2에 도시된 데이터 조회 장치(220)에 의해 수행될 수 있다. 이하 도 2를 참조하여 방법(500)을 상세히 설명한다. 방법(500)은 또한 도시되지 않은 추가 블록들을 포함하거나 및/또는 도시된 블록들은 생략될 수 있음을 이해해야 한다. 본 발명의 범위는 이에 한정되지 않는다.
블록(510)에서, 데이터 조회 장치(220)는 데이터 테이블(140)에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여 데이터 테이블(140)의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하고, 상기 인덱스열은 데이터를 인덱싱하기 위한 기본 인덱스 및 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장한다.
일부 실시예에서, 데이터 조회 장치(220)는 적어도 조회 요청 내의 키워드에 기반하여 보조 인덱스의 적어도 일부를 결정하고, 데이터 테이블(140)의 하나 또는 복수의 인덱스열에서, 결정된 보조 인덱스의 적어도 일부와 매칭되는 인덱스열을 결정할 수 있다.
조회 요청 "단자엽 식물류의 음의 에지 엔티티에 대한 조회"를 예로 들면, 상기 조회 요청에는 예를 들어 SPO 트리플렛 내의 목적어(O)의 id(즉, 01702l79)가 정해진다. 데이터 조회 장치(220)는 데이터 테이블(140)(또는 데이터 테이블의 어느 데이터 조각)의 시작 메인 키(예를 들어, 01akbg1g)를 통해 목적어(O)의 id와 결합하여 보조 인덱스의 프리픽스 "01akbg1g'01702l79"를 결정할 수 있다. 데이터 조회 장치(220)는 결정된 보조 인덱스의 프리픽스와 매칭되는 인덱스열을 결정하기 위해, 결정된 보조 인덱스의 프리픽스에 기반하여 데이터 테이블(140)의 인덱스 영역(440)을 스캔할 수 있다.
일부 실시예에서, 데이터 테이블(140)의 인덱스 영역(440) 내의 적어도 일부는 예를 들어 도 2에 도시된 1차 캐시(231)에 이미 캐싱되어 있다. 이 경우, 데이터 조회 장치(220)는 우선 1차 캐시(231)에서 인덱스열의 스캔을 수행할 수 있다. 결정된 보조 인덱스의 프리픽스와 매칭되는 인덱스열이 이미 1차 캐시(231)에 캐싱되어 있을 경우, 데이터 조회 장치(220)는 1차 캐시(231)에서 상기 인덱스열을 결정하고, 그렇지 않으면, 데이터 조회 장치(220)는 저장 장치(240)에서 상기 인덱스열을 결정하기 위해, 저장 장치(240)에서 인덱스열의 스캔을 수행할 수 있다. 일부 실시예에서, 상기 인덱스열이 저장 장치(240)로부터 결정된 경우, 데이터 조회 장치(220)는 후속 조회의 효율을 향상시키기 위해, 상기 인덱스열을 1차 캐시(231)에 백필(back fill)할 수 있다.
블록(520)에서, 데이터 조회 장치(220)는 상기 인덱스열 내의 기본 인덱스에 기반하여 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하고, 상기 데이터열은 기본 인덱스 및 데이터를 저장한다.
일부 실시예에서, 데이터 조회 장치(220)는 상기 기본 인덱스와 매칭되는 데이터열을 결정하기 위해, 결정된 인덱스열 내의 기본 인덱스에 기반하여 데이터 테이블(140)의 데이터 영역(450)을 스캔할 수 있다.
일부 실시예에서, 데이터 테이블(140)의 데이터 영역(450) 내의 적어도 일부는 예를 들어 도 2에 도시된 2차 캐시(232)에 이미 캐싱된다. 이 경우, 데이터 조회 장치(220)는 우선 2차 캐시(232)에서 데이터열의 스캔을 수행할 수 있다. 결정된 기본 인덱스와 매칭되는 데이터열이 이미 2차 캐시(232)에 캐싱되어 있을 경우, 데이터 조회 장치(220)는 2차 캐시(232)에서 상기 데이터열을 결정하고, 그렇지 않으면, 데이터 조회 장치(220)는 저장 장치(240)에서 결정된 기본 인덱스와 매칭되는 데이터열을 결정하기 위해 데이터열의 스캔을 수행할 수 있다. 일부 실시예에서, 상기 데이터열이 저장 장치(240)로부터 결정된 경우, 데이터 조회 장치(220)는 후속 조회의 효율을 향상시키기 위해, 상기 데이터열을 2차 캐시(232)에 백필할 수 있다.
블록(530)에서, 데이터 조회 장치(220)는 상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정한다.
일부 실시예에서, 인덱스열은 상기 인덱스열이 데이터 테이블(140)에 작성되는 시간을 나타내는 제1 마크를 구비할 수 있고, 또한 데이터열은 상기 데이터열이 마지막으로 업데이트된 시간을 나타내는 제2 마크를 구비할 수 있다. 일부 실시예에서, 데이터 조회 장치(220)는 제1 마크와 제2 마크가 매칭되는지 여부를 결정할 수 있다. 제1 마크와 제2 마크가 매칭되지 않을 경우, 데이터 조회 장치(220)는 상기 인덱스열과 상기 데이터열이 매칭되지 않음을 결정할 수 있다(예를 들어, 도 4b에서, 데이터열(451)의 업데이트 시간과 인덱스열(441)의 작성 시간이 매칭되지 않으므로 데이터열(451)과 인덱스열(441)은 매칭되지 않음).
추가적이거나 선택적으로, 제1 마크와 제2 마크가 매칭될 경우, 데이터 조회 장치(220)는 상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하기 위해, 추가로 인덱스 정보의 비교를 수행할 수 있다. 도 4b의 데이터열(451) 및 인덱스열(443)을 예로 들면, 양자의 시간 마크는 서로 매칭된다. 이 경우, 데이터 조회 장치(220)는 데이터열(451) 내의 데이터 (430-3) 및 데이터 테이블(140)의 조회 규칙에 기반하여 보조 인덱스 세트를 다시 생성할 수 있다. 데이터 조회 장치(220)는 인덱스열(443) 내의 보조 인덱스가 다시 생성된 해당 그룹의 보조 인덱스에 포함되는지 여부를 결정할 수 있다. 인덱스열(443) 내의 보조 인덱스가 새로 생성된 해당 그룹의 보조 인덱스에 포함될 경우, 데이터 조회 장치(220)는 데이터열(451)과 인덱스열(443)이 매칭되는 것으로 결정하고; 그렇지 않으면, 데이터 조회 장치(220)는 데이터열(451)과 인덱스열(443)이 매칭되지 않는 것으로 결정할 수 있다.
인덱스열과 데이터열이 매칭되는 것으로 결정되면, 블록(540)에서, 데이터 조회 장치(220)는 조회 요청에 대한 응답으로서, 상기 데이터열에서 데이터를 획득한다. 예를 들어, 데이터 조회 장치(220)가 이미 도 4b에 도시된 데이터열(451)과 인덱스열(443)이 매칭되는 것으로 결정된 것으로 가정하면, 데이터 조회 장치(220)는 조회 요청에 대한 응답으로서, 데이터열(451)에서 데이터 (430-3)를 획득할 수 있다.
인덱스열과 데이터열이 매칭되지 않으면, 블록(550)에서, 데이터 조회 장치(220)는 데이터 테이블(140)에서 상기 인덱스열을 제거한다. 예를 들어, 데이터 조회 장치(220)가 이미 도 4b에 도시된 데이터열(451)과 인덱스열(441)이 매칭되지 않음을 결정 한 것으로 가정하면, 데이터 조회 장치(220)는 인덱스열(441)을 데이터 테이블(140)에서 제거할 수 있다.
상기 설명으로부터 보아낼 수 있듯이, 본 발명의 실시예는 지식 그래프 내의 엔티티 데이터에 대한 저비용 및 확장 가능한 저장 및 조회 기술을 구현함으로써, 선행기술에 존재하는 문제점 및/또는 기타 잠재된 문제점을 해결할 수 있다. 본 발명의 실시예는 엔티티 데이터 및 엔티티 데이터를 인덱싱하기 위한 기본 인덱스를 데이터 테이블의 데이터열에 저장하고, 데이터 테이블에 대한 조회 규칙에 기반하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성하며, 보조 인덱스 및 기본 인덱스는 동일한 데이터 테이블 내의 인덱스열에 저장된다. 엔티티 데이터가 업데이트되는 경우, 신규 보조 인덱스가 생성되고, 또한 기본 인덱스와 함께 상기 데이터 테이블의 신규 인덱스열에 작성되고 이전 인덱스열의 제거는 실제 데이터가 조회되기 전까지 지연되어 수행된다. 이러한 방식을 통해, 본 발명의 실시예는 지식 베이스 내의 엔티티 데이터가 빈번하게 업데이트되는 경우, 데이터의 작성 및 조회 성능이 저하되지 않도록 확보할 수 있다.
도 6은 본 발명의 실시예에 따른 데이터 저장 장치(600)의 예시적인 블록도를 도시하고, 상기 장치(600)는 도 2에 도시된 데이터 저장 장치(210)를 구현할 수 있다. 도 6에 도시된 바와 같이, 장치(600)는, 저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스를 생성하는 기본 인덱스 생성 모듈(610); 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성하는 데이터열 작성 모듈(620); 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성하는 보조 인덱스 생성 모듈(630); 및 보조 인덱스 및 기본 인덱스를 데이터 테이블 내의 인덱스열에 작성하는 인덱스열 작성 모듈(640)을 포함할 수 있다.
일부 실시예에서, 상기 데이터는 지식 베이스 내의 엔티티와 연관된 정보를 기록하고, 기본 인덱스 생성 모듈(610)은, 상기 데이터로부터 엔티티의 식별자를 획득하는 식별자 획득 유닛; 및 엔티티의 상기 식별자에 기반하여 기본 인덱스를 생성하는 기본 인덱스 생성 유닛을 포함한다.
일부 실시예에서, 데이터열 작성 모듈은, 기본 인덱스를 데이터열의 키로서 상기 데이터열에 작성하는 제1 데이터열 작성 유닛; 및 상기 데이터를 데이터열의 값으로서 상기 데이터열에 작성하는 제2 데이터열 작성 유닛을 포함한다.
일부 실시예에서, 보조 인덱스 생성 모듈은, 데이터 테이블의 인덱스 구성 정보를 획득하는 구성 정보 획득 유닛 - 인덱스 구성 정보는 상기 데이터 테이블의 조회 규칙을 지시함 - ; 및 인덱스 구성 정보 및 데이터에 기반하여 보조 인덱스를 생성하는 제1 생성 유닛을 포함한다.
일부 실시예에서, 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 데이터 테이블에 대한 조회 규칙은, 특정 속성값을 갖는 엔티티에 대한 조회; 특정 객체와 특정 관계를 갖는 엔티티에 대한 조회; 특정 객체에 대한 특정 엔티티의 정방향 관계에 대한 조회; 특정 엔티티에 대한 특정 객체의 역방향 관계에 대한 조회; 특정 엔티티와 연관된 데이터에 대한 조회; 특정 정방향 관계와 연관된 엔티티에 대한 조회; 및 특정 역방향 관계와 연관된 엔티티에 대한 조회 중 하나를 포함한다.
일부 실시예에서, 보조 인덱스 생성 모듈은, 데이터 테이블의 시작 메인 키를 결정하는 시작 메인 키 결정 유닛; 및 시작 메인 키를 보조 인덱스의 프리픽스로 사용하여 보조 인덱스를 생성하는 제2 생성 유닛을 포함한다.
일부 실시예에서, 인덱스열 작성 모듈은, 보조 인덱스를 인덱스열의 키로서 상기 인덱스열에 작성하는 제1 인덱스열 작성 유닛; 및 기본 인덱스를 상기 인덱스열의 값으로서 상기 인덱스열에 작성하는 제2 인덱스열 작성 유닛을 포함한다.
일부 실시예에서, 장치(600)는, 데이터열에 저장된 데이터에 대한 업데이트 요청을 수신한 것에 응답하여 상기 데이터를 업데이트하는 데이터 업데이트 모듈; 업데이트된 데이터 및 조회 규칙에 기반하여 기본 인덱스를 인덱싱하기 위한 신규 보조 인덱스를 생성하는 신규 보조 인덱스 생성 모듈; 및 신규 보조 인덱스 및 기본 인덱스를 데이터 테이블 내의 다른 인덱스열에 작성하는 신규 인덱스열 작성 모듈을 더 포함한다.
일부 실시예에서, 장치(600)는, 데이터 테이블을 제1 저장 매체를 이용하여 구현된 저장 장치에 저장하는 저장 모듈; 인덱스열을 제2 저장 매체를 이용하여 구현된 1차 캐시에 캐싱하는 제1 인덱스열 캐싱 모듈; 및 데이터열을 제3 저장 매체를 이용하여 구현된 2차 캐시에 캐싱하는 제1 데이터열 캐싱 모듈을 더 포함한다.
일부 실시예에서, 제2 저장 매체의 액세스 속도는 제3 저장 매체의 액세스 속도를 초과하고, 제3 저장 매체의 액세스 속도는 제1 저장 매체의 액세스 속도를 초과한다.
장치(600)에 기재된 각각의 모듈은 각각 도 3을 참조하여 설명된 방법(300) 중의 각 단계에 대응됨을 이해해야 한다. 또한 방법(300) 중의 대응되는 동작 및 특징과 동일한 효과를 가지므로 더 이상 구체적으로 설명하지 않는다.
도 7은 본 발명의 실시예에 따른 데이터 조회 장치(700)의 예시적인 블록도를 도시하고, 상기 장치(700)는 도 2에 도시된 데이터 조회 장치(220)를 구현할 수 있다. 도 7에 도시된 바와 같이, 장치(700)는, 데이터 테이블에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여, 데이터 테이블의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하는 인덱스열 결정 모듈(710) - 상기 인덱스열은 데이터를 인덱싱하기 위한 기본 인덱스 및 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장함 - ; 인덱스열 내의 기본 인덱스에 기반하여 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하는 데이터열 결정 모듈(720) - 상기 데이터열은 기본 인덱스 및 데이터를 저장함 - ;인덱스열과 데이터열이 매칭되는지 여부를 결정하는 매칭 모듈(730); 및 인덱스열과 데이터열이 매칭되는 것으로 결정된 것에 응답하여, 조회 요청에 대한 응답으로서 데이터열에서 데이터를 획득하는 획득 모듈(740)을 포함할 수 있다.
일부 실시예에서, 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 상기 조회 요청은, 특정 속성값을 갖는 엔티티; 특정 객체와 특정 관계를 갖는 엔티티; 특정 엔티티와 특정 객체 사이의 아웃 에지 관계; 특정 엔티티와 특정 객체 사이의 인 에지 관계; 특정 엔티티와 연관된 데이터; 특정 아웃 에지 관계를 갖는 엔티티; 및특정 인 에지 관계를 갖는 엔티티 중 적어도 하나를 조회하기 위한 것이다.
일부 실시예에서, 장치(700)는 인덱스열과 데이터열이 매칭되지 않는 것으로 결정된 것에 응답하여 데이터 테이블에서 상기 인덱스열을 제거하는 인덱스열 제거 모듈을 더 포함한다.
일부 실시예에서, 인덱스열 결정 모듈(710)은, 조회 요청 내의 키워드에 기반하여 보조 인덱스의 적어도 일부를 결정하는 보조 인덱스 결정 유닛; 및 하나 또는 복수의 인덱스열에서 보조 인덱스의 적어도 일부와 매칭되는 인덱스열을 결정하는 인덱스열 결정 유닛을 포함한다.
일부 실시예에서, 매칭 모듈(730)은, 인덱스열의 제1 마크를 획득하는 제1 마크 획득 유닛 - 제1 마크는 상기 인덱스열이 데이터 테이블에 작성되는 제1 시간을 표시함 - ; 데이터열의 제2 마크를 획득하는 제2 마크 획득 유닛 - 제2 마크는 상기 데이터열이 업데이트되는 제2 시간을 표시함 - ; 제1 마크와 제2 마크가 매칭되는지 여부를 결정하는 마크 매칭 유닛; 및 제1 마크와 제2 마크가 매칭되지 않는 것으로 결정된 것에 응답하여 인덱스열과 데이터열이 매칭되지 않는 것으로 결정하는 제1 매칭 결정 유닛을 포함한다.
일부 실시예에서, 매칭 모듈(730)은 제1 마크와 제2 마크가 매칭되는 것으로 결정된 것에 응답하여, 데이터열 내의 데이터에 기반하여 보조 인덱스 세트를 생성하는 보조 인덱스 생성 유닛; 인덱스열 내의 보조 인덱스가 상기 보조 인덱스 세트에 포함되는지 여부를 결정하는 보조 인덱스 매칭 유닛; 인덱스열 내의 보조 인덱스가 보조 인덱스 세트에 포함되는 것으로 결정된 것에 응답하여, 인덱스열과 데이터열이 매칭되는 것으로 결정하는 제2 매칭 결정 유닛; 및 인덱스열 내의 보조 인덱스가 상기 보조 인덱스 세트에 부재(absent)하는 것으로 결정된 것에 응답하여 인덱스열과 데이터열이 매칭되지 않는 것으로 결정하는 제3 매칭 결정 유닛을 더 포함한다.
일부 실시예에서, 데이터 테이블은 제1 저장 매체를 이용하여 구현된 저장 장치에 저장되고, 하나 또는 복수의 인덱스열 내의 적어도 일부는 제2 저장 매체를 이용하여 구현된 1차 캐시에 캐싱되며, 인덱스열 결정 모듈(710)은 인덱스열이 1차 캐시에 캐싱되어 있는지 여부를 결정하는 1차 캐시 검색 유닛; 인덱스열이 1차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 1차 캐시에서 상기 인덱스열을 결정하는 제1 인덱스열 결정 유닛; 및 인덱스열이 1차 캐시에 부재하는 것으로 결정된 것에 응답하여 저장 장치에서 상기 인덱스열을 결정하는 제2 인덱스열 결정 유닛을 포함한다.
일부 실시예에서, 장치(700)는 인덱스열이 저장 장치로부터 결정된 것에 응답하여 상기 인덱스열을 1차 캐시에 캐싱하는 제2 인덱스열 캐싱 모듈을 더 포함한다.
일부 실시예에서, 하나 또는 복수의 데이터열 내의 적어도 일부는 제3 저장 매체를 이용하여 구현된 2차 캐시에 캐싱된다. 데이터열 결정 모듈(720)은 데이터열이 2차 캐시에 캐싱되어 있는지 여부를 결정하는 2차 캐시 검색 유닛; 상기 데이터열이 2차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 2차 캐시에서 상기 데이터열을 결정하는 제1 데이터열 결정 유닛; 및 상기 데이터열이 2차 캐시에 부재하는 것으로 결정된 것에 응답하여 저장 장치에서 상기 데이터열을 결정하는 제2 데이터열 결정 유닛을 포함한다.
일부 실시예에서, 장치(700)는 데이터열이 저장 장치로부터 결정된 것에 응답하여 상기 데이터열을 2차 캐시에 캐싱하는 제2 데이터열 캐싱 모듈을 더 포함한다.
일부 실시예에서, 제2 저장 매체의 액세스 속도는 제3 저장 매체의 액세스 속도를 초과하고, 제3 저장 매체의 액세스 속도는 제1 저장 매체의 액세스 속도를 초과한다.
장치(700)에서 기술된 각각의 모듈은 각각 도 5를 참조하여 설명된 방법(500) 중의 각 단계에 대응됨을 이해해야 한다. 또한 방법(500) 중의 대응되는 동작 및 특징과 동일한 효과를 가지므로 더 이상 구체적으로 설명하지 않는다.
이 밖에, 장치(600 및/또는 700)에 포함되는 모듈 및/또는 유닛은 소프트웨어, 하드웨어, 펌웨어 또는 이들의 임의의 조합을 포함하여 다양한 방식으로 구현될 수 있다. 일부 실시예에서, 하나 또는 복수의 유닛은 저장 매체 상에 저장된 기계 실행 가능 명령어와 같은 소프트웨어 및/또는 펌웨어를 사용하여 구현될 수 있다. 기계 실행 가능 명령어 이외 또는 대신에 장치(600 및/또는 700) 내의 일부 또는 전부 유닛은 적어도 일부가 하나 또는 복수의 하드웨어 논리 부재에 의해 실행될 수 있다. 예를 들어, 비제한적인 예시로서, 사용 가능한 예시적인 유형의 하드웨어 논리 부재는 필드 프로그램 가능 게이트 어레이(FPGA), 전용 집적 회로(ASIC), 전용 표준 제품(ASSP), 시스템 온 칩 시스템(SOC), 복합 프로그램 가능 논리 소자(CPLD) 등을 포함한다.
도 6 및/또는 도 7에 도시된 이러한 모듈 및/또는 유닛은 하드웨어 모듈, 소프트웨어 모듈, 펌웨어 모듈 또는 이들의 임의의 조합으로 부분적 또는 전체적으로 구현될 수 있다. 특히, 일부 실시예에서, 상술된 프로세스, 방법 또는 과정은 저장 시스템 또는 저장 시스템에 대응되는 호스트 또는 저장 시스템과 별도로 구성된 기타 컴퓨팅 기기 내의 하드웨어에 의해 구현될 수 있다.
도 8은 본 발명의 실시예를 실행 가능한 예시적 기기(800)의 예시적인 블록도를 도시한다. 기기(800)는 도 1의 서버(130)를 구현할 수 있다. 도면에 도시된 바와 같이, 기기(800)는 판독 전용 메모리(ROM; 802)에 저장된 컴퓨터 프로그램 명령 또는 저장 유닛(808)으로부터 랜덤 액세스 메모리(RAM; 803)에 로딩된 컴퓨터 프로그램 명령에 따라, 다양한 적절한 동작 및 처리를 수행할 수 있는 중앙 처리 장치(CPU; 801)를 포함한다. RAM(803)에, 기기(800) 작동에 필요한 다양한 프로그램과 데이터가 더 저장될 수 있다. CPU(801), ROM(802) 및 RAM(803)은 버스(804)를 통해 서로 연결된다. 입력/출력(I/O) 인터페이스(805)도 버스(804)에 연결된다.
예를 들어 키보드, 마우스 등을 포함하는 입력 유닛(806); 예를 들어 디스플레이 장치, 스피커 등을 포함하는 출력 유닛(807); 예를 들어 자기 디스크, 광 디스크 등을 포함하는 저장 유닛(808); 및 예를 들어 LAN 카드, 모뎀, 무선 통신 트랜시버 등을 포함하는 통신 유닛(809)을 포함하는 기기(800) 중의 복수의 부재는 I/O 인터페이스(805)에 연결된다. 통신 유닛(809)은 기기(800)가 인터넷과 같은 컴퓨터 네트워크 및/또는 다양한 전기 통신망에 의해 다른 기기와 정보/데이터를 교환할 수 있도록 한다.
처리 유닛(801)은 상술한 각각의 방법, 예를 들어 방법(300) 및/또는 방법(500) 및 처리를 수행한다. 예를 들어, 일부 실시예에서, 방법(300) 및/또는 방법(500)은 저장 유닛(808)과 같은 기계 판독 가능 매체에 유형으로(tangible) 포함되는 컴퓨터 소프트웨어 프로그램에 의해 구현될 수 있다. 일부 실시예에서, 컴퓨터 프로그램의 일부 또는 전부는 ROM(802) 및/또는 통신 유닛(809)에 의해 기기(800)에 로딩 및/또는 실장될 수 있다. 컴퓨터 프로그램이 RAM(803)에 로딩되고 CPU(801)에 의해 실행될 경우, 상술한 방법(300) 및/또는 방법(500)의 하나 또는 복수의 단계를 수행할 수 있다. 대체 가능하게, 다른 실시예에서, CPU(801)는 다른 임의의 적절한 방식(예를 들어, 펌웨어에 의해)에 의해 방법(300) 및/또는 방법(500)을 수행하도록 구성될 수 있다.
본 출원에서 이상 설명된 기능은 적어도 일부가 하나 또는 복수의 하드웨어 논리 부재에 의해 실행될 수 있다. 예를 들어, 비제한적으로, 사용 가능한 시범 유형의 하드웨어 논리 부재는 필드 프로그램 가능 게이트 어레이(FPGA), 전용 집적 회로(ASIC), 전용 표준 제품(ASSP), 시스템 온 칩의 시스템(SOC), 복합 프로그램 가능 논리 소자(CPLD) 등을 포함한다.
본 발명의 방법을 구현하는 프로그램 코드는 하나 또는 복수의 프로그래밍 언어의 임의의 조합으로 작성될 수 있다. 이러한 프로그램 코드는 범용 컴퓨터, 전용 컴퓨터 또는 다른 프로그램 가능 데이터 처리 장치의 프로세서 또는 제어 장치에 제공될 수 있으며, 프로그램 코드는 프로세서 또는 제어 장치에 의해 실행될 경우, 흐름도 및/또는 블록도에 지정된 기능/동작이 구현되도록 할 수 있다. 프로그램 코드는 완전히 기계에서 실행되거나, 부분적으로 기계에서 실행되거나, 독립형 소프트웨어 패키지로서 기계에서 실행되며, 일부는 원격 기계에서 실행되거나 완전히 원격 기계 또는 서버에서 실행될 수 있다.
본 발명의 컨텍스트에서, 기계 판독 가능 매체는 명령어 실행 시스템, 장치 또는 기기에 의해 또는 명령어 실행 시스템, 장치 또는 기기와 결합하여 사용하기 위한 프로그램을 포함하거나 저장할 수 있는 유형 매체일 수 있다. 기계 판독 가능 매체는 기계 판독 가능 신호 매체 또는 기계 판독 가능 저장 매체일 수 있다. 기계 판독 가능 매체는 전자, 자기, 광학, 전자기, 적외선 또는 반도체 시스템, 장치 또는 기기, 또는 상기 내용의 임의의 적절한 조합을 포함할 수 있으나 이에 한정되지 않는다. 기계 판독 가능 저장 매체의 보다 구체적인 예는 하나 또는 복수의 와이어에 기반한 전기 연결, 휴대용 컴퓨터 디스크, 하드 디스크, 랜덤 액세스 메모리(RAM), 판독 전용 메모리(ROM), 소거 가능 프로그램 가능 판독 전용 메모리(EPROM 또는 플래시 메모리), 광섬유, CD-ROM, 광학 저장 기기, 자기 저장 기기 또는 상술한 내용의 임의의 적절한 조합을 포함한다.
이밖에, 특정 순서로 각 동작을 설명하였으나, 이는 이러한 동작들이 도시된 특정 순서 또는 순차적 순서로 수행되도록 요구되거나 모든 도시된 동작들이 예상 결과를 달성하기 위해 수행되어야 함을 이해해야 한다. 일정한 환경에서, 다수의 미션 및 병행 처리가 바람직할 수 있다. 마찬가지로, 상술한 설명에서 여러 개의 구체적인 구현 세부사항들이 포함되어 있으나 이는 본 발명의 범위를 한정하는 것으로 해석되어서는 안된다. 독립적인 실시예의 컨텍스트에서 설명된 특정 특징들은 단일 구현으로 조합되어 구현될 수 있다. 반대로, 단일 구현의 컨텍스트에서 설명된 다양한 특징은 또한 다수의 구현에서 독립적으로 또는 임의의 적절한 하위 조합으로 구현될 수도 있다.
구조 특징 및/또는 방법 논리적 동작에 특정된 언어로 본 발명을 설명하였으나, 첨부된 청구범위에서 한정된 주제는 상술한 특정된 특징 또는 동작에 반드시 한정되는 것이 아님을 이해해야 한다. 반대로, 상술한 특정된 특징 및 동작은 단지 청구범위의 예시적 형태를 구현하기 위한 것이다.
Claims (46)
- 서버에 의해 수행되는 데이터 저장 방법으로서,
저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스(primary index)를 생성하는 단계;
상기 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성(writing)하는 단계;
상기 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스(secondary index)를 생성하는 단계 - 상기 데이터 테이블의 상기 조회 규칙은 상기 데이터 테이블에 의해 지원되는 조회 모드를 지시하고, 상기 보조 인덱스를 생성하는 것은 상기 조회 규칙과 관련된 표현을 상기 보조 인덱스 내에 기입하는 것을 포함함 -;
상기 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 인덱스열에 작성하는 단계;
상기 데이터열에 저장된 상기 데이터에 대한 업데이트 요청을 수신한 것에 응답하여 상기 데이터를 업데이트하는 단계;
업데이트된 데이터 및 상기 조회 규칙에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 신규 보조 인덱스를 생성하는 단계; 및
상기 신규 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 다른 인덱스열에 작성하는 단계를 포함하고,
여기서, 이전 인덱스열의 제거는 실제 데이터가 조회되기 전까지 지연되어 수행되는
데이터 저장 방법.
- 제1항에 있어서,
상기 데이터는 지식 베이스 내의 엔티티와 연관된 정보를 기록하고, 상기 기본 인덱스를 생성하는 단계는,
상기 데이터로부터 상기 엔티티의 식별자를 획득하는 단계; 및
상기 엔티티의 상기 식별자에 기반하여 상기 기본 인덱스를 생성하는 단계를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 기본 인덱스 및 상기 데이터를 상기 데이터열에 작성하는 단계는,
상기 기본 인덱스를 상기 데이터열의 키로서 상기 데이터열에 작성하는 단계; 및
상기 데이터를 상기 데이터열의 값으로서 상기 데이터열에 작성하는 단계를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 보조 인덱스를 생성하는 단계는,
상기 데이터 테이블의 인덱스 구성 정보를 획득하는 단계 - 상기 인덱스 구성 정보는 상기 데이터 테이블의 상기 조회 규칙을 지시함 - ; 및
상기 인덱스 구성 정보 및 상기 데이터에 기반하여 상기 보조 인덱스를 생성하는 단계를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 상기 조회 규칙은,
특정 속성값을 갖는 엔티티에 대한 조회;
특정 객체와 특정 관계를 갖는 엔티티에 대한 조회;
특정 엔티티와 특정 객체 사이의 아웃 에지 관계에 대한 조회;
특정 엔티티와 특정 객체 사이의 인 에지 관계에 대한 조회;
특정 엔티티와 연관된 데이터에 대한 조회;
특정 아웃 에지 관계를 갖는 엔티티에 대한 조회; 및
특정 인 에지 관계를 갖는 엔티티에 대한 조회 중 적어도 하나를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 보조 인덱스를 생성하는 단계는,
상기 데이터 테이블의 시작 메인 키를 결정하는 단계; 및
상기 시작 메인 키를 상기 보조 인덱스의 프리픽스로 사용하여 상기 보조 인덱스를 생성하는 단계를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 보조 인덱스 및 상기 기본 인덱스를 상기 인덱스열에 작성하는 단계는,
상기 보조 인덱스를 상기 인덱스열의 키로서 상기 인덱스열에 작성하는 단계; 및
상기 기본 인덱스를 상기 인덱스열의 값으로서 상기 인덱스열에 작성하는 단계를 포함하는
데이터 저장 방법.
- 제1항에 있어서,
상기 데이터 테이블을 제1 저장 매체를 이용하여 구현된 저장 장치에 저장하는 단계;
상기 인덱스열을 제2 저장 매체를 이용하여 구현된 1차 캐시(primary cache)에 캐싱하는 단계; 및
상기 데이터열을 제3 저장 매체를 이용하여 구현된 2차 캐시(secondary cache)에 캐싱하는 단계를 더 포함하는
데이터 저장 방법.
- 제8항에 있어서,
상기 제2 저장 매체의 액세스 속도는 상기 제3 저장 매체의 액세스 속도를 초과하고, 상기 제3 저장 매체의 상기 액세스 속도는 상기 제1 저장 매체의 액세스 속도를 초과하는
데이터 저장 방법.
- 서버에 의해 수행되는 데이터 조회 방법으로서,
데이터 테이블에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여, 상기 데이터 테이블의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하는 단계 - 상기 인덱스열은 상기 데이터를 인덱싱하기 위한 기본 인덱스 및 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장하고, 상기 보조 인덱스는 상기 데이터 테이블의 조회 규칙과 관련된 표현을 상기 보조 인덱스 내에 기입하는 것을 통해 생성되고, 상기 조회 규칙은 상기 데이터 테이블에 의해 지원되는 조회 모드를 지시함 - ;
상기 인덱스열 내의 상기 기본 인덱스에 기반하여 상기 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하는 단계 - 상기 데이터열은 상기 기본 인덱스 및 상기 데이터를 저장함 - ;
상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 단계;
상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정된 것에 응답하여, 상기 조회 요청에 대한 응답으로서 상기 데이터열에서 상기 데이터를 획득하는 단계; 및
상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정된 것에 응답하여 상기 데이터 테이블에서 상기 인덱스열을 제거하는 단계를 포함하는
데이터 조회 방법.
- 제10항에 있어서,
상기 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 상기 조회 요청은,
특정 속성값을 갖는 엔티티;
특정 객체와 특정 관계를 갖는 엔티티;
특정 엔티티와 특정 객체 사이의 아웃 에지 관계;
특정 엔티티와 특정 객체 사이의 인 에지 관계;
특정 엔티티와 연관된 데이터;
특정 아웃 에지 관계를 갖는 엔티티; 및
특정 인 에지 관계를 갖는 엔티티 중 적어도 하나를 조회하기 위한 것인
데이터 조회 방법.
- 제10항에 있어서,
상기 하나 또는 복수의 인덱스열에서 상기 인덱스열을 결정하는 단계는,
적어도 상기 조회 요청 내의 키워드에 기반하여 상기 보조 인덱스의 적어도 일부를 결정하는 단계; 및
상기 하나 또는 복수의 인덱스열에서 상기 보조 인덱스의 상기 적어도 일부와 매칭되는 인덱스열을 결정하는 단계를 포함하는
데이터 조회 방법.
- 제10항에 있어서,
상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 단계는,
상기 인덱스열의 제1 마크를 획득하는 단계 - 상기 제1 마크는 상기 인덱스열이 상기 데이터 테이블에 작성되는 제1 시간을 표시함 - ;
상기 데이터열의 제2 마크를 획득하는 단계 - 상기 제2 마크는 상기 데이터열이 업데이트되는 제2 시간을 표시함 - ;
상기 제1 마크와 상기 제2 마크가 매칭되는지 여부를 결정하는 단계; 및
상기 제1 마크와 상기 제2 마크가 매칭되지 않는 것으로 결정된 것에 응답하여 상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정하는 단계를 포함하는
데이터 조회 방법.
- 제13항에 있어서,
상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 단계는,
상기 제1 마크와 상기 제2 마크가 매칭되는 것으로 결정된 것에 응답하여, 상기 데이터열 내의 상기 데이터에 기반하여 보조 인덱스 세트를 생성하는 단계;
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 포함되는지 여부를 결정하는 단계;
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 포함되는 것으로 결정된 것에 응답하여, 상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정하는 단계; 및
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 부재하는 것으로 결정된 것에 응답하여 상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정하는 단계를 더 포함하는
데이터 조회 방법.
- 제10항에 있어서,
상기 데이터 테이블은 제1 저장 매체를 이용하여 구현된 저장 장치에 저장되고, 상기 하나 또는 복수의 인덱스열 내의 적어도 일부는 제2 저장 매체를 이용하여 구현된 1차 캐시에 캐싱되며, 상기 하나 또는 복수의 인덱스열에서 상기 인덱스열을 결정하는 단계는,
상기 인덱스열이 상기 1차 캐시에 캐싱되어 있는지 여부를 결정하는 단계;
상기 인덱스열이 상기 1차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 상기 1차 캐시에서 상기 인덱스열을 결정하는 단계; 및
상기 인덱스열이 상기 1차 캐시에 부재하는 것으로 결정된 것에 응답하여 상기 저장 장치에서 상기 인덱스열을 결정하는 단계를 포함하는
데이터 조회 방법.
- 제15항에 있어서,
상기 인덱스열이 상기 저장 장치로부터 결정된 것에 응답하여 상기 인덱스열을 상기 1차 캐시에 캐싱하는 단계를 더 포함하는
데이터 조회 방법.
- 제15항에 있어서,
상기 하나 또는 복수의 데이터열 내의 적어도 일부는 제3 저장 매체를 이용하여 구현된 2차 캐시에 캐싱되고, 상기 하나 또는 복수의 데이터열에서 상기 데이터열을 결정하는 단계는,
상기 데이터열이 상기 2차 캐시에 캐싱되어 있는지 여부를 결정하는 단계;
상기 데이터열이 상기 2차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 상기 2차 캐시에서 상기 데이터열을 결정하는 단계; 및
상기 데이터열이 상기 2차 캐시에 부재하는 것으로 결정된 것에 응답하여 상기 저장 장치에서 상기 데이터열을 결정하는 단계를 포함하는
데이터 조회 방법.
- 제17항에 있어서,
상기 데이터열이 상기 저장 장치로부터 결정된 것에 응답하여 상기 데이터열을 상기 2차 캐시에 캐싱하는 단계를 더 포함하는
데이터 조회 방법.
- 제17항에 있어서,
상기 제2 저장 매체의 액세스 속도는 상기 제3 저장 매체의 액세스 속도를 초과하고, 상기 제3 저장 매체의 액세스 속도는 상기 제1 저장 매체의 액세스 속도를 초과하는
데이터 조회 방법.
- 데이터 저장 장치로서,
저장할 데이터에 대해, 상기 데이터를 인덱싱하기 위한 기본 인덱스를 생성하는 기본 인덱스 생성 모듈;
상기 기본 인덱스 및 상기 데이터를 데이터 테이블 내의 데이터열에 작성하는 데이터열 작성 모듈;
상기 데이터 테이블의 조회 규칙 및 상기 데이터에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 생성하는 보조 인덱스 생성 모듈 - 상기 데이터 테이블의 상기 조회 규칙은 상기 데이터 테이블에 의해 지원되는 조회 모드를 지시하고, 상기 보조 인덱스를 생성하는 것은 상기 조회 규칙과 관련된 표현을 상기 보조 인덱스 내에 기입하는 것을 포함함 -;
상기 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 인덱스열에 작성하는 인덱스열 작성 모듈;
상기 데이터열에 저장된 상기 데이터에 대한 업데이트 요청을 수신한 것에 응답하여 상기 데이터를 업데이트하는 데이터 업데이트 모듈;
업데이트된 데이터 및 상기 조회 규칙에 기반하여 상기 기본 인덱스를 인덱싱하기 위한 신규 보조 인덱스를 생성하는 신규 보조 인덱스 생성 모듈; 및
상기 신규 보조 인덱스 및 상기 기본 인덱스를 상기 데이터 테이블 내의 다른 인덱스열에 작성하는 신규 인덱스열 작성 모듈을 포함하고,
여기서, 이전 인덱스열의 제거는 실제 데이터가 조회되기 전까지 지연되어 수행되는
데이터 저장 장치.
- 제20항에 있어서,
상기 데이터는 지식 베이스 내의 엔티티와 연관된 정보를 기록하고, 상기 기본 인덱스 생성 모듈은,
상기 데이터로부터 상기 엔티티의 식별자를 획득하는 식별자 획득 유닛; 및
상기 엔티티의 상기 식별자에 기반하여 상기 기본 인덱스를 생성하는 기본 인덱스 생성 유닛을 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 데이터열 작성 모듈은,
상기 기본 인덱스를 상기 데이터열의 키로서 상기 데이터열에 작성하는 제1 데이터열 작성 유닛; 및
상기 데이터를 상기 데이터열의 값으로서 상기 데이터열에 작성하는 제2 데이터열 작성 유닛을 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 보조 인덱스 생성 모듈은,
상기 데이터 테이블의 인덱스 구성 정보를 획득하는 구성 정보 획득 유닛 - 상기 인덱스 구성 정보는 상기 데이터 테이블의 상기 조회 규칙을 지시함 - ; 및
상기 인덱스 구성 정보 및 상기 데이터에 기반하여 상기 보조 인덱스를 생성하는 제1 생성 유닛을 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 상기 조회 규칙은,
특정 속성값을 갖는 엔티티에 대한 조회;
특정 객체와 특정 관계를 갖는 엔티티에 대한 조회;
특정 엔티티와 특정 객체 사이의 아웃 에지 관계에 대한 조회;
특정 엔티티와 특정 객체 사이의 인 에지 관계에 대한 조회;
특정 엔티티와 연관된 데이터에 대한 조회;
특정 아웃 에지 관계를 갖는 엔티티에 대한 조회; 및
특정 인 에지 관계를 갖는 엔티티에 대한 조회 중 적어도 하나를 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 보조 인덱스 생성 모듈은,
상기 데이터 테이블의 시작 메인 키를 결정하는 시작 메인 키 결정 유닛; 및
상기 시작 메인 키를 상기 보조 인덱스의 프리픽스로 사용하여 상기 보조 인덱스를 생성하는 제2 생성 유닛을 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 인덱스열 작성 모듈은,
상기 보조 인덱스를 상기 인덱스열의 키로서 상기 인덱스열에 작성하는 제1 인덱스열 작성 유닛; 및
상기 기본 인덱스를 상기 인덱스열의 값으로서 상기 인덱스열에 작성하는 제2 인덱스열 작성 유닛을 포함하는
데이터 저장 장치.
- 제20항에 있어서,
상기 데이터 테이블을 제1 저장 매체를 이용하여 구현된 저장 장치에 저장하는 저장 모듈;
상기 인덱스열을 제2 저장 매체를 이용하여 구현된 1차 캐시에 캐싱하는 제1 인덱스열 캐싱 모듈; 및
상기 데이터열을 제3 저장 매체를 이용하여 구현된 2차 캐시에 캐싱하는 제1 데이터열 캐싱 모듈을 더 포함하는
데이터 저장 장치.
- 제27항에 있어서,
상기 제2 저장 매체의 액세스 속도는 상기 제3 저장 매체의 액세스 속도를 초과하고, 상기 제3 저장 매체의 상기 액세스 속도는 상기 제1 저장 매체의 액세스 속도를 초과하는
데이터 저장 장치.
- 데이터 조회 장치로서,
데이터 테이블에 저장된 데이터에 대한 조회 요청을 수신한 것에 응답하여, 상기 데이터 테이블의 하나 또는 복수의 인덱스열에서 상기 조회 요청과 매칭되는 인덱스열을 결정하는 인덱스열 결정 모듈 - 상기 인덱스열은 상기 데이터를 인덱싱하기 위한 기본 인덱스 및 상기 기본 인덱스를 인덱싱하기 위한 보조 인덱스를 저장하고, 상기 보조 인덱스는 상기 데이터 테이블의 조회 규칙과 관련된 표현을 상기 보조 인덱스 내에 기입하는 것을 통해 생성되고, 상기 조회 규칙은 상기 데이터 테이블에 의해 지원되는 조회 모드를 지시함 - ;
상기 인덱스열 내의 상기 기본 인덱스에 기반하여 상기 데이터 테이블의 하나 또는 복수의 데이터열에서 상기 인덱스열과 연관되는 데이터열을 결정하는 데이터열 결정 모듈 - 상기 데이터열은 상기 기본 인덱스 및 상기 데이터를 저장함 - ;
상기 인덱스열과 상기 데이터열이 매칭되는지 여부를 결정하는 매칭 모듈;
상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정된 것에 응답하여, 상기 조회 요청에 대한 응답으로서 상기 데이터열에서 상기 데이터를 획득하는 데이터 획득 모듈; 및
상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정된 것에 응답하여 상기 데이터 테이블에서 상기 인덱스열을 제거하는 인덱스열 제거 모듈을 포함하는
데이터 조회 장치.
- 제29항에 있어서,
상기 데이터 테이블은 지식 베이스 내의 엔티티의 하나 또는 복수의 속성값 및/또는 상기 엔티티와 하나 또는 복수의 객체 사이의 대응 관계를 저장하고, 상기 조회 요청은,
특정 속성값을 갖는 엔티티;
특정 객체와 특정 관계를 갖는 엔티티;
특정 엔티티와 특정 객체 사이의 아웃 에지 관계;
특정 엔티티와 특정 객체 사이의 인 에지 관계;
특정 엔티티와 연관된 데이터;
특정 아웃 에지 관계를 갖는 엔티티; 및
특정 인 에지 관계를 갖는 엔티티 중 적어도 하나를 조회하기 위한 것인
데이터 조회 장치.
- 제29항에 있어서,
상기 인덱스열 결정 모듈은,
적어도 상기 조회 요청 내의 키워드에 기반하여 상기 보조 인덱스의 적어도 일부를 결정하는 보조 인덱스 결정 유닛; 및
상기 하나 또는 복수의 인덱스열에서 상기 보조 인덱스의 상기 적어도 일부와 매칭되는 인덱스열을 결정하는 인덱스열 결정 유닛을 포함하는
데이터 조회 장치.
- 제29항에 있어서,
상기 매칭 모듈은,
상기 인덱스열의 제1 마크를 획득하는 제1 마크 획득 유닛 - 상기 제1 마크는 상기 인덱스열이 상기 데이터 테이블에 작성되는 제1 시간을 표시함 - ;
상기 데이터열의 제2 마크를 획득하는 제2 마크 획득 유닛 - 상기 제2 마크는 상기 데이터열이 업데이트되는 제2 시간을 표시함 - ;
상기 제1 마크와 상기 제2 마크가 매칭되는지 여부를 결정하는 마크 매칭 유닛; 및
상기 제1 마크와 상기 제2 마크가 매칭되지 않는 것으로 결정된 것에 응답하여 상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정하는 제1 매칭 결정 유닛을 포함하는
데이터 조회 장치.
- 제32항에 있어서,
상기 매칭 모듈은,
상기 제1 마크와 상기 제2 마크가 매칭되는 것으로 결정된 것에 응답하여, 상기 데이터열 내의 상기 데이터에 기반하여 보조 인덱스 세트를 생성하는 보조 인덱스 생성 유닛;
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 포함되는지 여부를 결정하는 보조 인덱스 매칭 유닛;
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 포함되는 것으로 결정된 것에 응답하여, 상기 인덱스열과 상기 데이터열이 매칭되는 것으로 결정하는 제2 매칭 결정 유닛; 및
상기 인덱스열 내의 상기 보조 인덱스가 상기 보조 인덱스 세트에 부재하는 것으로 결정된 것에 응답하여 상기 인덱스열과 상기 데이터열이 매칭되지 않는 것으로 결정하는 제3 매칭 결정 유닛을 더 포함하는
데이터 조회 장치.
- 제29항에 있어서,
상기 데이터 테이블은 제1 저장 매체를 이용하여 구현된 저장 장치에 저장되고, 상기 하나 또는 복수의 인덱스열 내의 적어도 일부는 제2 저장 매체를 이용하여 구현된 1차 캐시에 캐싱되며, 상기 인덱스열 결정 모듈은,
상기 인덱스열이 상기 1차 캐시에 캐싱되어 있는지 여부를 결정하는 1차 캐시 검색 유닛;
상기 인덱스열이 상기 1차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 상기 1차 캐시에서 상기 인덱스열을 결정하는 제1 인덱스열 결정 유닛; 및
상기 인덱스열이 상기 1차 캐시에 부재하는 것으로 결정된 것에 응답하여 상기 저장 장치에서 상기 인덱스열을 결정하는 제2 인덱스열 결정 유닛을 포함하는
데이터 조회 장치.
- 제34항에 있어서,
상기 인덱스열이 상기 저장 장치로부터 결정된 것에 응답하여 상기 인덱스열을 상기 1차 캐시에 캐싱하는 제2 인덱스열 캐싱 모듈을 더 포함하는
데이터 조회 장치.
- 제34항에 있어서,
상기 하나 또는 복수의 데이터열 내의 적어도 일부는 제3 저장 매체를 이용하여 구현된 2차 캐시에 캐싱되고, 상기 데이터열 결정 모듈은,
상기 데이터열이 상기 2차 캐시에 캐싱되어 있는지 여부를 결정하는 2차 캐시 검색 유닛;
상기 데이터열이 상기 2차 캐시에 캐싱되어 있는 것으로 결정된 것에 응답하여 상기 2차 캐시에서 상기 데이터열을 결정하는 제1 데이터열 결정 유닛; 및
상기 데이터열이 상기 2차 캐시에 부재하는 것으로 결정된 것에 응답하여 상기 저장 장치에서 상기 데이터열을 결정하는 제2 데이터열 결정 유닛을 포함하는
데이터 조회 장치.
- 제36항에 있어서,
상기 데이터열이 상기 저장 장치로부터 결정된 것에 응답하여 상기 데이터열을 상기 2차 캐시에 캐싱하는 제2 데이터열 캐싱 모듈을 더 포함하는
데이터 조회 장치.
- 제36항에 있어서,
상기 제2 저장 매체의 액세스 속도는 상기 제3 저장 매체의 액세스 속도를 초과하고, 상기 제3 저장 매체의 상기 액세스 속도는 상기 제1 저장 매체의 액세스 속도를 초과하는
데이터 조회 장치.
- 데이터 저장 기기로서,
하나 또는 복수의 프로세서; 및
하나 또는 복수의 프로그램이 저장된 저장 장치를 포함하고,
상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제1항 내지 제9항 중 어느 한 항에 따른 데이터 저장 방법을 구현하도록 하는
데이터 저장 기기.
- 데이터 조회 기기로서,
하나 또는 복수의 프로세서; 및
하나 또는 복수의 프로그램이 저장된 저장 장치를 포함하고,
상기 하나 또는 복수의 프로그램이 상기 하나 또는 복수의 프로세서에 의해 실행될 경우, 상기 하나 또는 복수의 프로세서가 제10항 내지 제19항 중 어느 한 항에 따른 데이터 조회 방법을 구현하도록 하는
데이터 조회 기기.
- 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체로서,
상기 컴퓨터 프로그램은 프로세서에 의해 실행될 경우 제1항 내지 제9항 중 어느 한 항에 따른 데이터 저장 방법을 구현하는
컴퓨터 판독 가능 저장 매체.
- 컴퓨터 프로그램이 저장된 컴퓨터 판독 가능 저장 매체로서,
상기 컴퓨터 프로그램은 프로세서에 의해 실행될 경우 제10항 내지 제19항 중 어느 한 항에 따른 데이터 조회 방법을 구현하는
컴퓨터 판독 가능 저장 매체. - 삭제
- 삭제
- 삭제
- 삭제
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910147197.4A CN109918472A (zh) | 2019-02-27 | 2019-02-27 | 存储和查询数据的方法、装置、设备和介质 |
CN201910147197.4 | 2019-02-27 |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20200104789A KR20200104789A (ko) | 2020-09-04 |
KR102407510B1 true KR102407510B1 (ko) | 2022-06-10 |
Family
ID=66962601
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020190162474A KR102407510B1 (ko) | 2019-02-27 | 2019-12-09 | 데이터 저장 및 조회 방법, 장치, 기기 및 매체 |
Country Status (5)
Country | Link |
---|---|
US (1) | US11334544B2 (ko) |
EP (1) | EP3702932A1 (ko) |
JP (1) | JP6998928B2 (ko) |
KR (1) | KR102407510B1 (ko) |
CN (1) | CN109918472A (ko) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110297881A (zh) * | 2019-07-08 | 2019-10-01 | 北京友缘在线网络科技股份有限公司 | 用于实现二级索引的方法和计算机可读介质 |
CN110489475B (zh) * | 2019-08-14 | 2021-01-26 | 广东电网有限责任公司 | 一种多源异构数据处理方法、***及相关装置 |
CN110737807A (zh) * | 2019-10-18 | 2020-01-31 | 深圳市华宝电子科技有限公司 | 一种数据存储方法、行车记录仪、服务器和存储介质 |
CN113127416A (zh) * | 2020-01-15 | 2021-07-16 | 北京沃东天骏信息技术有限公司 | 数据查询方法和装置 |
CN111427883A (zh) * | 2020-02-18 | 2020-07-17 | 深圳壹账通智能科技有限公司 | 基于AeroSpike的数据处理方法、装置、计算机设备及存储介质 |
CN111506570A (zh) * | 2020-03-05 | 2020-08-07 | 百度在线网络技术(北京)有限公司 | 数据存储及查询方法、装置、电子设备及存储介质 |
KR20220023202A (ko) | 2020-08-20 | 2022-03-02 | 주식회사 엘지에너지솔루션 | 콘택터 관리 방법 및 그 방법을 제공하는 배터리 시스템 |
CN112883125A (zh) * | 2021-04-28 | 2021-06-01 | 北京奇岱松科技有限公司 | 一种实体数据处理方法、装置、设备和存储介质 |
EP4092674A1 (en) * | 2021-05-19 | 2022-11-23 | Commissariat à l'Energie Atomique et aux Energies Alternatives | A non-volatile memory programming circuit and a method of programming non-volatile memory devices |
CN116108023B (zh) * | 2023-04-12 | 2023-07-04 | 北京首信科技股份有限公司 | 一种用于HBase数据库的数据检索方法和装置 |
CN117131042A (zh) * | 2023-08-01 | 2023-11-28 | 上海沄熹科技有限公司 | 一种数据库函数索引实现方法及装置 |
CN117688013B (zh) * | 2024-02-01 | 2024-04-30 | 北方健康医疗大数据科技有限公司 | 一种基于缓存索引的主索引生成方法、装置、设备及介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008533564A (ja) | 2005-02-24 | 2008-08-21 | ゼラウンド システムズ リミテッド | データ管理のための方法および装置 |
CN105740405A (zh) | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 存储数据的方法和装置 |
EP3236365A1 (en) | 2015-10-21 | 2017-10-25 | Huawei Technologies Co., Ltd. | Data query method and device |
CN109299110A (zh) * | 2018-11-09 | 2019-02-01 | 东软集团股份有限公司 | 数据查询方法、装置、存储介质和电子设备 |
Family Cites Families (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS61220027A (ja) | 1985-03-27 | 1986-09-30 | Hitachi Ltd | 文書ファイリングシステム及び情報記憶検索システム |
JPH0692493B2 (ja) * | 1990-03-13 | 1994-11-16 | タイガースポリマー株式会社 | 積層体用加硫ゴムシートの製造方法 |
US6993074B2 (en) * | 2000-03-24 | 2006-01-31 | Microsoft Corporation | Methods and arrangements for handling concentric mosaic image data |
US6708178B1 (en) | 2001-06-04 | 2004-03-16 | Oracle International Corporation | Supporting B+tree indexes on primary B+tree structures with large primary keys |
KR100834760B1 (ko) * | 2006-11-23 | 2008-06-05 | 삼성전자주식회사 | 최적화된 인덱스 검색 방법 및 장치 |
CN100483420C (zh) * | 2007-11-09 | 2009-04-29 | 清华大学 | 基于快照的细粒度文件与目录版本管理方法 |
CN101295323B (zh) * | 2008-06-30 | 2011-11-02 | 腾讯科技(深圳)有限公司 | 一种用于索引更新的处理方法和*** |
CN101435708B (zh) * | 2008-12-05 | 2011-06-22 | 四川长虹电器股份有限公司 | 移动导航设备中矢量地图的实时漫游与缩放的方法 |
US20110029478A1 (en) * | 2009-05-20 | 2011-02-03 | Broeker Stephen A | Stream Star Schema and Nested Binary Tree for Data Stream Analysis |
CN102567314B (zh) * | 2010-12-07 | 2015-03-04 | 中国电信股份有限公司 | 知识查询装置和方法 |
CN102768674B (zh) * | 2012-06-12 | 2016-08-24 | 北大方正集团有限公司 | 一种基于路径结构的xml数据存储方法 |
JP6225261B2 (ja) * | 2013-08-29 | 2017-11-01 | 華為技術有限公司Huawei Technologies Co.,Ltd. | データを記憶する方法及び装置 |
CN105159895A (zh) | 2014-05-28 | 2015-12-16 | 国际商业机器公司 | 用于存储和查询数据的方法和*** |
TWI526857B (zh) * | 2014-11-06 | 2016-03-21 | The database acceleration method is used to calculate the index value and the hybrid layer cache | |
JP6092493B1 (ja) | 2015-08-26 | 2017-03-08 | 成仁 片山 | データベース管理装置およびその方法 |
US20170193041A1 (en) | 2016-01-05 | 2017-07-06 | Sqrrl Data, Inc. | Document-partitioned secondary indexes in a sorted, distributed key/value data store |
US10936559B1 (en) * | 2016-09-28 | 2021-03-02 | Amazon Technologies, Inc. | Strongly-consistent secondary index for a distributed data set |
CN107273540B (zh) * | 2017-07-05 | 2021-09-24 | 北京三快在线科技有限公司 | 分布式搜索及索引更新方法、***、服务器及计算机设备 |
US11106697B2 (en) * | 2017-11-15 | 2021-08-31 | Hewlett Packard Enterprise Development Lp | Reading own writes using context objects in a distributed database |
CN109376173A (zh) * | 2018-11-08 | 2019-02-22 | 郑州云海信息技术有限公司 | 一种数据查询方法、装置、电子设备及存储介质 |
CN111506604B (zh) * | 2019-01-31 | 2023-06-13 | 伊姆西Ip控股有限责任公司 | 访问数据的方法、装置和计算机程序产品 |
-
2019
- 2019-02-27 CN CN201910147197.4A patent/CN109918472A/zh active Pending
- 2019-11-21 US US16/691,085 patent/US11334544B2/en active Active
- 2019-11-21 EP EP19210507.0A patent/EP3702932A1/en not_active Ceased
- 2019-11-22 JP JP2019211257A patent/JP6998928B2/ja active Active
- 2019-12-09 KR KR1020190162474A patent/KR102407510B1/ko active IP Right Grant
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008533564A (ja) | 2005-02-24 | 2008-08-21 | ゼラウンド システムズ リミテッド | データ管理のための方法および装置 |
EP3236365A1 (en) | 2015-10-21 | 2017-10-25 | Huawei Technologies Co., Ltd. | Data query method and device |
CN105740405A (zh) | 2016-01-29 | 2016-07-06 | 华为技术有限公司 | 存储数据的方法和装置 |
US20180276262A1 (en) * | 2016-01-29 | 2018-09-27 | Huawei Technologies Co., Ltd. | Data Storage Method and Apparatus |
CN109299110A (zh) * | 2018-11-09 | 2019-02-01 | 东软集团股份有限公司 | 数据查询方法、装置、存储介质和电子设备 |
Non-Patent Citations (1)
Title |
---|
블로그, "Hbase 보조 인덱스", https://blog.csdn.net/Luomingkui1109/article/details/82762852 (2018.09.18.) 1부.* |
Also Published As
Publication number | Publication date |
---|---|
CN109918472A (zh) | 2019-06-21 |
EP3702932A1 (en) | 2020-09-02 |
KR20200104789A (ko) | 2020-09-04 |
US11334544B2 (en) | 2022-05-17 |
US20200272610A1 (en) | 2020-08-27 |
JP2020140699A (ja) | 2020-09-03 |
JP6998928B2 (ja) | 2022-01-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102407510B1 (ko) | 데이터 저장 및 조회 방법, 장치, 기기 및 매체 | |
US8332389B2 (en) | Join order for a database query | |
US8396852B2 (en) | Evaluating execution plan changes after a wakeup threshold time | |
JP5437557B2 (ja) | 検索処理方法及び検索システム | |
CN107729371B (zh) | 区块链的数据索引及查询方法、装置、设备及存储介质 | |
US9378233B2 (en) | For all entries processing | |
WO2015074466A1 (zh) | 一种数据查询方法及装置 | |
US9323798B2 (en) | Storing a key value to a deleted row based on key range density | |
KR102368775B1 (ko) | 인덱스 관리 방법, 장치, 기기 및 저장 매체 | |
CN107145549B (zh) | 一种数据库缓存控制方法以及*** | |
CN109597829B (zh) | 一种实现可搜索加密关系型数据库缓存的中间件方法 | |
WO2018130142A1 (zh) | 用于数据库语句的语句解析方法 | |
US11188594B2 (en) | Wildcard searches using numeric string hash | |
CN110069489B (zh) | 一种信息处理方法、装置、设备及计算机可读存储介质 | |
CN111797095B (zh) | 索引构建方法和json数据查询方法 | |
US10366067B2 (en) | Adaptive index leaf block compression | |
CN112148739B (zh) | 独立于加密数据库的密文索引方法及*** | |
US10185742B2 (en) | Flexible text searching for data objects of object notation | |
CN114036158A (zh) | 一种Elasticsearch与MySQL的联合查询方法和装置 | |
CN113536058A (zh) | 一种空间索引修改方法、装置、设备及存储介质 | |
CN113505129A (zh) | 一种基于字典的数据库查询优化方法、装置及终端设备 | |
US11860906B2 (en) | Partition-local partition value identifier grouping | |
CN111159218B (zh) | 数据处理方法、装置及可读存储介质 | |
CN117407391A (zh) | 数据库的全文索引方法、装置、计算机设备和存储介质 | |
CN117421330A (zh) | 通用的数据表查询方法、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
E902 | Notification of reason for refusal | ||
E90F | Notification of reason for final refusal | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant |