KR20160040282A - 데이터를 저장하기 위한 방법 및 장치 - Google Patents

데이터를 저장하기 위한 방법 및 장치 Download PDF

Info

Publication number
KR20160040282A
KR20160040282A KR1020167005763A KR20167005763A KR20160040282A KR 20160040282 A KR20160040282 A KR 20160040282A KR 1020167005763 A KR1020167005763 A KR 1020167005763A KR 20167005763 A KR20167005763 A KR 20167005763A KR 20160040282 A KR20160040282 A KR 20160040282A
Authority
KR
South Korea
Prior art keywords
data
data object
format
row identifier
type distribution
Prior art date
Application number
KR1020167005763A
Other languages
English (en)
Other versions
KR101720602B1 (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 후아웨이 테크놀러지 컴퍼니 리미티드
Publication of KR20160040282A publication Critical patent/KR20160040282A/ko
Application granted granted Critical
Publication of KR101720602B1 publication Critical patent/KR101720602B1/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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2228Indexing structures
    • G06F17/30587
    • 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/221Column-oriented storage; Management thereof
    • 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/2264Multidimensional index structures
    • 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/2272Management thereof
    • 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
    • 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/24562Pointer or reference processing operations
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • 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/28Databases characterised by their database models, e.g. relational or object models
    • G06F16/289Object oriented databases
    • G06F17/30315
    • G06F17/30321

Abstract

본 발명은 데이터 저장 방법 및 장치를 개시한다. 본 방법은, 키값 유형 분포식 데이터베이스(KeyValue type distributed database)에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하는 단계; 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하는 단계 - 상기 로우 식별자의 포맷이 상기 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 상기 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자가 상기 로우 식별자의 포맷에서 동일한 위치에 있으며 상기 동일한 컬럼 속성 뒤에 위치됨 -; 각 데이터 객체에 대해 결정된 상기 로우 식별자의 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하는 단계; 및 각 데이터 기록의 상기 로우 식별자 값과 각 데이터 기록을 상기 키값 유형 분포식 데이터베이스에 저장하는 단계를 포함하며, 각 데이터 기록의 상기 로우 식별자 값이 상기 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스(primary index)로서 사용된다. 본 발명의 실시예에 따른 데이터 저장 방법 및 장치는 데이터 쿼리 효율을 향상시킬 수 있다.

Description

데이터를 저장하기 위한 방법 및 장치 {METHOD AND DEVICE FOR STORING DATA}
본 발명은 정보 기술 분야에 관한 것으로, 구체적으로는 데이터 저장 방법 및 장치에 관한 것이다.
분포식 컬럼 저장 데이터베이스(distributed column storage database)로서, 키값(KeyValue) 유형 분포식 데이터베이스는 높은 확장성과 견고성을 가지며, 점점 도 많은 시스템들에 폭넓게 응용되어 왔다. 키값 유형 분포식 데이터베이스의 사용자 테이블은 일반적으로 비교적 간단한 데이터 포맷이면서, 간단한 상관관계를 가지지만, 다량인 데이터를 저장하도록 설계된다. 예를 들어, 웹 페이지 어드레스 정보를 저장하거나, 통화 기록 정보를 저장하거나, 또는 네트워크 액세스 기록 정보 등을 저장하도록 설계된다. 키값 유형 분포식 데이터베이스는 데이터 레코드의 로우키(RowKey)에 따라서 고속의 쿼리(query)를 제공할 수 있으며, 고속의 쿼리는 데이터 양과는 상관없다. 물리 노드는, 현재의 저장 공간 사용이 임계값(threshold)에 도달하는 경우 키값 유형 분포식 데이터베이스에 동적으로 부가될 수 있다.
기존의 기업의 데이터베이스 애플리케이션에서, 통상적으로 많은 사용자 데이터 테이블이 관련되고, 이들 데이터 테이블은 상이한 크기를 가지며, 테이블들의 데이터 사이에 내부의 상관관계가 존재할 수 있다. 그러나, 희소 매트릭스(sparse matrix)에 기초한 키값 유형 분포식 데이터베이스는 대랑의 데이터에 테이블을 저장하는데 적합하다. 만약 이들 원형의 테이블이 키값 유형 분포식 데이터베이스에 직접 도입되는 경우 과도한 소형 테이블들이 존재하게 되며, 따라서, 크로스-테이블(cross-table)의 관련 쿼리를 구현하기가 어려우며, 관리 복잡도 또한 증가하게 된다. 즉, 종래 애플리케이션에서의 데이터가, 한 사용자 테이블과 다른 사용자 테이블 사이의 상관관계 쿼리를 완성하기 위해, 키값 유형 분포식 데이터베이스내로 이동되는 경우, 상이한 테이블들이 쿼리되어야 하며, 데이터 로케이팅(locating)이 끊임없이 수행되어야 하므로, 효율이 낮아지게 된다.
본 발명의 실시예는 데이터 저장 방법 및 장치를 제공하며, 데이터 쿼리 효율을 향상시킬 수 있다.
제1 측면은 제이터 저장 방법을 제공하며, 키값 유형 분포식 데이터베이스(KeyValue type distributed database)에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하는 단계; 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하는 단계 - 상기 로우 식별자의 포맷이 상기 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 상기 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자가 상기 로우 식별자의 포맷에서 동일한 위치에 있으며 상기 동일한 컬럼 속성 뒤에 위치함 -; 각 데이터 객체에 대해 결정된 상기 로우 식별자의 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하는 단계; 및 각 데이터 기록의 상기 로우 식별자 값과 각 데이터 기록을 상기 키값 유형 분포식 데이터베이스에 저장하는 단계를 포함하며, 각 데이터 기록의 상기 로우 식별자 값이, 상기 키값 유형 분포식 데이터베이스에서, 각 데이터 기록의 1차 인덱스(primary index)로서 사용된다.
제1 가능한 구현예에서, 본 방법은, 상기 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스트 테이블(cluster table)을 형성하도록, 상기 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 상기 데이터 기록 모두를 배열하는 단계를 더 포함한다.
제1 측면의 제1 가능한 구현예를 참조한, 제2 가능한 구현예에서, 상기 제1 순서는 사전식 순서(lexicographic order)이다.
제1 측면 또는 제1 측면의 제1 또는 제2 가능한 구현예를 참조한, 제3 가능한 구현예에서, 본 방법은, 상기 적어도 두 개의 데이터 객체에서 데이터 기록을 쿼리(query)하거나 또는 획득하도록 지시하는 데이터 요청을 수신하는 단계; 상기 로우 식별자의 포맷에 따라서, 상기 키값 유형 분포식 데이터베이스를 쿼리하기 위한, 상기 동일한 컬럼 속성을 포함하는 쿼리 정보를 구성하는 단계; 및 상기 쿼리 정보에 따라서, 1차 인덱스(primary index)가 상기 쿼리 정보를 포함하는 데이터 기록을 상기 키값 유형 분포식 데이터베이스로부터 내보내는(export) 단계를 더 포함한다.
제1 측면 또는 제1 측면의 제1 내지 제3 가능한 구현예 중 어느 하나의 가능한 구현예를 참조한, 제4 가능한 구현예에서, 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우 식별자의 포맷을 결정하는 단계가, 상기 적어도 두 개의 데이터 객체에 대해 상기 키값 유형 분포식 데이터베이스에서, 상기 로우 식별자의 제1 프리픽스(prefix)를 특정하는 단계 - 상기 제1 프리픽스는 상수임 -; 및 상기 적어도 두 개의 데이터 객체 중 제1 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 및 상기 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나, 또는, 상기 적어도 두 개의 데이터 객체 중 제2 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 상기 제2 데이터 객체의 데이터 객체 식별자, 및 상기 제2 데이터 객체의 컬럼 속성에 있으면서 상기 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하 것으로 결정하는 단계를 포함한다.
제1 측면의 제4 가능한 구현예를 참조한, 제5 가능한 구현예에서, 상기 쿼리 정보가 상기 제1 프리픽스와 상기 동일한 컬럼 속성을 포함한다.
제4 측면 또는 제1 측면의 제5 가능한 구현예를 참조한, 제6 가능한 구현예에서, 본 방법은, 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스(secondary index)의 포맷이 제2 프리픽스, 제2 속성, 및 상기 동일한 컬럼 속성인 것으로 결정하는 단계 - 상기 제2 속성은 상기 임의의 데이터 객체의 컬럼 속성에 있으면서 상기 동일한 속성과 상이한 컬럼 속성이고, 상기 제2 프리픽스는 상기 제1 프리픽스와 상이한 상수임 -; 상기 임의의 데이터 객체의 상기 2차 인덱스의 포맷에 따라서 상기 임의의 데이터 객체의 상기 2차 인덱스를 결정하는 단계; 및 상기 키값 유형 분포식 데이터베이스에 상기 임의의 데이터 객체의 상기 2차 인덱스를 저장하는 단계를 더 포함한다.
제1 측면 또는 제1 측면의 제1 내지 제6 가능한 구현예 중 어느 하나의 가능한 구현예를 참조한, 제7 가능한 구현예에서, 상기 로우 식별자의 포맷 내의 필드(field)들 사이에 분리자(separator)가 설정되거나, 또는 상기 필드들이 고정 길이를 갖는다.
제2 측면은 데이터 저장 장치를 제공하며, 상기 키값 유형 분포식 데이터베이스(KeyValue type distributed database)에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하고; 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하며; 각 데이터 객체에 대해 결정된 상기 로우 식별자의 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하도록 구성되는 결정 모듈 - 상기 로우 식별자의 포맷이 상기 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 상기 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자가 상기 로우 식별자의 포맷에서 동일한 위치에 있으며 상기 동일한 컬럼 속성 뒤에 위치함 -; 및 각 데이터 기록의 상기 로우 식별자 값과 각 데이터 기록을 상기 키값 유형 분포식 데이터베이스에 저장하도록 구성되는 저장 모듈을 포함하며, 각 데이터 기록의 상기 로우 식별자 값이 상기 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스(primary index)로서 사용된다.
제1 가능한 구현예에서, 상기 저장 모듈이 상기 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스트 테이블(cluster table)을 형성하도록, 상기 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 상기 데이터 기록 모두를 배열하도록 추가로 구성된다.
제2 측면의 제1 가능한 구현예를 참조한, 제2 가능한 구현예에서, 상기 제1 순서가 사전식 순서(lexicographic order)이다.
제2 측면 또는 제2 측면의 제1 또는 제2 가능한 구현예를 참조한, 제3 가능한 구현예에서, 상기 적어도 두 개의 데이터 객체에서 데이터 기록을 쿼리(query)하거나 또는 획득하도록 지시하는 데이터 요청을 수신하도록 구성되는 수신 모듈; 및 상기 로우 식별자의 포맷에 따라서, 상기 키값 유형 분포식 데이터베이스를 쿼리하기 위한, 상기 동일한 컬럼 속성을 포함하는 쿼리 정보를 구성하고, 상기 쿼리 정보에 따라서, 1차 인덱스(primary index)가 상기 쿼리 정보를 포함하는 데이터 기록을 상기 키값 유형 분포식 데이터베이스로부터 내보내는(export)도록 구성되는 쿼리 모듈을 더 포함한다.
제2 측면 또는 제2 측면의 제1 내지 제3 가능한 구현예 중 어느 하나의 가능한 구현예를 참조한 제4 가능한 구현예에서, 상기 결정 모듈이, 구체적으로, 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에 대해, 상기 로우 식별자의 제1 프리픽스(prefix)를 특정하고, 상기 적어도 두 개의 데이터 객체 중 제1 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 및 상기 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나, 또는, 상기 적어도 두 개의 데이터 객체 중 제2 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 상기 제2 데이터 객체의 데이터 객체 식별자, 및 상기 제2 데이터 객체의 컬럼 속성에 있으면서 상기 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정하도록 구성되고, 상기 제1 프리픽스는 상수이다.
제2 측면의 제5 가능한 구현예를 참조한, 제5 가능한 구현예에서, 상기 쿼리 정보가 상기 제1 프리픽스와 상기 동일한 컬럼 속성을 포함한다.
제4 측면 또는 제2 측면의 제5 가능한 구현예를 참조한, 제6 가능한 구현예에서, 상기 결정 모듈이, 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스(secondary index)의 포맷이 제2 프리픽스, 제2 속성, 및 상기 동일한 컬럼 속성인 것으로 결정하고, 상기 임의의 데이터 객체의 상기 2차 인덱스의 포맷에 따라서 상기 임의의 데이터 객체의 상기 2차 인덱스를 결정하도록 추가로 구성되며, 상기 저장 모듈이 상기 키값 유형 분포식 데이터베이스에서 상기 임의의 데이터 객체의 상기 2차 인덱스를 저장하도록 추가로 구성되고, 상기 제2 속성은 상기 임의의 데이터 객체의 컬럼 속성에 있으면서 상기 동일한 속성과 상이한 컬럼 속성이고, 상기 제2 프리픽스는 상기 제1 프리픽스와 상이한 상수이다.
제2 측면 또는 제2 측면의 제1 내지 제6 가능한 구현예 중 어느 하나의 가능한 구현예를 참조한 제7 가능한 구현예에서, 상기 로우 식별자의 포맷 내의 필드(field)들 사이에 분리자(separator)가 설정되거나, 또는 상기 필드들이 고정 길이를 갖는다.
전술한 기술적 해결수단에 기초하여, 본 발명의 실시예에 따른 데이터 저장 방법 및 장치에서, 상관된 데이터 객체가 동일한 컬럼 속성을 포함하는 로우 식별자 포맷을 사용하여 키값 유형 분포식 데이터베이스에 저장되어, 상관된 쿼리가 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율이 향상될 수 있다.
본 발명의 실시예에서의 기술적 해결수단을 더욱 명확히 기술하기 위해, 이하에서 본 발명의 실시예를 설명할 때 필요한 첨부 도면을 간략하게 소개한다. 분명한 것은, 이어질 설명에서 첨부된 도면은 단지 본 발명의 몇 가지 실시예를 나타내며, 통상의 기술자라면 첨부된 도면으로부터 창작 능력 없이도 다른 도면을 도출해 낼 수 있다는 것이다.
도 1은 본 발명의 실시예에 따른 데이터 저장 방법의 개략적인 흐름도이다.
도 2는 본 발명의 실시예에 따라 로우 식별자 포맷을 결정하기 위한 방법의 개략적인 흐름도이다.
도 3은 본 발명의 다른 실시예에 따른 데이터 저장 방법의 개략적인 흐름도이다.
도 4는 본 발명의 또 다른 실시예에 따른 데이터 저장 방법의 개략적인 흐름도이다.
도 5는 본 발명의 실시예에 따른 데이터 저장 장치의 개략적인 블록 구성도이다.
도 6은 본 발명의 다른 실시예에 따른 데이터 저장 장치의 개략적인 블록 구성도이다.
도 7은 본 발명의 실시예에 따른 데이터 저장 장치의 개략적인 구조도이다.
이하에서 본 발명의 실시예에 관한 첨부 도면을 참조하여 본 발명의 실시예의 기술적 해결 수단을 명확하고 상세하게 기술한다. 분명한 것은, 여기 기술된 실시예는 단지 본 발명의 실시예의 일부이며 전부가 아니라는 것이다. 본 발명의 실시예에 기초하여 창작 노력 없이 통상의 기술자에 의해 획득되는 다른 모든 실시예는 본 발명의 보호 범위 내에 포함될 것이다.
본 발명의 실시예에서의 기술적 해결 수단은 키값 유형 분포식 데이터베이스(KeyValue Type distributed database)에 적용될 수 있다.
본 발명의 실시예에서, 데이터 객체는 데이터 테이블(또한 테이블로서 간단하게 명명함) 또는 데이터 테이블 포맷의 데이터이다. 예를 들어, 데이터는 통화 기록 데이터(call record data), 네트워크 액세스 기록 데이터 등일 수 있다. 설명의 편의를 위해, 이하의 실시예에서는, 데이터 테이블을 예로 사용하여 설명된다.
도 1은 본 발명의 실시예에 따른 데이터 저장 방법(100)의 개략적인 흐름도이다. 도 1에서의 방법은 데이터 저장 장치에 의해 실행된다. 도 1에 도시된 바와 같이, 본 방법(100)은 다음의 단계를 포함한다.
단계 S110: 키값 유형 분포식 데이터베이스에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정한다.
단계 S120: 키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 내에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하며, 여기서 로우 식별자 포맷은 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치된다.
단계 S130: 각 데이터 객체에 대해 결정된 로우 식별자 포맷에 따라서 각 데이터 객체의 각 데이터 기록(record)의 로우 식별자 값을 결정한다.
단계 S140: 키값 유형 분포식 데이터베이스에 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 저장하며, 여기서 각 데이터 기록의 로우 식별자 값은 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스(primary index)로서 사용된다.
본 발명의 실시예에서, 복수의(적어도 두 개의) 데이터 객체가 상관되는 경우, 즉 복수의 데이터 객체가 복수의 데이터 객체에 대해 상관된 쿼리를 가능하게 하기 위해 동일한 컬럼 속성을 가지는 경우, 데이터 저장 장치가 키값 유형 분포식 데이터베이스의 하나의 테이블에 복수의 데이터 객체를 저장한다. 데이터 저장 장치는, 동일한 컬럼 속성에 기초하여, 키값 유형 분포식 데이터베이스에서, 각 데이터 객체의 로우 식별자(예를 들어, RowKey)의 포맷을 결정하며, 여기서 로우 식별자 포맷은 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치하게 된다. 즉, 데이터 객체 모두의 로우 식별자 포맷은 쿼리를 가능하게 하기 위해 동일한 컬럼 속성을 포함하며, 상이한 데이터 객체를 구별하기 위해 데이터 객체에 대응하는 데이터 객체 식별자를 더 포함한다. 상이한 데이터 객체의 로우 식별자 포맷이 일관된 구조를 가지도록, 상이한 데이터 객체의 데이터 객체 식별자가 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치된다. 그 후, 데이터 저장 장치는 결정된 로우 식별자 포맷에 따라서 각 데이터 객체에서 각 데이터 기록의 로우 식별자 값을 결정하고, 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 키값 유형 분포식 데이터베이스에 저장하며, 여기서 각 데이터 기록의 로우 식별자 값은 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스로 사용된다. 이와 같이, 일관된 로우 식별자 포맷이 복수의 상관된 데이터 객체에 대해 사용되기 때문에, 데이터 쿼리 중에, 쿼리 정보가 로우 식별자 포맷에 따라서 구성되어, 상관된 쿼리가 하나의 데이터 테이블에서 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율을 향상시킬 수가 있다.
따라서, 본 발명의 실시예에 따른 데이터 저장 방법에서, 상관된 데이터 객체가 동일한 컬럼 속성을 포함하는 로우 식별자 포맷을 사용하여 키값 유형 분포식 데이터베이스에 저장되어, 상관된 쿼리가 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에서, 로우 식별자가 데이터의 각 로우의 식별자라는 것이 이해되어져야 한다. 로우 식별자는 RowKey 또는 Key로서 표현될 수 있으며, 이는 본 발명에서 한정되지 않는다. 설명의 편의를 위해, 이하의 실시예에서, RowKey를 예로 사용하여 설명된다.
이하, 구체적인 예를 사용하여 본 발명의 실시예가 설명된다. 이러한 예는 단순히 통상의 기술자가 본 발명의 실시예를 더 잘 이해할 수 있도록 하고자 하는 것으로, 본 발명의 실시예의 범위를 한정하고자 하는 것이 아니다.
단계 S110에서, 데이터 저장 장치가 키값 유형 분포식 데이터베이스에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정한다.
복수의 데이터 객체가 동일한 컬럼 속성을 갖는다는 것은 복수의 데이터 객체가 상관된다는 것을 의미한다.
예를 들어, 학생 정보를 기록하고 있는 테이블인 [표 1]이 예로서 사용되는 경우, 데이터 객체 A에 대해, 속성 정보가 이름(Name), 학생 번호(ID), 성별(Sex), 및 반(department, Dept)과 같은 컬럼(Column) 속성을 포함한다.
[표 1]
Figure pct00001
학생 교과-변동(curricula-variable) 정보를 기록하고 있는 테이블인 [표 2]가 예로서 사용되는 경우, 데이터 객체 B에 대해, 속성 정보가 일련번호(No), 학생 번호(ID), 및 코스(course)와 같은 컬럼(Column) 속성을 포함한다.
[표 2]
Figure pct00002
[표 1]과 [표 2] 둘 다 ID 컬럼을 가지고 있다. 즉, [표 1]과 [표 2]는 동일한 컬럼 속성 ID를 가지고 있으며; 따라서, [표 1]과 [표 2]는 상관된 데이터 객체이다.
단계 S120에서, 데이터 저장 장치가 키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우 식별자의 포맷을 결정한다.
로우 식별자 포맷은 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치된다.
구체적으로, 본 발명의 실시예에서, 데이터 쿼리 효율을 향상시키기 위해, 각 데이터 객체가 독립된 테이블에 저장되지 않지만, 대신에, 복수의 데이터 객체가 통일된 포맷에 따라서 하나의 테이블에 저장되므로, 상관된 쿼리를 구현할 수 있다. 복수의 데이터 객체를 하나의 테이블에 저장하기 위해, 로우 식별자 포맷이 미리 설정되어야 하고, RowKey 포맷이 미리 설계되는 것이 예로서 사용된다. 즉, RowKey가 구성 요소들(composition elements)을 포함하고, 구성 요소들이 어떻게 결합되는지가 미리 규정된다. 본 실시예에서, 로우 식별자의 구성 요소는, 적어도 두 개의 객체의 동일한 컬럼 속성과 데이터 객체 식별자를 포함한다. 동일한 컬럼 속성은 적어도 두 개의 데이터 객체를 상관 방식으로 저장하는 데 사용되고, 데이터 객체 식별자는 데이터의 각 로우를 제공하는 데이터 객체를 지시하는 데 사용된다. 데이터 객체 식별자는 동일한 컬럼 속성 뒤에 위치되고, 데이터 객체 모두의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있게 된다. 구체적으로, 상이한 데이터 객체의 데이터 객체 식별자는 상이한 데이터 객체를 구별하기 위해 상이한 상수일 수 있다.
도 2에 도시된 바와 같이, 본 발명의 실시예에서, 선택적으로, 단계 S120은 다음의 단계를 포함한다.
단계 S121: 적어도 두 개의 데이터 객체에 대해 키값 유형 분포식 데이터베이스에서, 상수인 로우 식별자의 제1 프리픽스(prefix)를 특정한다.
단계 S122: 적어도 두 개의 데이터 객체에서 제1 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 및 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정한다. 이와 달리,
단계 S123: 적어도 두 개의 데이터 객체에서 제2 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 제2 데이터 객체의 데이터 객체 식별자, 및 제2 데이터 객체의 컬럼 속성에 있으면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정한다.
구체적으로, 본 실시예에서, 로우 식별자는 동일한 프리픽스(제1 프리픽스로 표현됨)를 포함한다. RowKey를 예로 사용하면, RowKey는 다음의 포맷에 해당된다:
RowKey = 제1 프리픽스 + 동일한 컬럼 속성 + 데이터 객체 식별자 (+ 기타 속성)
본 실시예에서, 상이한 데이터 객체에 대해, RowKey 포맷은 동일한 제1 프리픽스와 동일한 속성을 포함한다. 이와 같이, 데이터 기록이 RowKey 값의 순서로 저장되는 경우, 상이한 데이터 객체의 데이터 기록은 인접해서 저장될 수 있다(클러스터(cluster) 저장으로서 명명됨). 따라서, 상이한 데이터 객체들은 각 데이터 객체의 데이터 객체 식별자를 사용하여 구별된다. 또한, 동일한 컬럼 속성이 하나의 데이터 객체(제1 데이터 객체로서 표현됨)의 데이터 기록 모두를 구별할 수 있는 경우, 예를 들어, [표 1]에서의 ID 속성이 [표 1]의 데이터 기록 모두를 구별할 수 있는 경우, 제1 데이터 객체의 RowKey 포맷은 다른 속성을 포함하지 않는다. 동일한 속성이 하나의 데이터 객체(제2 데이터 객체로 표현됨)의 데이터 기록 모두를 구별할 수 없는 경우, 예를 들어, [표 2]에서의 ID 속성이 [표 2]의 데이터 기록 모두를 구별할 수 없는 경우, 제2 데이터 객체의 RowKey 포맷은, 예를 들어 [표 2]에서의 No 속성과 같이, 제2 데이터 객체의 다른 컬럼 속성에 있으면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 속성을 포함해야 한다.
[표 1]과 [표 2]를 예로서 사용하면, 동일한 컬럼 속성은 ID이다. [표 1]의 경우, ID는 [표 1]의 데이터 기록 모두를 구별할 수 있으며; 따라서, [표 1]의 RowKey 포맷은 다음과 같을 수 있다.
A(제1 프리픽스) + ID + M(M은 [표 1]에 대응하는 데이터 객체 식별자임)
[표 2]의 경우, ID는 [표 2]의 데이터 기록 모두를 구별할 수 없고, No가 [표 2]의 데이터 기록 모두를 구별할 수 있으며; 따라서, [표 2]의 RowKey 포맷은 다음과 같을 수 있다.
A(제1 프리픽스) + ID + N(N은 [표 2]에 대응하는 데이터 객체 식별자임) + No
본 발명의 실시예에서, 선택적으로, 로우 식별자 포맷 내의 필드(field)들 사이에 분리자(separator)가 설정되거나, 또는 필드들이 고정 길이를 갖는다.
즉, 전술한 RowKey 포맷에서 "+"가 분리자일 수 있다. 이와 달리, RowKey 포맷에서 필드들이 고정 길이를 갖도록 설정될 수 있으며; 이 경우, "+"는 실제로 존재하지 않는다.
단계 S130에서, 각 데이터 객체에 대해 결정된 로우 식별자 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정한다.
구체적으로, RowKey를 예로 사용하면, 데이터 저장 장치가 결정된 RowKey 포맷에 따라서 각 데이터 객체에서 각 데이터 기록의 RowKey 값을 결정한다.
예를 들어, 데이터 객체 A에서 제1 데이터 기록의 경우, RowKey 값은 A0001M이고; 데이터 객체 B에서 제1 데이터 기록의 경우, RowKey 값은 A0001N1이며, 이하 마찬가지로 적용된다.
단계 S140에서, 데이터 저장 장치가 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 키값 유형 분포식 데이터베이스에 저장한다.
각 데이터 기록의 로우 식별자 값이, 키값 유형 분포식 데이터베이스에서, 각 데이터 기록의 1차 인덱스로 사용된다.
본 발명의 실시예에서, 선택적으로, 도 3에 도시된 바와 같이, 본 방법(100)은 다음의 단계를 더 포함한다.
단계 S150: 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스트 테이블을 형성하도록, 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 데이터 기록 모두를 배열한다.
본 발명의 실시예에서, 복수의 데이터 객체의 데이터 기록이 클러스터 테이블을 형성하도록, 데이터 기록이 로우 식별자 값의 순서로 키값 유형 분포식 데이터베이스에 저장된다. 이러한 클러스터-테이블 저장 방식에서, 로우 식별자 값의 범위는 파티션(partition)에 대응할 수 있다. 즉, 데이터 기록의 로우 식별자 값이 범위에 속하는 경우, 그 데이터 기록은 이 범위에 해당하는 파티션에 있으며; 따라서, 범위에 따른 쿼리가 지원될 수 있다.
제1 순서는 사전식 순서(lexicographic order)일 수 있으며, 예를 들어, 데이터 기록 모두가 RowKey 값의 사전식 순서로 키값 유형 분포식 데이터베이스에서 배열될 수 있다. 제1 순서는 또한 다른 순서, 예를 들어, 크기 순서일 수 있다. 즉, 데이터 기록이 RowKey 값의 크기 순서로 순차적으로 저장될 수 있으며, 여기서 작은 RowKey값이 큰 RowKey 값 이전에 저장되거나, 또는 큰 RowKey 값이 작은 RowKey 값 이전에 저장된다. 제1 순서는 본 발명의 실시예에서 한정되지 않는다. 설명의 편의를 위해, 이하의 실시예에서는, RowKey 값의 사전식 순서를 예로 사용하여 설명된다.
[표 1]과 [표 1]를 예로 사용하는 경우, RowKey 값의 사전식 순서로 키값 유형 분포식 데이터베이스에서 저장이 수행되는 경우 테이블 [표 3]이 얻어진다.
[표 3]
Figure pct00003
(대각선을 포함하는 컬럼은 현재의 로우 데이터가 컬럼을 갖고 있지 않는 것을 지시하고, 이것은 저장시 어떠한 공간도 차지하지 않으며, 이하 동일하다)
본 발명의 실시예에 따른 데이터 저장 방법을 사용함으로써, 상이한 상관 데이이터 객체의 데이터 기록이 인접하여 저장됨으로써 클러스터 테이블을 형성할 수 있다. 예를 들어, [표 3]에서 첫 번째 기록 내지 네 번째 기록은 원래의 [표 2]에서 첫 번째 기록 내지 세 번째 기록이고, 이들 데이터 기록은 그들이 동일한 ID를 가지기 때문에 키값 유형 분포식 데이터베이스에서 인접하여 저장된다. 인접 저장에 의해, 데이터 액세스 속도가 향상될 수 있고, 쿼리 효율이 더욱 향상될 수 있다.
이하, 전술한 저장 방법에 따라서 획득되는 데이터 테이블을 쿼리하는 구현 방식에 대해 설명한다.
본 발명의 실시예에서, 선택적으로, 도 4에 도시된 바와 같이, 본 방법(100)은 다음의 단계를 더 포함한다.
단계 S160: 적어도 두 개의 데이터 객체에서 데이터 기록을 쿼리하거나 또는 획득하도록 지시하는 데이터 요청을 수신한다.
단계 S170: 로우 식별자 포맷에 따라서, 키값 유형 분포식 데이터베이스를 쿼리하기 위한 쿼리 정보를 구성하며, 여기서 쿼리 정보는 동일한 컬럼 속성을 포함한다.
단계 S180: 쿼리 정보에 따라서, 1차 인덱스가 쿼리 정보를 포함하는 데이터 기록을 키값 유형 분포식 데이터베이스로부터 내보낸다(export).
구체적으로, 데이터 기록을 쿼리하거나 또는 획득하기 위한 데이터 요청이 수신되는 경우, 데이터 저장 장치가 로우 식별자 포맷에 따라서, 동일한 컬럼 속성을 포함해야 하는 쿼리 정보를 구성하며, 그 후 데이터 저장 장치가 구성된 쿼리 정보를 사용하여 퀴리를 수행하여, 1차 인덱스가 키값 유형 분포식 데이터베이스에서 쿼리 정보를 포함하는 데이터 기록을 획득한다.
선택적으로, 로우 식별자 포맷이 제1 프리픽스를 포함하는 경우, 쿼리 정보가 제1 프리픽스 및 동일한 컬럼 속성을 포함한다.
예를 들어, 학생 정보와 학생 교과-변동 정보가 학생의 학생 번호(ID-0001)를 사용하여 획득되는 경우, 쿼리 정보: A0001이 구성될 수 있으며, 학생 번호(ID=0001)를 갖는 학생의 학생 정보와 학생 교과-변동 정보가 범위 쿼리에 의해 [표 3]에서 획득될 수 있다. 획득된 쿼리 결과가 테이블 [표 4]에 도시되어 있다. 쿼리 과정에서, 하나의 테이블만이 쿼리되어야 하고, 사용자 데이터 로케이팅(locating)이 한번에 완성되어야 한다. 학생 정보와 학생 교과-변동 정보가 인접하여 저장되기 때문에 고속의 리턴(return)이 구현될 수 있다.
[표 4]
Figure pct00004
따라서, 본 발명의 실시예에 따른 데이터 저장 방법에서, 상관 데이터 객체가 하나의 데이터 테이블에서 클러스터로서 저장될 수 있고, 상관 쿼리가 하나의 데이터 테이블에서 구현될 수 있도록, 상관 데이터 객체가 동일한 컬럼 속성을 포함하는 로우 식별자 포맷을 사용하여 키값 유형 분포식 데이터베이스에 저장됨으로써, 데이터 쿼리 효율이 향상될 수 있다.
본 발명의 실시예에서, 선택적으로, 본 방법(100)이 다음의 단계를 더 포함한다.
키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스(secondary index)의 포맷이 제2 프리픽스, 제2 속성, 및 동일한 컬럼 속성인 것으로 결정하며, 여기서 제2 속성은 임의의 데이터 객체의 컬럼 속성에 있는 컬럼 속성이고 동일한 속성과 상이하며, 제2 프리픽스는 제1 프리픽스와 상이한 상수이다.
임의의 데이터 객체의 2차 인덱스의 포맷에 따라서 임의의 데이터 객체의 2차 인덱스를 결정한다.
임의의 데이터 객체의 2차 인덱스를 키값 유형 분포식 데이터베이스에 저장한다. 구체적으로, 복잡한 쿼리의 시나리오를 만족시키기 위해, 2차-인덱스 정보가 데이터 객체를 위해 구성될 수 있다. 1차 인덱스의 데이터와 동일한 데이터 객체의 2차 인덱스가 동일한 테이블에 저장되지만, 상이한 로우 식별자 포맷이 사용되어, 동일한 테이블에서 데이터 분리를 구현할 수 있다. 또한, 상관된 쿼리가 2차-인덱스 정보를 사용하여 완성될 수 있다. 2차 인덱스의 로우 식별자 포맷은 제2 프리픽스, 제2 속성, 및 동일한 속성이다. 제2 프리픽스는 데이터 분리를 구현하기 위해 제1 프리픽스와 상이하고; 제2 속성은 제2 속성에 따라서 쿼리 정보의 구축이 가능하도록 동일한 속성과 상이한 속성이며; 동일한 속성은 1차 인덱스와 연관되어 사용된다.
예를 들어, 데이터 객체 [표 1]과 데이터 객체 [표 2]가 키값 유형 분포식 데이터베이스에 저장되는 경우, [표 1]의 1차-인덱스 로우키 포맷은 A + ID + M일 수 있고; [표 2]의 1차-인덱스 로우키 포맷은 A + ID + N + No일 수 있으며; [표 1]의 2차-인덱스 로우키 포맷은 B + Name + ID일 수 있다. 이렇게 하여, 로우키 값의 사전식 순서로 키값 유형 분포식 데이터베이스에서 저장이 수행되는 경우 테이블 [표 5]가 얻어진다.
[표 5]
Figure pct00005
2차-인덱스 로우키에 대응하는 컬럼에서, 특정의 중요한 컬럼 정보 조각과 같은 컬럼 정보가 또한 저장될 수 있으며, 이것은 본 발명의 실시예에서 한정되지 않는다.
학생 정보와 학생 교과-변동 정보가 학생 이름(Name = Zhang San)을 사용하여 획득되는 경우, 쿼리 정보: BZhang San이 구축될 수 있으며, 완전한 2차-인덱스 로우키 정보: Bzhang San0001이 범위 쿼리에 의해 [표 5]에서 획득될 수 있다. 2차-인덱스 로우키가 파싱되어 ID = 0001이 획득된다. 그 후, 쿼리 정보: A0001가 추가로 구성되고, 학생 정보와 학생 교과-변동 정보가 추가 쿼리를 수행하여 [표 5]에서 획득될 수 있다. 이로 인해 사용자가 이름만 알고 ID를 모르는 경우에도 쿼리를 수행할 수가 있다.
따라서, 본 발명의 실시예에 따른 데이터 저장 방법에서, 데이터 객체의 2차 인덱스가 키값 유형 분포식 데이터베이스에 저장되어, 보다 다양한 쿼리 시나리오가 사용자에게 제공될 수 있으며, 사용자에 의한 쿼리가 가능하게 되어, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에서, 복수의 데이터 객체의 로우 식별자 포맷이 또한 다른 방식으로 구현될 수 있다. 예를 들어, 상이한 데이터 객체들의 로우 식별자 포맷이 상이한 프리픽스들을 포함할 수 있거나, 또는 프리픽스를 포함하지 않을 수 있다.
예를 들어, 프리픽스가 사용되지 않는 경우, 로우키는 다음의 포맷을 갖는다:
RowKey = 동일한 컬럼 속성 + 데이터 객체 식별자(+ 기타 속성)
상이한 데이터 객체의 데이터 기록은 동일한 컬럼 속성을 사용하여 인접하게 저장될 수 있으며, 상이한 데이터 객체는 각 데이터 객체에 대응하는 데이터 객체 식별자를 사용하여 구별된다. 또한, 동일한 컬럼 속성이 데이터 객체(제1 데이터 객체로 표현됨)의 데이터 기록 모두를 구별할 수 있는 경우, 제1 데이터 객체의 로우키 포맷은 다른 속성을 포함하지 않으며; 동일한 컬럼 속성이 데이터 객체(제2 데이터 객체로 표현됨)의 데이터 기록 모두를 구별할 수 없는 경우, 제2 데이터 객체의 로우키 포맷은 제2 데이터 객체의 다른 컬럼 속성이면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 속성을 더 포함해야 한다.
[표 1]과 [표 2]를 예로서 사용하면, 그들의 동일한 컬럼 속성은 ID이다. [표 1]의 경우, ID가 [표 1]의 데이터 기록 모두를 구별할 수 있으므로; 따라서, [표 1]의 로우키 포맷은
ID + M일 수 있다.
[표 2]의 경우, ID가 [표 2]의 데이터 기록 모두를 구별할 수 없고, No가 [표 2]의 데이터 기록 모두를 구별할 수 있으므로; 따라서, [표 2]의 로우키 포맷은
ID + N + No일 수 있다.
이렇게 하여, 로우키 값의 사전식 순서로 키값 유형 분포식 데이터베이스에서 저장이 수행되는 경우 테이블 [표 6]이 얻어진다.
[표 6]
Figure pct00006
학생 정보와 학생 교과-변동 정보가 학생의 학생 번호(ID = 0001)를 사용하여 획득되는 경우, 쿼리 정보: 0001이 구축될 수 있으며, 학생 번호(ID = 0001)을갖는 학생의 학생 정보와 학생 교과-변동 정보가 범위 쿼리에 의해 획득될 수 있다. 쿼리 과정 중에, 하나의 테이블만이 쿼리되어야 하며, 사용자 데이터 로케이팅은 단지 한 번에 완료되어야 한다. 학생 정보와 학생 교과-변동 정보가 인접하여 저장되기 때문에 빠른 리턴(return)이 구현될 수 있다.
상이한 프리픽스가 상이한 데이터 객체에 대해 사용되는 경우, 로우키는 다음의 포맷을 갖는다:
RowKey = (데이터 객체에 대응하는 프리픽스) + 동일한 컬럼 속성 (+ 기타 속성)
상이한 프리픽스가 상이한 데이터 객체에 대해 사용되는 경우, 상이한 데이터 객체가 상이한 파티션에 저장되도록 구현된다. 또한, 동일한 컬럼 속성이 데이터 객체(제1 데이터 객체로 표현됨)의 데이터 기록 모두를 구별할 수 있는 경우, 제1 데이터 객체의 로우키 포맷은 다른 속성을 포함하지 않으며; 동일한 컬럼 속성이 데이터 객체(제2 데이터 객체로 표현됨)의 데이터 기록 모두를 구별할 수 없는 경우, 제2 데이터 객체의 로우키 포맷은 제2 데이터 객체의 다른 컬럼 속성이면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 속성을 더 포함해야 한다.
[표 1]과 [표 2]를 예로서 사용하면, 그들의 동일한 컬럼 속성은 ID이다. [표 1]의 경우, ID가 [표 1]의 데이터 기록 모두를 구별할 수 있으므로; 따라서, [표 1]의 로우키 포맷은
A + ID일 수 있다.
[표 2]의 경우, ID가 [표 2]의 데이터 기록 모두를 구별할 수 없고, No가 [표 2]의 데이터 기록 모두를 확인할 수 있으므로; 따라서, [표 2]의 로우키 포맷은
B + ID + No일 수 있다.
이렇게 하여, 로우키 값의 사전식 순서로 키값 유형 분포식 데이터베이스에서 저장이 수행되는 경우 테이블 [표 7]이 얻어진다.
[표 7]
Figure pct00007
상이한 데이터 객체가 키값 유형 분포식 데이터베이스에서 상이한 파티션에 저장될 수 있도록, 상이한 데이터 객체의 로우키 포맷이 상이한 프리픽스를 포함한다.
전술한 과정의 일련 번호는 본 발명의 다양한 실시예에서의 실행 순서를 의미하는 것이 아니라는 점이 이해되어야 한다. 상기 과정의 실행 순서는 해당 과정의 기능과 내부 로직에 따라서 결정되어야 하고, 본 발명의 실시예의 구현 과정에 대해 어떠한 제한사항으로 작용해서도 안된다.
본 발명의 실시예에 따른 데이터 저장 방법에서, 복수의 데이터 객체가 동일한 로우 식별자 포맷에 따라서 키값 유형 분포식 데이터 베이스 내의 하나의 데이터 테이블에 저장되므로, 데이터베이스에 대한 관리가 용이해지며, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에 따른 데이터 저장 방법이 상기에서 상세하게 설명되었으며, 본 발명의 실시예에 따른 데이터 저장 장치가 하기에서 설명된다.
도 5는 본 발명의 실시예에 따른 데이터 저장 장치(500)의 개략적인 블록 구성도이다. 도 5에 도시된 바와 같이, 장치(500)는,
키값 유형 분포식 데이터베이스에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하고; 키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 각각의 로우 식별자 포맷을 결정하며; 각 데이터 객체에 대해 결정된 로우 식별자 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하도록 구성되는 결정 모듈(510) - 여기서 로우 식별자 포맷은 동일한 컬럼 속성 및 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치함-; 및
키값 유형 분포식 데이터베이스에 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 저장하도록 구성되는 저장 모듈(520) - 여기서 각 데이터 기록의 로우 식별자 값은 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스로 사용됨 -을 포함한다.
복수의(즉, 적어도 두 개의) 데이터 객체가 상관되는 경우, 즉, 복수의 데이터 객체가 복수의 데이터 객체에 대해 상관된 쿼리를 이용할 수 있도록 동일한 컬럼 속성을 갖는 경우, 데이터 저장 장치(500)는 키값 유형 분포식 데이터베이스의 하나의 테이블에 복수의 데이터 객체를 저장한다. 결정 모듈(510)은, 동일한 컬럼 속성에 기초하여, 키값 유형 분포식 데이터베이스에서, 각 데이터 객체의 로우 식별자의 포맷(예를 들어, 로우키)을 결정하며, 여기서 로우 식별자 포맷은 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치한다. 즉, 데이터 객체 모두의 로우 식별자 포맷은 쿼리를 가능하게 하기 위해 동일한 컬럼 속성을 포함하며, 상이한 데이터 객체를 구별하기 위해 데이터 객체에 대응하는 데이터 객체 식별자를 더 포함한다. 상이한 데이터 객체의 로우 식별자 포맷이 일관된 구조를 가지도록, 상이한 데이터 객체의 데이터 객체 식별자가 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치된다. 그 후, 결정 모듈(510)은 결정된 로우 식별자 포맷에 따라서 각 데이터 객체에서 각 데이터 기록의 로우 식별자 값을 결정한다. 저장 모듈(520)은 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 키값 유형 분포식 데이터베이스에 저장하며, 여기서 각 데이터 기록의 로우 식별자 값은 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스로 사용된다. 일관된 로우 식별자 포맷이 복수의 상관된 데이터 객체에 대해 사용되기 때문에, 데이터 쿼리 중에, 쿼리 정보가 로우 식별자 포맷에 따라서 구축되어, 상관된 쿼리가 하나의 데이터 테이블에서 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율을 향상시킬 수가 있다.
따라서, 본 발명의 실시예에 따른 데이터 저장 장치에서, 상관된 데이터 객체가 동일한 컬럼 속성을 포함하는 복수의 데이터 객체 포맷을 사용하여 키값 유형 분포식 데이터베이스에 저장되어, 상관된 쿼리가 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에서, 선택적으로, 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스터 테이블을 형성하도록, 저장 모듈(520)이 데이터 기록 모두의 로우 식별자에 대해, 제1 순서로 데이터 기록 모두를 배열하도록 추가로 구성된다.
본 발명의 실시예에서, 선택적으로, 제1 순서는 사전식 순서이다.
본 발명의 실시예에서, 선택적으로, 결정 모듈(510)은 적어도 두 개의 데이터 객체에 대해 키값 유형 분포식 데이터베이스에서, 상수인 로우 식별자의 제1 프리픽스를 특정하고; 적어도 두 개의 데이터 객체에서 제1 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 및 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나; 또는, 적어도 두 개의 데이터 객체에서 제2 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 제2 데이터 객체의 데이터 객체 식별자, 및 제2 데이터 객체의 컬럼 속성에 있으면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정하도록 구체적으로 구성된다.
본 발명의 실시예에서, 선택적으로, 도 6에 도시된 바와 같이, 장치(500)는,
적어도 두 개의 객체에서 데이터 기록을 쿼리하거나 또는 획득하도록 지시하는 데이터 요청을 수신하도록 구성되는 수신 모듈(530); 및
로우 식별자 포맷에 따라서, 키값 유형 분포식 데이터베이스를 쿼리하기 위한 쿼리 정보를 구축하고; 쿼리 정보에 따라서, 1차 인덱스가 쿼리 정보를 포함하는 데이터 기록을 키값 유형 분포식 데이터베이스로부터 내보내도록 구성되는 쿼리 모듈(540) - 여기서 쿼리 정보는 동일한 컬럼 속성을 포함함 -을 더 포함한다.
선택적으로, 로우 식별자 포맷이 제1 프리픽스를 포함하는 경우, 쿼리 정보는 제1 프리픽스 및 동일한 컬럼 속성을 포함한다.
본 발명의 실시예에서, 선택적으로, 결정 모듈(510)은 키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스의 포맷이 제2 프리픽스, 제2 속성, 및 동일한 컬럼 속성인 것으로 결정하고; 임의의 데이터 객체의 2차 인덱스의 포맷에 따라서 임의의 데이터 객체의 2차 인덱스를 결정하도록 추가로 구성되며, 여기서 제2 속성은 임의의 데이터 객체의 컬럼 속성에 있는 컬럼 속성이고 동일한 속성과 상이하며, 제2 프리픽스가 제1 프리픽스와 상이하고,
저장 모듈(520)은 키값 유형 분포식 데이터베이스에서 임의의 데이터 객체의 2차 인덱스를 저장하도록 추가로 구성된다.
본 발명의 실시예에 따른 데이터 저장 장치에서, 데이터 객체의 2차 인덱스가 키값 유형 분포식 데이터베이스에 저장되어, 보다 다양한 쿼리 시나리오가 사용자에게 제공될 수 있으며, 사용자에 의한 쿼리가 가능하게 되어, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에서, 선택적으로, 로우 식별자 포맷 내의 필드들 사이에 분리자가 설정되거나, 또는 필드들이 고정 길이를 갖는다.
본 발명의 실시예에 따른 데이터 저장 장치(500)는 전술한 본 발명의 실시예에 따른 방법에서의 데이터 저장 장치에 대응될 수 있으며, 데이터 저장 장치(500)의 모듈들의 전술한 동작 미 기타 동작들 및/또는 기능들이 도 1 내지 도 4에서의 방법의 대응되는 절차를 구현하기 위해 별개로 수행된다. 간략히 하기 위해 상세한 설명은 여기에서 중복되지 않는다.
본 발명의 실시예에 따른 데이터 저장 장치서, 복수의 데이터 객체가 동일한 로우 식별자 포맷에 따라서 키값 유형 분포식 데이터 베이스 내에서 하나의 데이터 테이블에 저장되므로, 데이터베이스에 대한 관리가 용이해지며, 데이터 쿼리 효율을 향상시킬 수 있다.
도 7은 본 발명의 다른 실시예에 따른 데이터 저장 장치의 구조를 도시하며, 본 발명의 다른 실시예에 따른 데이터 저장 장치는, 적어도 하나의 프로세서(702)(예를 들어, CPU), 적어도 하나의 네트워크 인터페이스(705) 또는 기타 통신 인터페이스, 메모리(706), 및 이들 장치들 사이의 연결 및 통신을 구현하도록 구성되는 적어도 하나의 통신 버스(703)를 포함한다. 프로세서(702)는 메모리(706)에 저장된, 컴퓨터 프로그램과 같은 실행 모듈을 실행하도록 구성된다. 메모리(706)는 고속의 랜덤 액세스 메모리(Random Access Memory, RAM)를 포함하며, 예를 들어, 적어도 하나의 자기 디스크 스토리지와 같은, 비휘발성 메모리(non-volatile memory)를 더 포함할 수 있다. 적어도 다른 네트워크 엘리먼트와의 통신 및 연결은 (유선 또는 무선일 수 있는) 적어도 하나의 네트워크 인터페이스(705)를 사용하여 구현된다.
일부 구현 방식으로, 메모리(706)가 프로세서(702)에 의해 실행될 수 있는 프로그램(7061)을 저장하고, 이 프로그램이,
키값 유형 분포식 데이터베이스에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하는 과정;
키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 내에서 각 데이터 객체의 로우 식별자의 포맷을 결정하는 과정 - 여기서 로우 식별자 포맷은 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자는 로우 식별자 포맷에서 동일한 위치에 있으며 동일한 컬럼 속성 뒤에 위치함 -;
각 데이터 객체에 대해 결정된 로우 식별자 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하는 과정; 및
키값 유형 분포식 데이터베이스에 각 데이터 기록의 로우 식별자 값과 각 데이터 기록을 저장하는 과정을 포함하며,
각 데이터 기록의 로우 식별자 값은 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스로서 사용된다.
선택적으로, 프로그램은,
적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스터 테이블을 형성하도록, 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 데이터 기록 모두룰 저장하는 과정을 추가로 포함한다.
선택적으로, 제1 순서는 사전식 순서이다.
선택적으로, 프로그램은,
적어도 두 개의 객체에서 데이터 기록을 쿼리하거나 또는 획득하도록 지시하는 데이터 요청을 수신하는 과정;
로우 식별자 포맷에 따라서, 키값 유형 분포식 데이터베이스를 쿼리하기 위한, 동일한 컬럼 속성을 포함하는 쿼리 정보를 구축하는 과정; 및
쿼리 정보에 따라서, 1차 인덱스가 쿼리 정보를 포함하는 데이터 기록을 키값 유형 분포식 데이터베이스로부터 내보내는 과정을 추가로 포함한다.
선택적으로, 키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 내에서 각 데이터 객체의 로우 식별자의 포맷을 결정하는 과정이,
키값 유형 분포식 데이터베이스에서 적어도 두 개의 데이터 객체에 대해 상수인 로우 식별자의 제1 프리픽스를 특정하는 과정; 및
적어도 두 개의 데이터 객체에서 제1 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 및 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나, 또는,
적어도 두 개의 데이터 객체에서 제2 데이터 객체의 로우 식별자 포맷이 제1 프리픽스, 동일한 컬럼 속성, 제2 데이터 객체의 데이터 객체 식별자, 및 제2 데이터 객체의 컬럼 속성에 있으면서 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정하는 과정을 포함한다.
선택적으로, 쿼리 정보는 제1 프리픽스 및 동일한 컬럼 속성을 포함한다.
선택적으로, 프로그램은,
키값 유형 분포식 데이터베이스에서, 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스의 포맷이 제2 프리픽스, 제2 속성, 및 동일한 컬럼 속성인 것으로 결정하는 과정 - 여기서 제2 속성은 임의의 데이터 객체의 컬럼 속성에 있는 컬럼 속성이고 동일한 속성과 상이하며, 제2 프리픽스가 제1 프리픽스와 상이ㅎ함 -;
임의의 데이터 객체의 2차 인덱스의 포맷에 따라서 임의의 데이터 객체의 2차 인덱스를 결정하는 과정; 및
키값 유형 분포식 데이터베이스에서 임의의 데이터 객체의 2차 인덱스를 저장하는 과정을 추가로 포함한다.
선택적으로, 로우 식별자 포맷 내의 필드들 사이에 분리자가 설정되거나, 또는 필드들이 고정 길이를 갖는다.
본 발명의 실시예에서 제공된 전술한 기술적 해결수단으로부터, 본 발명의 실시예에서, 상관된 데이터 객체가 동일한 컬럼 속성을 포함하는 복수의 데이터 객체 포맷을 사용하여 키값 유형 분포식 데이터베이스에 저장되어, 상관된 쿼리가 복수의 데이터 객체에 대해 구현될 수 있으므로, 데이터 쿼리 효율을 향상시킬 수 있다.
본 발명의 실시예에서 용어 "및/또는"은 상관된 객체의 관계만을 설명하며 세 가지 관계가 존재하는 것을 나타내는 것이 이해되어야 한다. A 및/또는 B는 A만이 존재하거나, A와 B 둘 다 존재하거나, B만이 존재하는, 세 개의경우를 나타낸다. 또한, 본 명세서에서 문자 "/"는 통상적으로 상관된 객체들 사이의 "또는"의 관계를 지시한다.
통상의 기술자라면, 본 명세서에서 개시된 실시예에 기술된 예시들을 조합에 있어서, 유닛과 알고리즘 단계가 전자 하드웨어 또는 컴퓨터 소프트웨어, 또는 이들의 조합에 의해 구현될 수 있다는 것을 잘 알 것이다. 하드웨어와 소프트웨어 사이의 교체 가능성을 명확하게 설명하기 위해, 전술한 내용이 통상적으로 기능에 따라서 설명된 조합과 각 예의 단계를 갖는다. 기능들이 하드웨어에 의해 수행되는지 소프트웨어에 의해 수행되는지는 기술적 해결수단의 구체적인 적용 및 설계 제약 조건에 따라 결정된다. 통상의 기술자라면, 상술한 기능을 각각의 구체적인 적용을 위해 상이한 방법을 사용하여 구현할 수 있지만, 그 또한 본 발명의 보호 범위를 벗어난 것으로 취급되지 않는다.
통상의 기술자라면, 간편하게 기술하기 위한 목적으로, 전술한 시스템, 장치 및 유닛의 구체적인 작동 프로세스에 대해, 전술한 방법 실시예에서의 대응하는 프로세스를 참조하고 상세한 반복 설명은 생략되었다는 것을 이해할 것이다.
본 출원에서 제공된 여러 실시예에서, 개시된 시스템, 장치 및 방법은 다른 방식으로 구현될 수 있다. 예컨대, 기술된 장치 실시예는 단지 예시적이다. 예컨대, 유닛 분할은 단지 논리적 기능 분할이며 실제 구현에서는 다르게 나누어질 수 있다. 예컨대, 복수의 유닛 또는 컴포넌트는 다른 하나의 시스템으로 결합되거나 통합될 수 있고, 또는 일부 특징은 무시되거나 또는 수행되지 않을 수도 있다. 또한, 표시되거나 설명된 상호 간의 연결 또는 직접 연결 또는 통신 연결은 임의의 인터페이스를 통해 구현될 수 있다. 장치 또는 유닛 간의 간접적인 연결 또는 통신 연결은 전자, 기계 또는 다른 형태로 구현될 수 있다.
별개의 부분으로 설명된 유닛은 물리적으로 독립된 것이거나, 물리적으로 독립되지 않은 것일 수 있고, 유닛으로 도시된 부분이 물리적 유닛일 수 있거나 물리적 유닛이 아닐 수 있거나, 또는 한 곳에 위치될 수 있거나, 복수의 네트워크 유닛 상에 분배되어 있을 수 있다. 일부 또는 모든 유닛은, 실시예의 해결수단의 목적을 달성하기 위해 실제 요건에 따라 선택될 수 있다.
또한, 본 발명의 실시예에서의 기능적 유닛은 하나의 처리 유닛으로 통합될 수도 있고, 또는 각 유닛이 물리적으로 독립하여 존재할 수도 있으며, 또는 둘 이상의 유닛이 하나의 유닛으로 통합될 수도 있다. 통합된 유닛은 하드웨어의 형태로 구현될 수 있거나, 또는 소프트웨어 기능 유닛의 형태로 구현될 수 있다.
통합된 유닛이 소프트웨어 기능 유닛의 형태로 구현되고 독립된 제품으로 판매되거나 사용되는 경우, 그 통합된 유닛은 컴퓨터에 의해 판독 가능한 저장 매체에 저장될 수 있다. 그러한 사상에 기초하는 경우, 본 발명의 기술적 해결수단은 필수적으로, 또는 종래 기술에 기여하는 부분 또는 그 기술적 해결수단 모두 또는 일부는 소프트웨어 제품의 형태로 구현될 수 있다. 소프트웨어 제품은 저장 매체에 저장되고, 컴퓨터 장치(개인용 컴퓨터, 서버, 또는 네트워크 장치)로 하여금 본 발명의 실시예에서 기술된 방법의 일부 또는 모든 단계를 수행하도록 하는 명령어를 포함한다. 전술한 저장 매체는, USB 플래시 드라이브, 탈착 가능한 하드 디스크, ROM(Read-Only Memory), RAM(Random Access Memory), 자기 디스크 또는 광 디스크와 같은, 프로그램 코드를 저장할 수 있으면 어떤 매체라도 좋다.
전술한 설명은 단지 본 발명의 구체적인 실시예일 뿐이며, 본 발명의 보호 범위를 제한하기 위한 것이 아니다. 통상의 기술자가 본 발명에서 개시된 기술적 범위 내에서 생각해 낼 수 있는 변형 또는 대체는 모두 본 발명의 보호 범위 내에 속한다. 따라서, 본 발명의 보호 범위는 청구범위의 보호 범위에 의해 결정되어야 한다.

Claims (18)

  1. 데이터 저장 방법으로서,
    키값 유형 분포식 데이터베이스(KeyValue type distributed database)에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하는 단계;
    상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하는 단계 - 상기 로우 식별자의 포맷이 상기 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 상기 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자가 상기 로우 식별자의 포맷에서 동일한 위치에 있으며 상기 동일한 컬럼 속성 뒤에 위치함 -;
    각 데이터 객체에 대해 결정된 상기 로우 식별자의 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하는 단계; 및
    각 데이터 기록의 상기 로우 식별자 값과 각 데이터 기록을 상기 키값 유형 분포식 데이터베이스에 저장하는 단계
    를 포함하며,
    각 데이터 기록의 상기 로우 식별자 값이, 상기 키값 유형 분포식 데이터베이스에서, 각 데이터 기록의 1차 인덱스(primary index)로서 사용되는,
    데이터 저장 방법.
  2. 제1항에 있어서,
    상기 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스트 테이블(cluster table)을 형성하도록, 상기 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 상기 데이터 기록 모두를 배열하는 단계
    를 더 포함하는 데이터 저장 방법.
  3. 제2항에 있어서,
    상기 제1 순서가 사전식 순서(lexicographic order)인,
    데이터 저장 방법.
  4. 제1항 내지 제3항 중 어느 한 항에 있어서,
    상기 적어도 두 개의 데이터 객체에서 데이터 기록을 쿼리(query)하거나 또는 획득하도록 지시하는 데이터 요청을 수신하는 단계;
    상기 로우 식별자의 포맷에 따라서, 상기 키값 유형 분포식 데이터베이스를 쿼리하기 위한, 상기 동일한 컬럼 속성을 포함하는 쿼리 정보를 구성하는 단계; 및
    상기 쿼리 정보에 따라서, 1차 인덱스(primary index)가 상기 쿼리 정보를 포함하는 데이터 기록을 상기 키값 유형 분포식 데이터베이스로부터 내보내는(export) 단계
    를 더 포함하는 데이터 저장 방법.
  5. 제1항 내지 제4항 중 어느 한 항에 있어서,
    상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우 식별자의 포맷을 결정하는 단계가,
    상기 적어도 두 개의 데이터 객체에 대해 상기 키값 유형 분포식 데이터베이스에서 상기 로우 식별자의 제1 프리픽스(prefix)를 특정하는 단계 - 상기 제1 프리픽스는 상수임 -; 및
    상기 적어도 두 개의 데이터 객체 중 제1 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 및 상기 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나, 또는,
    상기 적어도 두 개의 데이터 객체 중 제2 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 상기 제2 데이터 객체의 데이터 객체 식별자, 및 상기 제2 데이터 객체의 컬럼 속성에 있으면서 상기 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정하는 단계
    를 포함하는, 데이터 저장 방법.
  6. 제5항에 있어서,
    상기 쿼리 정보가 상기 제1 프리픽스와 상기 동일한 컬럼 속성을 포함하는,
    데이터 저장 방법.
  7. 제5항 또는 제6항에 있어서,
    상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스(secondary index)의 포맷이 제2 프리픽스, 제2 속성, 및 상기 동일한 컬럼 속성인 것으로 결정하는 단계 - 상기 제2 속성은 상기 임의의 데이터 객체의 컬럼 속성에 있으면서 상기 동일한 속성과 상이한 컬럼 속성이고, 상기 제2 프리픽스는 상기 제1 프리픽스와 상이한 상수임 -;
    상기 임의의 데이터 객체의 상기 2차 인덱스의 포맷에 따라서 상기 임의의 데이터 객체의 상기 2차 인덱스를 결정하는 단계; 및
    상기 키값 유형 분포식 데이터베이스에 상기 임의의 데이터 객체의 상기 2차 인덱스를 저장하는 단계
    를 더 포함하는 데이터 저장 방법.
  8. 제1항 내지 제7항 중 어느 한 항에 있어서,
    상기 로우 식별자의 포맷 내의 필드(field)들 사이에 분리자(separator)가 설정되거나, 또는 상기 필드들이 고정 길이를 갖는,
    데이터 저장 방법.
  9. 데이터 저장 장치로서,
    상기 키값 유형 분포식 데이터베이스(KeyValue type distributed database)에 저장될 적어도 두 개의 데이터 객체의 동일한 컬럼 속성을 결정하고; 상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에서 각 데이터 객체의 로우(row) 식별자의 포맷을 결정하며; 각 데이터 객체에 대해 결정된 상기 로우 식별자의 포맷에 따라서 각 데이터 객체의 각 데이터 기록의 로우 식별자 값을 결정하도록 구성되는 결정 모듈 - 상기 로우 식별자의 포맷이 상기 동일한 컬럼 속성과 데이터 객체 식별자를 포함하고, 상기 적어도 두 개의 데이터 객체에서 상이한 데이터 객체의 데이터 객체 식별자가 상기 로우 식별자의 포맷에서 동일한 위치에 있으며 상기 동일한 컬럼 속성 뒤에 위치함 -; 및
    각 데이터 기록의 상기 로우 식별자 값과 상기 각 데이터 기록을 상기 키값 유형 분포식 데이터베이스에 저장하도록 구성되는 저장 모듈
    을 포함하며,
    각 데이터 기록의 상기 로우 식별자 값이 상기 키값 유형 분포식 데이터베이스에서 각 데이터 기록의 1차 인덱스(primary index)로서 사용되는,
    데이터 저장 장치.
  10. 제9항에 있어서,
    상기 저장 모듈이 상기 적어도 두 개의 데이터 객체의 데이터 기록 모두가 클러스트 테이블(cluster table)을 형성하도록, 상기 데이터 기록 모두의 로우 식별자 값에 대해, 제1 순서로 상기 데이터 기록 모두를 배열하도록 추가로 구성되는,
    데이터 저장 장치.
  11. 제10항에 있어서,
    상기 제1 순서가 사전식 순서(lexicographic order)인,
    데이터 저장 장치.
  12. 제9항 내지 제11항 중 어느 한 항에 있어서,
    상기 적어도 두 개의 데이터 객체에서 데이터 기록을 쿼리(query)하거나 또는 획득하도록 지시하는 데이터 요청을 수신하도록 구성되는 수신 모듈; 및
    상기 로우 식별자의 포맷에 따라서, 상기 키값 유형 분포식 데이터베이스를 쿼리하기 위한, 상기 동일한 컬럼 속성을 포함하는 쿼리 정보를 구성하고, 상기 쿼리 정보에 따라서, 1차 인덱스(primary index)가 상기 쿼리 정보를 포함하는 데이터 기록을 상기 키값 유형 분포식 데이터베이스로부터 내보내는(export)도록 구성되는 쿼리 모듈
    을 더 포함하는 데이터 저장 장치.
  13. 제9항 내지 제12항 중 어느 한 항에 있어서,
    상기 결정 모듈이, 구체적으로,
    상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체에 대해, 상기 로우 식별자의 제1 프리픽스(prefix)를 특정하고,
    상기 적어도 두 개의 데이터 객체 중 제1 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 및 상기 제1 데이터 객체의 데이터 객체 식별자를 포함하는 것으로 결정하거나, 또는, 상기 적어도 두 개의 데이터 객체 중 제2 데이터 객체의 로우 식별자의 포맷이 상기 제1 프리픽스, 상기 동일한 컬럼 속성, 상기 제2 데이터 객체의 데이터 객체 식별자, 및 상기 제2 데이터 객체의 컬럼 속성에 있으면서 상기 제2 데이터 객체의 데이터 기록 모두를 구별할 수 있는 컬럼 속성을 포함하는 것으로 결정하도록 구성되고,
    상기 제1 프리픽스는 상수인, 데이터 저장 장치.
  14. 제13항에 있어서,
    상기 쿼리 정보가 상기 제1 프리픽스와 상기 동일한 컬럼 속성을 포함하는,
    데이터 저장 장치.
  15. 제13항 또는 제14항에 있어서,
    상기 결정 모듈이,
    상기 키값 유형 분포식 데이터베이스에서, 상기 적어도 두 개의 데이터 객체 중 임의의 데이터 객체의 2차 인덱스(secondary index)의 포맷이 제2 프리픽스, 제2 속성, 및 상기 동일한 컬럼 속성인 것으로 결정하고, 상기 임의의 데이터 객체의 상기 2차 인덱스의 포맷에 따라서 상기 임의의 데이터 객체의 상기 2차 인덱스를 결정하도록 추가로 구성되며,
    상기 저장 모듈이 상기 키값 유형 분포식 데이터베이스에서 상기 임의의 데이터 객체의 상기 2차 인덱스를 저장하도록 추가로 구성되고,
    상기 제2 속성은 상기 임의의 데이터 객체의 컬럼 속성에 있으면서 상기 동일한 속성과 상이한 컬럼 속성이고, 상기 제2 프리픽스는 상기 제1 프리픽스와 상이한 상수인,
    데이터 저장 장치.
  16. 제9항 내지 제15항 중 어느 한 항에 있어서,
    상기 로우 식별자의 포맷 내의 필드(field)들 사이에 분리자(separator)가 설정되거나, 또는 상기 필드들이 고정 길이를 갖는,
    데이터 저장 장치.
  17. 컴퓨터로서,
    프로세서, 메모리, 버스, 및 통신 인터페이스를 포함하고,
    상기 메모리가 컴퓨터 실행 명령을 저장하도록 구성되며,
    상기 프로세서 및 상기 메모리가 상기 버스를 사용하여 연결되고,
    상기 컴퓨터가 운용되는 경우, 상기 컴퓨터가 제1항 내지 제8항 중 어느 한 항에 따른 상기 방법을 실행하도록, 상기 프로세서가 상기 메모리에 저장된 상기 컴퓨터 실행 명령을 실행하는,
    컴퓨터.
  18. 컴퓨터 판독 가능 매체로서,
    컴퓨터 실행 명령을 포함하고,
    컴퓨터의 프로세서가 상기 컴퓨터 실행 명령을 실행하는 경우, 상기 컴퓨터가 제1항 내지 제8항 중 어느 한 항에 따른 상기 방법을 실행하는,
    컴퓨터 판독 가능 매체.
KR1020167005763A 2013-08-29 2013-08-29 데이터를 저장하기 위한 방법 및 장치 KR101720602B1 (ko)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/CN2013/082544 WO2015027425A1 (zh) 2013-08-29 2013-08-29 存储数据的方法和装置

Publications (2)

Publication Number Publication Date
KR20160040282A true KR20160040282A (ko) 2016-04-12
KR101720602B1 KR101720602B1 (ko) 2017-03-29

Family

ID=50363919

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020167005763A KR101720602B1 (ko) 2013-08-29 2013-08-29 데이터를 저장하기 위한 방법 및 장치

Country Status (8)

Country Link
US (2) US9589004B2 (ko)
EP (1) EP3023885B1 (ko)
JP (1) JP6225261B2 (ko)
KR (1) KR101720602B1 (ko)
CN (2) CN106649708A (ko)
BR (1) BR112016004490B8 (ko)
CA (1) CA2921616C (ko)
WO (1) WO2015027425A1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104789A (ko) * 2019-02-27 2020-09-04 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 저장 및 조회 방법, 장치, 기기 및 매체

Families Citing this family (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3023885B1 (en) * 2013-08-29 2019-10-30 Huawei Technologies Co., Ltd. Method and device for storing data
CN105095268A (zh) * 2014-05-12 2015-11-25 深圳市同洲电子股份有限公司 结构化数据的存取方法以及装置
CN104021161B (zh) * 2014-05-27 2018-06-15 华为技术有限公司 一种聚簇存储方法及装置
CN104102711B (zh) * 2014-07-15 2017-12-01 中国联合网络通信集团有限公司 一种HBase数据库存储上网记录的方法和系统
US10671594B2 (en) 2014-09-17 2020-06-02 Futurewei Technologies, Inc. Statement based migration for adaptively building and updating a column store database from a row store database based on query demands using disparate database systems
US9836507B2 (en) * 2014-09-17 2017-12-05 Futurewei Technologies, Inc. Method and system for adaptively building a column store database from a temporal row store database based on query demands
CN104408150A (zh) * 2014-12-03 2015-03-11 天津南大通用数据技术股份有限公司 一种适应多种数据库数据格式的数据导入导出方法及装置
CN106326305A (zh) * 2015-06-30 2017-01-11 星环信息科技(上海)有限公司 一种数据文件的存储和查询方法及设备
CN105354255B (zh) * 2015-10-21 2018-01-02 华为技术有限公司 数据查询方法和装置
CN105630934A (zh) * 2015-12-23 2016-06-01 浪潮电子信息产业股份有限公司 一种数据统计方法及系统
CN105653611B (zh) * 2015-12-24 2019-08-20 深圳市汇朗科技有限公司 分表分页排序查询方法及装置
CN105740405B (zh) * 2016-01-29 2020-06-26 华为技术有限公司 存储数据的方法和装置
CN107463512B (zh) * 2017-06-26 2020-11-13 上海高顿教育培训有限公司 分布式高速存储系统的数据更新方法
CN107832389B (zh) * 2017-10-31 2020-12-25 新华三大数据技术有限公司 数据管理方法及装置
CN108681563B (zh) * 2018-04-28 2021-08-27 新疆熙菱信息技术股份有限公司 基于一表多用户的服务发布及访问系统
CN110647517B (zh) * 2018-06-11 2022-06-24 北京神州泰岳软件股份有限公司 一种表格数据结构的处理方法和装置
CN108920725B (zh) * 2018-08-02 2020-08-04 网宿科技股份有限公司 一种对象存储的方法及对象存储网关
CN109101641B (zh) * 2018-08-20 2022-09-23 联想(北京)有限公司 表格处理方法、装置、系统和介质
CN110297832B (zh) * 2019-07-01 2021-12-24 联想(北京)有限公司 一种时序数据存储方法及装置、时序数据查询方法及装置
CN111324605B (zh) * 2020-01-22 2020-11-10 北京东方金信科技有限公司 数据库中数据混合存储动态调整方法及应用
CN112465294B (zh) * 2020-10-21 2023-08-22 郑州大学第一附属医院 基于审计结果的医院药品智能供货方法及装置
CN112835901A (zh) * 2021-02-01 2021-05-25 长沙市到家悠享家政服务有限公司 文件存储方法及装置、计算机设备、计算机可读存储介质
CN112835938A (zh) * 2021-02-23 2021-05-25 百度在线网络技术(北京)有限公司 数据处理方法、装置、电子设备和计算机可读存储介质
CN113360776B (zh) * 2021-07-19 2023-07-21 西南大学 基于跨表数据挖掘的科技资源推荐方法

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20020095421A1 (en) * 2000-11-29 2002-07-18 Koskas Elie Ouzi Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods
US6754670B1 (en) * 1999-12-17 2004-06-22 International Business Machines Corporation Mapping relational tables to object oriented classes
US6769124B1 (en) * 1998-07-22 2004-07-27 Cisco Technology, Inc. Persistent storage of information objects
US7493313B2 (en) * 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances

Family Cites Families (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5295256A (en) * 1990-12-14 1994-03-15 Racal-Datacom, Inc. Automatic storage of persistent objects in a relational schema
JPH0567159A (ja) 1991-09-10 1993-03-19 Nec Software Kansai Ltd 表形式データ処理装置
JPH0736756A (ja) * 1993-07-21 1995-02-07 Hitachi Ltd オブジェクト管理方式
US5878411A (en) * 1997-06-27 1999-03-02 International Business Machines Corporation Dependent object class and subclass mapping to relational data store
US5995973A (en) * 1997-08-29 1999-11-30 International Business Machines Corporation Storing relationship tables identifying object relationships
IL135267A0 (en) * 1997-09-26 2001-05-20 Ontos Inc Object model mapping and runtime engine for employing relational database with object oriented software
US6112207A (en) * 1997-10-31 2000-08-29 Oracle Corporation Apparatus and method which features linearizing attributes of an information object into a string of bytes for object representation and storage in a database system
US6094649A (en) * 1997-12-22 2000-07-25 Partnet, Inc. Keyword searches of structured databases
US6360223B1 (en) * 1997-12-22 2002-03-19 Sun Microsystems, Inc. Rule-based approach to object-relational mapping strategies
US6374256B1 (en) * 1997-12-22 2002-04-16 Sun Microsystems, Inc. Method and apparatus for creating indexes in a relational database corresponding to classes in an object-oriented application
US6385618B1 (en) * 1997-12-22 2002-05-07 Sun Microsystems, Inc. Integrating both modifications to an object model and modifications to a database into source code by an object-relational mapping tool
US6122639A (en) * 1997-12-23 2000-09-19 Cisco Technology, Inc. Network device information collection and change detection
US6341289B1 (en) * 1999-05-06 2002-01-22 International Business Machines Corporation Object identity and partitioning for user defined extents
US6591275B1 (en) * 2000-06-02 2003-07-08 Sun Microsystems, Inc. Object-relational mapping for tables without primary keys
JP2004534981A (ja) 2000-11-29 2004-11-18 ラファイエット・ソフトウェア・インコーポレーテッド データベース・システムでデータを編成し、問合せを処理する方法、およびそのような方法を実施するためのデータベース・システムおよびソフトウェア製品
EP1217541A1 (en) * 2000-11-29 2002-06-26 Lafayette Software Inc. Method of processing queries in a database system, and database system and software product for implementing such method
JP2005234612A (ja) 2001-05-07 2005-09-02 I-Ze Communications Inc データベースの統合
US20030154197A1 (en) * 2002-02-13 2003-08-14 Permutta Technologies Flexible relational data storage method and apparatus
US7103588B2 (en) 2003-05-05 2006-09-05 International Business Machines Corporation Range-clustered tables in a database management system
US7203712B2 (en) * 2004-02-26 2007-04-10 International Business Machines Corporation Algorithm to find LOB value in a relational table after key columns have been modified
JP2006065467A (ja) 2004-08-25 2006-03-09 Hitachi Ltd データ抽出定義情報生成装置およびデータ抽出定義情報生成方法
US8001527B1 (en) * 2004-12-21 2011-08-16 Zenprise, Inc. Automated root cause analysis of problems associated with software application deployments
WO2006119652A1 (en) * 2005-05-13 2006-11-16 Abb Research Ltd Generating a unique representation of physical assets
US20080059492A1 (en) * 2006-08-31 2008-03-06 Tarin Stephen A Systems, methods, and storage structures for cached databases
CN102193917B (zh) * 2010-03-01 2014-03-26 中国移动通信集团公司 一种数据处理和查询方法和装置
US8458191B2 (en) * 2010-03-15 2013-06-04 International Business Machines Corporation Method and system to store RDF data in a relational store
EP2646928A4 (en) 2010-12-03 2016-11-09 Hewlett Packard Entpr Dev Lp SYSTEMS AND METHODS FOR PERFORMING INPUT JOIN OPERATION
JP5727258B2 (ja) 2011-02-25 2015-06-03 ウイングアーク1st株式会社 分散型データベースシステム
CA2860322C (en) * 2011-12-23 2017-06-27 Amiato, Inc. Scalable analysis platform for semi-structured data
CN103116625A (zh) * 2013-01-31 2013-05-22 重庆大学 一种基于Hadoop的海量RDF数据分布式查询处理方法
GB2513329A (en) * 2013-04-23 2014-10-29 Ibm Method and system for scoring data in a database
US10235391B2 (en) * 2013-06-18 2019-03-19 Change Healthcare Holdings, Llc Method and apparatus for implementing dynamic database traversal
EP3023885B1 (en) * 2013-08-29 2019-10-30 Huawei Technologies Co., Ltd. Method and device for storing data

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6769124B1 (en) * 1998-07-22 2004-07-27 Cisco Technology, Inc. Persistent storage of information objects
US6754670B1 (en) * 1999-12-17 2004-06-22 International Business Machines Corporation Mapping relational tables to object oriented classes
US20020095421A1 (en) * 2000-11-29 2002-07-18 Koskas Elie Ouzi Methods of organizing data and processing queries in a database system, and database system and software product for implementing such methods
US7493313B2 (en) * 2004-09-17 2009-02-17 Microsoft Corporation Durable storage of .NET data types and instances

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20200104789A (ko) * 2019-02-27 2020-09-04 베이징 바이두 넷컴 사이언스 앤 테크놀로지 코., 엘티디. 데이터 저장 및 조회 방법, 장치, 기기 및 매체

Also Published As

Publication number Publication date
CN106649708A (zh) 2017-05-10
JP2016534456A (ja) 2016-11-04
CN103703467A (zh) 2014-04-02
CA2921616C (en) 2017-03-07
CN103703467B (zh) 2017-02-08
EP3023885A4 (en) 2016-06-29
CA2921616A1 (en) 2015-03-05
WO2015027425A1 (zh) 2015-03-05
US9589004B2 (en) 2017-03-07
JP6225261B2 (ja) 2017-11-01
US20170132260A1 (en) 2017-05-11
EP3023885A1 (en) 2016-05-25
EP3023885B1 (en) 2019-10-30
BR112016004490B1 (pt) 2020-11-10
US20160179856A1 (en) 2016-06-23
BR112016004490B8 (pt) 2022-08-23
KR101720602B1 (ko) 2017-03-29
US10331642B2 (en) 2019-06-25

Similar Documents

Publication Publication Date Title
KR101720602B1 (ko) 데이터를 저장하기 위한 방법 및 장치
US11132346B2 (en) Information processing method and apparatus
EP2637111B1 (en) Data management system and method using database middleware
JP2016534456A5 (ko)
US8719237B2 (en) Method and apparatus for deleting duplicate data
US20150143065A1 (en) Data Processing Method and Apparatus, and Shared Storage Device
US20160217167A1 (en) Hash Database Configuration Method and Apparatus
EP3425493A1 (en) Data processing method and apparatus
WO2016066108A1 (zh) 路由访问方法、路由访问系统及用户终端
US20160132542A1 (en) Online index rebuilding method and apparatus
CN108140050B (zh) 一种使用布隆过滤器过滤文件的方法及装置
US11288287B2 (en) Methods and apparatus to partition a database
CN106933935B (zh) 任务存储方法和装置
WO2014110940A1 (en) A method, apparatus and system for storing, reading the directory index
KR101640733B1 (ko) 인-메모리 데이터베이스 기반의 데이터 관리 시스템 및 그 방법
CN107451154B (zh) 一种数据表的处理方法、装置及系统
WO2018210178A1 (zh) 文件存储方法和存储装置
JP6397105B2 (ja) データを記憶する方法及び装置
CN112800067B (zh) 范围查询方法、装置、计算机可读存储介质及电子设备
CN107203550B (zh) 一种数据处理方法和数据库服务器
KR101545216B1 (ko) 데이터 모델링 방법 및 장치
CN103810209B (zh) 一种保存数据的方法及系统
US20150324408A1 (en) Hybrid storage method and apparatus
CN115934761A (zh) 一种基于Counting布隆过滤器的数据库中间件查询优化方法
WO2018205937A1 (zh) 数据存储方法、数据查询方法及装置

Legal Events

Date Code Title Description
A201 Request for examination
A302 Request for accelerated examination
E902 Notification of reason for refusal
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20200218

Year of fee payment: 4