(58)【調査した分野】(Int.Cl.,DB名)
前記少なくとも2つのデータオブジェクトの各データオブジェクトの前記KeyValue式分散データベースにおけるロー識別子のフォーマットを決定する前記ステップは、
前記少なくとも2つのデータオブジェクトに対して、前記KeyValue式分散データベース中の前記ロー識別子の第1のプレフィックスを指定するステップであって、前記第1のプレフィックスは定数である、ステップと、
前記少なくとも2つのデータオブジェクト中の第1のデータオブジェクトのロー識別子フォーマットが、前記第1のプレフィックスと、前記同じカラム属性と、前記第1のデータオブジェクトのデータオブジェクト識別子とを含むことを決定するステップと、
を含む、請求項1又は2に記載の方法。
前記少なくとも2つのデータオブジェクトのうち任意のデータオブジェクトの前記KeyValue式分散データベースにおける副索引のフォーマットが、第2のプレフィックス、第2の属性及び前記同じカラム属性であることを決定するステップであって、前記第2の属性は、前記任意のデータオブジェクトのカラム属性のうち前記同じ属性とは異なるカラム属性であり、且つ、前記第2のプレフィックスは、前記第1のプレフィックスとは異なる定数である、ステップと、
前記任意のデータオブジェクトの前記副索引の前記フォーマットに従って、前記任意のデータオブジェクトの前記副索引を決定するステップと、
前記任意のデータオブジェクトの前記副索引を、前記KeyValue式分散データベースに記憶するステップと、
を更に有する、請求項3に記載の方法。
前記少なくとも2つのデータオブジェクトの各データオブジェクトの前記KeyValue式分散データベースにおけるロー識別子のフォーマットを決定する前記ステップは、
前記少なくとも2つのデータオブジェクトに対して、前記KeyValue式分散データベース中の前記ロー識別子の第1のプレフィックスを指定するステップであって、前記第1のプレフィックスは定数である、ステップと、
前記少なくとも2つのデータオブジェクト中の第2のデータオブジェクトのロー識別子フォーマットが、前記第1のプレフィックスと、前記同じカラム属性と、前記第2のデータオブジェクトのデータオブジェクト識別子と、前記第2のデータオブジェクトのカラム属性のうち前記第2のデータオブジェクトの全てのデータ記録を区別できるカラム属性とを含むことを決定するステップと、
を含む、請求項1又は2に記載の方法。
前記少なくとも2つのデータオブジェクトのうち任意のデータオブジェクトの前記KeyValue式分散データベースにおける副索引のフォーマットが、第2のプレフィックス、第2の属性及び前記同じカラム属性であることを決定するステップであって、前記第2の属性は、前記任意のデータオブジェクトのカラム属性のうち前記同じ属性とは異なるカラム属性であり、且つ、前記第2のプレフィックスは、前記第1のプレフィックスとは異なる定数である、ステップと、
前記任意のデータオブジェクトの前記副索引の前記フォーマットに従って、前記任意のデータオブジェクトの前記副索引を決定するステップと、
前記任意のデータオブジェクトの前記副索引を、前記KeyValue式分散データベースに記憶するステップと、
を更に有する、請求項5に記載の方法。
【発明を実施するための形態】
【0023】
以下、本発明の実施形態において添付の図面を参照して、本発明の実施形態における技術的解決策を明確且つ完全に説明する。当然ながら、説明される実施形態は本発明の実施形態の一部であり、全部ではない。当業者が本発明の実施形態に基づいて創意工夫なく得る他の実施形態は、全て本発明の保護範囲に包含されるものとする。
【0024】
本発明の実施形態における技術的解決策は、KeyValue式分散データベースに適用されてよい。
【0025】
本発明の実施形態では、データオブジェクトはデータテーブル(簡単にテーブルとも呼ばれる)又はデータテーブルフォーマットのデータである。例えば、データは、記録データ、ネットワークアクセス記録データ等と呼ばれてよい。説明を簡単にするために、以下の実施形態では、データテーブルを例に用いて説明する。
【0026】
図1は、本発明の実施形態に係るデータを記憶する方法100の概略フローチャートを示す。
図1の方法はデータ記憶装置によって実行される。
図1に示されるように、方法100は以下のステップを有する。
【0027】
S110:KeyValue式分散データベースに記憶されるべき少なくとも2つのデータオブジェクトの同じカラム属性を決定する。
【0028】
S120:少なくとも2つのデータオブジェクトの各データオブジェクトのKeyValue式分散データベースにおけるロー識別子のフォーマットを決定する。ロー識別子フォーマットは、同じカラム属性及びデータオブジェクト識別子を含む。少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する。
【0029】
S130:各データオブジェクトの決定されたロー識別子フォーマットに従って、各データオブジェクトの各データ記録のロー識別子値を決定する。
【0030】
S140:KeyValue式分散データベースに、各データ記録のロー識別子値と各データ記録とを記憶する。各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される。
【0031】
本発明の本実施形態では、複数の(すなわち少なくとも2つ)のデータオブジェクトが相関するとき、すなわち複数のデータオブジェクトが同じカラム属性を有するとき、複数のデータオブジェクトに対する相関クエリを容易にするために、データ記憶装置は、KeyValue式分散データベースの1つのテーブルに複数のデータオブジェクトを記憶する。データ記憶装置は、同じカラム属性に基づいて、各データオブジェクトのKeyValue式分散データベースにおけるロー識別子(例えばRowKey)のフォーマットを決定する。ロー識別子フォーマットは、同じカラム属性及びデータオブジェクト識別子を含む。少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する。すなわち、全てのデータオブジェクトのロー識別子フォーマットは、クエリを容易にするために同じカラム属性を有し、更に、異なるデータオブジェクトを区別すために、データオブジェクトに対応するデータオブジェクト識別子を有する。異なるデータオブジェクトのロー識別子フォーマットが一貫した構成になるように、異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマットの同じ位置にあり、且つ、同じカラム属性の後に位置する。そして、データ記憶装置は、決定されたロー識別子フォーマットに従って各データオブジェクトの各データ記録のロー識別子値を決定し、各データ記録のロー識別子値と各データ記録とをKeyValue式分散データベースに記憶する。各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される。複数の相関するデータオブジェクトについて一貫したロー識別子フォーマットが利用されるので、このように、データクエリの間、1つのデータテーブルにおいて複数のデータオブジェクトに対して相関クエリを実施できるように、ロー識別子フォーマットに従ってクエリ情報が構成される。よって、データクエリ効率が改善される。
【0032】
したがって、本発明の本実施形態におけるデータを記憶する方法では、複数のデータオブジェクトに対して相関クエリを実施できるように、同じカラム属性を含むロー識別子フォーマットを利用して、相関するデータオブジェクトをKeyValue式分散データベースに記憶する。よって、データクエリ効率が改善される。
【0033】
留意すべきこととして、本発明の本実施形態では、ロー識別子は、データの各ローの識別子である。ロー識別子はRowKey又はKeyと表されてよく、本発明では限定されない。説明を簡単にするために、以下の実施形態では、RowKeyを例に用いて説明する。
【0034】
以下、具体的な例を用いて本発明の本実施形態を詳述する。留意すべきこととして、この例は当業者が本発明の本実施形態をよりよく理解できるようにすることを目的とするに過ぎず、本発明の本実施形態の範囲を限定する目的はない。
【0035】
S110では、データ記憶装置が、KeyValue式分散データベースに記憶されるべき少なくとも2つのデータオブジェクトの同じカラム属性を決定する。
【0036】
複数のデータオブジェクトが同じカラム属性を有することは、複数のデータオブジェクトが相関することを意味する。
【0037】
例えば、データオブジェクトAについて、学生情報を記録するテーブル1を例に用いると、その属性情報は、名称(Name)、学生番号(ID)、性別(Sex)、学部(Dept)等のカラム(Column)属性を含む。
【0039】
データオブジェクトBについて、学生カリキュラム可変情報を記録するテーブル2を例に用いると、その属性情報は、連番(No)、学生番号(ID)、課程(course)等のカラム属性を含む。
【0041】
テーブル1とテーブル2は両方ともIDカラムを有し、すなわち、テーブル1とテーブル2は同じカラム属性IDを有する。したがって、テーブル1及びテーブル2は相関するデータオブジェクトである。
【0042】
S120では、データ記憶装置は、少なくとも2つのデータオブジェクトの各データオブジェクトのKeyValue式分散データベースにおけるロー識別子のフォーマットを決定する。
【0043】
ロー識別子フォーマットは、同じカラム属性及びデータオブジェクト識別子を含む。少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する。
【0044】
具体的には、本発明の本実施形態では、データクエリ効率を改善するために、各データオブジェクトは独立したテーブルには記憶されず、代わりに、複数のデータオブジェクトが統一されたフォーマットに従って1つのテーブルに記憶され、それによって相関クエリが実施される。複数のデータオブジェクトを1つのテーブルに記憶するために、ロー識別子フォーマットが予め構成される必要がある。RowKeyフォーマットが予め設計される場合を例に用いると、すなわちRowKeyがどの構成要素を含むかと、構成要素がどのように組み合わされるかが、予め指定される。本実施形態では、ロー識別子の構成要素は、少なくとも2つのデータオブジェクトの同じカラム属性とデータオブジェクト識別子とを含む。同じカラム属性は、少なくとも2つのデータオブジェクトを相関する方式で記憶するために用いられ、データオブジェクト識別子は、各ローのデータがどのデータオブジェクトに由来するかを示すのに用いられる。データオブジェクト識別子は同じカラム属性の後に位置し、全てのデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマットの同じ位置に存在する。具体的には、異なるデータオブジェクトのデータオブジェクト識別子は、異なるデータオブジェクトを区別するために、異なる定数であってよい。
【0045】
本発明の本実施形態では、任意に、
図2に示されるように、S120は以下のステップを含む。
【0046】
S121:少なくとも2つのデータオブジェクトに対して、KeyValue式分散データベース中のロー識別子の第1のプレフィックスを指定する。第1のプレフィックスは定数である。
【0047】
S122:少なくとも2つのデータオブジェクト中の第1のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第1のデータオブジェクトのデータオブジェクト識別子とを含むことを決定する。或いは、
S123:少なくとも2つのデータオブジェクト中の第2のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第2のデータオブジェクトのデータオブジェクト識別子と、第2のデータオブジェクトのカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できるカラム属性とを含むことを決定する。
【0048】
具体的には、本実施形態では、ロー識別子は同じプレフィックス(第1のプレフィックスと表される)を含む。RowKeyを例にして用いると、RowKeyは以下のフォーマット、すなわち、
RowKey=第1のプレフィックス+同じカラム属性+データオブジェクト識別子(+別の属性)
である。
【0049】
本実施形態では、異なるデータオブジェクトについて、RowKeyフォーマットは同じ第1のプレフィックスと同じ属性とを含む。このように、データ記録がRowキー値の順序で記憶される場合、異なるデータオブジェクトのデータ記録を隣接して記憶することができる(クラスター記憶と呼ばれる)。そして、異なるデータオブジェクトは、各データオブジェクトのデータオブジェクト識別子を用いて区別される。加えて、同じカラム属性がデータオブジェクト(第1のデータオブジェクトと表される)の全てのデータ記録を区別できる場合、例えば、テーブル1のID属性がテーブル1の全てのデータ記録を区別できる場合、第1のデータオブジェクトのRowKeyフォーマットは別の属性を含まない。同じ属性がデータオブジェクト(第2のデータオブジェクトと表される)の全てのデータ記録を区別できない場合、例えば、テーブル2のID属性がテーブル2の全てのデータ記録を区別できない場合、第2のデータオブジェクトのRowKeyフォーマットは更に、第2のデータオブジェクトの他のカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できる属性、例えば、テーブル2のNo属性を含む必要がある。
【0050】
テーブル1とテーブル2を例として用いると、それらの同じカラム属性はIDである。テーブル1について、IDはテーブル1の全てのデータ記録を区別することができる。したがって、テーブル1のRowKeyフォーマットは、
A(第1のプレフィックス)+ID+M(Mはテーブル1に対応するデータオブジェクト識別子である)
であってよい。
【0051】
テーブル2について、IDはテーブル2の全てのデータ記録を区別することができず、Noはテーブル2の全てのデータ記録を区別することができる。したがって、テーブル2のRowKeyフォーマットは、
A(第1のプレフィックス)+ID+N(Nはテーブル2に対応するデータオブジェクト識別子である)+No
であってよい。
【0052】
本発明の本実施形態では、任意に、ロー識別子フォーマットのフィールド間、又は固定長を有するフィールド間に、セパレータが設定される。
【0053】
すなわち、上述のRowKeyフォーマットの「+」はセパレータであってよい。或いは、RowKeyフォーマットのフィールドは、固定長を有するように設定されてよい。この場合、「+」は実際には存在しない。
【0054】
S130では、データ記憶装置は、各データオブジェクトの決定されたロー識別子フォーマットに従って、各データオブジェクトの各データ記録のロー識別子値を決定する。
【0055】
具体的には、RowKeyを例として用いると、データ記憶装置は、決定されたRowKeyフォーマットに従って、各データオブジェクトの各データ記録のRowキー値を決定する。
【0056】
例えば、データオブジェクトAの第1のデータ記録について、Rowキー値はA0001Mであり、データオブジェクトBの第1のデータ記録について、Rowキー値はA0001N1等である。
【0057】
S140では、データ記憶装置は、各データ記録のロー識別子値と各データ記録とをKeyValue式分散データベースに記憶する。
【0058】
各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される。
【0059】
本発明の本実施形態では、任意に、
図3に示されるように、方法100は更に以下のステップを有する。
【0060】
S150:少なくとも2つのデータオブジェクトの全てのデータ記録がクラスターテーブルを形成するように、全てのデータ記録のロー識別子値に対して、全てのデータ記録を第1の順序にソートする。
【0061】
本発明の本実施形態では、複数のデータオブジェクトのデータ記録がクラスターテーブルを形成できるように、データ記録はロー識別子値の順序でKeyValue式分散データベースに記憶される。このクラスターテーブル記憶方式では、ロー識別子値の範囲はパーティションに対応することができる。すなわち、データ記録のロー識別子値が範囲に属するとき、データ記録はこの範囲に対応するパーティション内にある。したがって、範囲に従うクエリをサポートすることができる。
【0062】
第1の順序は辞書式順序であってよい。例えば、全てのデータ記録は、Rowキー値の辞書式順序でKeyValue式分散データベースに記憶されてよい。第1の順序は別の順序であってもよい。例えば大きさ順であってよく、すなわち、データ記録はRowキー値の大きさ順に連続して記憶されてよい。小さなRowキー値が大きなRowキー値の前に記憶されるか、又は、大きなRowキー値が小さなRowキー値の前に記憶される。本発明の本実施形態において、第1の順序は限定されない。説明を簡単にするために、以下の実施形態では、Rowキー値の辞書式順序を例に用いて説明する。
【0063】
テーブル1とテーブル2を例に用いて、Rowキー値の辞書式順序でKeyValue式分散データベースにおいて記憶が実行されると、テーブル3が得られる。
【0064】
【表3】
(斜線付きカラムは、現在のローのデータがカラムをもたず、記憶上のどの空間も占用しないことを示す。以下同様である。)
【0065】
本発明の本実施形態におけるデータを記憶する方法を用いることにより、クラスターテーブルを形成するために、異なる相関するデータオブジェクトのデータ記録を隣接して記憶することができる。例えば、テーブル3の第1のデータ記録は元のテーブル1の第1の記録であり、テーブル3の第2〜第4の記録は元のテーブル2の第1〜第3の記録であり、これらのデータ記録は同じIDを有するので、隣接してKeyValue式分散データベースに記憶される。隣接記憶により、データアクセス速度を向上することができ、クエリ効率を更に改善することができる。
【0066】
以下、上述の記憶方法に従って得られたデータテーブルのクエリを行う実施方式を説明する。
【0067】
本発明の本実施形態では、任意に、
図4に示されるように、方法100は更に以下のステップを有する。
【0068】
S160:データリクエストを受信する。データリクエストは、少なくとも2つのデータオブジェクトのデータ記録をクエリ又は取得することを命令する。
【0069】
S170:ロー識別子フォーマットに従って、KeyValue式分散データベースにおいてクエリを行うためのクエリ情報を構成する。クエリ情報は同じカラム属性を含む。
【0070】
S180:クエリ情報に従って、その主索引がクエリ情報を含むデータ記録をKeyValue式分散データベースからエクスポートする。
【0071】
具体的には、データ記録をクエリ又は取得するためのデータリクエストが受信されるとき、データ記憶装置は、ロー識別子フォーマットに従ってクエリ情報を構成する。クエリ情報は同じカラム属性を含む必要がある。そして、データ記憶装置は、構成されたクエリ情報を用いてクエリを実行して、KeyValue式分散データベース中の、その主索引がクエリ情報を含むデータ記録を取得する。
【0072】
任意に、ロー識別子フォーマットが第1のプレフィックスを含む場合、クエリ情報は第1のプレフィックス及び同じカラム属性を含む。
【0073】
例えば、学生の学生番号(ID=0001)を用いて学生情報及び学生カリキュラム可変情報が取得される場合、クエリ情報:A0001が構成されてよい。学生番号(ID=0001)をもつ学生の学生情報及び学生カリキュラム可変情報は、範囲クエリによってテーブル3において取得することができる。取得されるクエリ結果はテーブル4に示される。クエリプロセスでは、1つのテーブルだけにクエリが実行されればよく、ユーザーデータの位置決めは1回だけ完了されればよい。学生情報と学生カリキュラム可変情報とが隣接して記憶されるので、高速のリターンを実現することができる。
【0075】
したがって、本発明の本実施形態におけるデータを記憶する方法では、相関するデータオブジェクトを1つのデータテーブルにクラスターとして記憶できるように、同じカラム属性を含むロー識別子フォーマットを利用することにより、相関するデータオブジェクトがKeyValue式分散データベースに記憶される。1つのデータテーブルにおいて相関クエリを実施することができ、よって、データクエリ効率が改善される。
【0076】
本発明の本実施形態では、任意に、方法100は更に以下のステップを有する。
【0077】
少なくとも2つのデータオブジェクトのうち任意のデータオブジェクトのKeyValue式分散データベースにおける副索引のフォーマットが、第2のプレフィックス、第2の属性及び同じカラム属性であることを決定する。第2の属性は、任意のデータオブジェクトのカラム属性にあり、且つ同じ属性とは異なるカラム属性である。第2のプレフィックスは、第1のプレフィックスとは異なる定数である。
【0078】
任意のデータオブジェクトの副索引のフォーマットに従って、任意のデータオブジェクトの副索引を決定する。
【0079】
KeyValue式分散データベースに任意のデータオブジェクトの副索引を記憶する。具体的には、複雑なクエリのシナリオを満足するために、データオブジェクトに対して副索引情報が構成されてよい。同じデータオブジェクトの主索引及び副索引のデータは同じテーブルに記憶されるが、異なるロー識別子フォーマットを用いて、同じテーブル内でのデータ分離を実現する。加えて、相関クエリは副索引情報を用いて完了されてよい。副索引のロー識別子フォーマットは、第2のプレフィックス、第2の属性及び同じ属性である。データ分離を実現するために、第2のプレフィックスは第1のプレフィックスとは異なる。第2の属性に従うクエリ情報の構成を容易にするために、第2の属性は、同じ属性とは異なる属性である。同じ属性は、主索引との相関に用いられる。
【0080】
例えば、データオブジェクトテーブル1及びデータオブジェクトテーブル2がKeyValue式分散データベースに記憶される場合、テーブル1の主索引RowKeyフォーマットはA+ID+Mであってよく、テーブル2の主索引RowKeyフォーマットはA+ID+N+Noであってよく、テーブル1の副索引RowKeyフォーマットはB+Name+IDであってよい。このように、Rowキー値の辞書式順序でKeyValue式分散データベースにおいて記憶が実行されると、テーブル5が得られる。
【0082】
留意すべきこととして、副索引RowKeyに対応するカラムでは、個別の重大なカラム情報等のカラム情報が記憶されてもよく、本発明の本実施形態では限定されない。
【0083】
学生名(Name=張三)を用いて学生情報及び学生カリキュラム可変情報が取得される場合、クエリ情報:B張三が構成されてよい。完全な副索引RowKey情報:B張三0001は、範囲クエリによってテーブル5において取得することができる。副索引RowKeyが解析されて、ID=0001が取得される。そして、クエリ情報:A0001が更に構成される。学生情報及び学生カリキュラム可変情報は、更なるクエリを実行することにより、テーブル5において取得することができる。これにより、ユーザーがNameしか知らずIDが分からない場合に、ユーザーがクエリを実行するのに役立つ。
【0084】
したがって、本発明の本実施形態におけるデータを記憶する方法では、KeyValue式分散データベースにデータオブジェクトの副索引が記憶され、より多様なクエリシナリオをユーザーに提供することができる。また、ユーザーによるクエリを容易にすることができ、よって、データクエリ効率が改善される。
【0085】
本発明の本実施形態では、複数のデータオブジェクトのロー識別子フォーマットは別の方式で実現されてもよい。例えば、異なるデータオブジェクトのロー識別子フォーマットは、異なるプレフィックスを含んでよく、或いはプレフィックスを含まなくてもよい。
【0086】
例えば、プレフィックスが用いられない場合、RowKeyは以下のフォーマット、
RowKey=同じカラム属性+データオブジェクト識別子(+別の属性)
である。
【0087】
異なるデータオブジェクトのデータ記録は同じカラム属性を用いて隣接して記憶することができ、異なるデータオブジェクトは、各データオブジェクトに対応するデータオブジェクト識別子を用いて区別される。加えて、同じカラム属性がデータオブジェクト(第1のデータオブジェクトと表される)の全てのデータ記録を区別できる場合、第1のデータオブジェクトのRowKeyフォーマットは別の属性を含まない。同じカラム属性がデータオブジェクト(第2のデータオブジェクトと表される)の全てのデータ記録を区別できない場合、第2のデータオブジェクトのRowKeyフォーマットは更に、第2のデータオブジェクトの他のカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できる属性を含む必要がある。
【0088】
テーブル1とテーブル2を例として用いると、それらの同じカラム属性はIDである。テーブル1について、IDはテーブル1の全てのデータ記録を区別することができる。したがって、テーブル1のRowKeyフォーマットは、
ID+M
であってよい。
【0089】
テーブル2について、IDはテーブル2の全てのデータ記録を区別することができず、Noはテーブル2の全てのデータ記録を区別することができる。したがって、テーブル2のRowKeyフォーマットは、
ID+N+No
であってよい。
【0090】
このように、Rowキー値の辞書式順序でKeyValue式分散データベースにおいて記憶が実行されると、テーブル6が得られる。
【0092】
学生の学生番号(ID=0001)を用いて学生情報及び学生カリキュラム可変情報が取得される場合、クエリ情報:0001が構成されてよい。学生番号(ID=0001)をもつ学生の学生情報及び学生カリキュラム可変情報は、範囲クエリによって取得することができる。クエリプロセスでは、1つのテーブルだけにクエリが実行されればよく、ユーザーデータの位置決めは1回だけ完了されればよい。学生情報と学生カリキュラム可変情報とが隣接して記憶されるので、高速のリターンを実現することができる。
【0093】
異なるデータオブジェクトに対して異なるプレフィックスが利用される場合、RowKeyは以下のフォーマット、
RowKey=データオブジェクトに対応するプレフィックス)+同じカラム属性(+別の属性)
である。
【0094】
異なるデータオブジェクトに対して異なるプレフィックスが用いられる場合、異なるデータオブジェクトが異なるパーティションに記憶されることが実現する。加えて、同じカラム属性がデータオブジェクト(第1のデータオブジェクトと表される)の全てのデータ記録を区別できる場合、第1のデータオブジェクトのRowKeyフォーマットは別の属性を含まない。同じカラム属性がデータオブジェクト(第2のデータオブジェクトと表される)の全てのデータ記録を区別できない場合、第2のデータオブジェクトのRowKeyフォーマットは更に、第2のデータオブジェクトの他のカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できる属性を含む必要がある。
【0095】
テーブル1とテーブル2を例として用いると、それらの同じカラム属性はIDである。テーブル1について、IDはテーブル1の全てのデータ記録を区別することができる。したがって、テーブル1のRowKeyフォーマットは、
A+ID
であってよい。
【0096】
テーブル2について、IDはテーブル2の全てのデータ記録を区別することができず、Noはテーブル2の全てのデータ記録を識別することができる。したがって、テーブル2のRowKeyフォーマットは、
B+ID+No
であってよい。
【0097】
このように、Rowキー値の辞書式順序でKeyValue式分散データベースにおいて記憶が実行されると、テーブル7が得られる。
【0099】
異なるデータオブジェクトのRowKeyフォーマットは異なるプレフィックスを含み、よって、異なるデータオブジェクトをKeyValue式分散データベースの異なるパーティションに記憶することができる。
【0100】
留意すべきこととして、本発明の様々な実施形態において、上述のプロセスの番号は実行順序を意味しない。プロセスの実行順序は、プロセスの機能及び内部論理に従って決定され、本発明の実施形態の実施プロセスに対する限定と解釈されるべきではない。
【0101】
本発明の本実施形態におけるデータを記憶する方法では、統一されたロー識別子フォーマットに従って、KeyValue式分散データベースの1つのデータテーブルに複数のデータオブジェクトが記憶される。よって、データベース上の管理が容易になり、データクエリ効率を改善することができる。
【0102】
以上、本発明の実施形態に係るデータを記憶する方法を詳細に説明した。以下、本発明の実施形態に係るデータ記憶装置を説明する。
【0103】
図5は、本発明の実施形態に係るデータ記憶装置500の概略ブロック図を示す。
図5に示されるように、装置500は以下の要素を備える。
【0104】
決定モジュール510は、キー値(KeyValue)式分散データベースに記憶されるべき少なくとも2つのデータオブジェクトの同じカラム属性を決定し、少なくとも2つのデータオブジェクトの各データオブジェクトのKeyValue式分散データベースにおけるロー識別子のフォーマットを決定するように構成される。ロー識別子フォーマットは、同じカラム属性及びデータオブジェクト識別子を含む。少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する。また、決定モジュール510は、各データオブジェクトの決定されたロー識別子フォーマットに従って、各データオブジェクトの各データ記録のロー識別子値を決定するように構成される。
【0105】
記憶モジュール520は、KeyValue式分散データベースに、各データ記録のロー識別子値と各データ記録とを記憶するように構成される。各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される。
【0106】
複数の(すなわち少なくとも2つの)データオブジェクトが相関するとき、すなわち複数のデータオブジェクトが同じカラム属性を有するとき、複数のデータオブジェクトに対する相関クエリを容易にするために、データ記憶装置500は、KeyValue式分散データベースの1つのテーブルに複数のデータオブジェクトを記憶する。決定モジュール510は、同じカラム属性に基づいて、各データオブジェクトのKeyValue式分散データベースにおけるロー識別子(例えばRowKey)のフォーマットを決定する。ロー識別子フォーマットは、同じカラム属性及びデータオブジェクト識別子を含む。少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する。すなわち、全てのデータオブジェクトのロー識別子フォーマットは、クエリを容易にするために同じカラム属性を有し、更に、異なるデータオブジェクトを区別するために、データオブジェクトに対応するデータオブジェクト識別子を有する。異なるデータオブジェクトのロー識別子フォーマットが一貫した構成になるように、異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマットの同じ位置にあり、同じカラム属性の後に位置する。そして、決定モジュール510は、決定されたロー識別子フォーマットに従って、各データオブジェクトの各データ記録のロー識別子値を決定する。記憶モジュール520は、各データ記録のロー識別子値と各データ記録とをKeyValue式分散データベースに記憶する。各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される。複数の相関するデータオブジェクトについて一貫したロー識別子フォーマットが利用されるので、このように、データクエリの間、1つのデータテーブルにおいて複数のデータオブジェクトに対して相関クエリを実施できるように、ロー識別子フォーマットに従ってクエリ情報が構成される。よって、データクエリ効率が改善される。
【0107】
したがって、本発明の本実施形態におけるデータ記憶装置では、複数のデータオブジェクトに対して相関クエリを実施できるように、同じカラム属性を含む複数のデータオブジェクトフォーマットを利用して、相関するデータオブジェクトがKeyValue式分散データベースに記憶される。よって、データクエリ効率が改善される。
【0108】
本発明の本実施形態では、任意に、記憶モジュール520は更に、少なくとも2つのデータオブジェクトの全てのデータ記録がクラスターテーブルを形成するように、全てのデータ記録のロー識別子値に対して、全てのデータ記録を第1の順序にソートするように構成される。
【0109】
本発明の本実施形態では、任意に、第1の順序は辞書式順序である。
【0110】
本発明の本実施形態では、任意に、決定モジュール510は、具体的には、少なくとも2つのデータオブジェクトに対して、KeyValue式分散データベース中のロー識別子の第1のプレフィックスを指定するように構成され、第1のプレフィックスは定数であり、且つ、少なくとも2つのデータオブジェクト中の第1のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第1のデータオブジェクトのデータオブジェクト識別子とを含むことを決定するか、又は、少なくとも2つのデータオブジェクト中の第2のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第2のデータオブジェクトのデータオブジェクト識別子と、第2のデータオブジェクトのカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できるカラム属性とを含むことを決定するように構成される。
【0111】
本発明の本実施形態では、任意に、
図6に示されるように、装置500は更に以下の要素を備える。
【0112】
受信モジュール530は、データリクエストを受信するように構成される。データリクエストは、少なくとも2つのデータオブジェクトのデータ記録をクエリ又は取得することを命令する。
【0113】
クエリモジュール540は、ロー識別子フォーマットに従って、KeyValue式分散データベースにおいてクエリを行うためのクエリ情報を構成するように構成され、クエリ情報は同じカラム属性を含み、且つ、クエリ情報に従って、その主索引がクエリ情報を含むデータ記録をKeyValue式分散データベースからエクスポートするように構成される。
【0114】
任意に、ロー識別子フォーマットが第1のプレフィックスを含む場合、クエリ情報は第1のプレフィックス及び同じカラム属性を含む。
【0115】
本発明の本実施形態では、任意に、決定モジュール510は更に、少なくとも2つのデータオブジェクトのうち任意のデータオブジェクトのKeyValue式分散データベースにおける副索引のフォーマットが、第2のプレフィックス、第2の属性及び同じカラム属性であることを決定するように構成され、第2の属性は、任意のデータオブジェクトのカラム属性にあり、且つ同じ属性とは異なるカラム属性であり、第2のプレフィックスは第1のプレフィックスとは異なる定数であり、且つ、任意のデータオブジェクトの副索引のフォーマットに従って、任意のデータオブジェクトの副索引を決定するように構成される。
【0116】
記憶モジュール520は更に、任意のデータオブジェクトの副索引をKeyValue式分散データベースに記憶するように構成される。
【0117】
本発明の本実施形態におけるデータ記憶装置では、KeyValue式分散データベースにデータオブジェクトの副索引が記憶され、より多様なクエリシナリオをユーザーに提供することができる。また、ユーザーによるクエリを容易にすることができ、よって、データクエリ効率が改善される。
【0118】
本発明の本実施形態では、任意に、ロー識別子フォーマットのフィールド間、又は固定長を有するフィールド間に、セパレータが設定される。
【0119】
本発明の本実施形態に係るデータ記憶装置500は、本発明の上述の実施形態に係る方法におけるデータ記憶装置に対応してよい。データ記憶装置500のモジュールの上述及び他の動作及び/又は機能は、
図1〜
図4の方法の対応する手続きを実現するために、別々に実行される。簡単にするために、ここでは詳細の繰り返しを省略する。
【0120】
本発明の本実施形態におけるデータ記憶装置では、複数のデータオブジェクトが統一されたロー識別子フォーマットに従って、KeyValue式分散データベースの1つのデータテーブルに記憶される。よって、データベース上の管理が容易になり、データクエリ効率が改善される。
【0121】
図7は、本発明の別の実施形態に係るデータ記憶装置の構造を示す。データ記憶装置は、少なくとも1つのプロセッサ702(例えばCPU)と、少なくとも1つのネットワークインターフェース705又は別の通信インターフェースと、メモリ706と、これらの装置の接続及び通信を実現するように構成される少なくとも1つの通信バス703とを備える。プロセッサ702は、メモリ706に記憶されるコンピュータープログラム等の実行可能モジュールを実行するように構成される。メモリ706は、高速ランダムアクセスメモリ(RAM:Random Access Memory)を含んでよく、更に、例えば少なくとも1つの磁気ディスク記憶装置等の不揮発性メモリ(non- volatile memory)を含んでよい。少なくとも別のネットワーク要素との通信及び接続は、少なくとも1つのネットワークインターフェース705(有線であっても無線であってもよい)を用いて実現される。
【0122】
一部の実施方式では、メモリ706はプログラム7061を記憶する。プログラム7061はプロセッサ702によって実行されてよい。プログラムは、
KeyValue式分散データベースに記憶されるべき少なくとも2つのデータオブジェクトの同じカラム属性を決定するステップと、
少なくとも2つのデータオブジェクトの各データオブジェクトのKeyValue式分散データベースにおけるロー識別子のフォーマットを決定するステップであって、ロー識別子フォーマットは同じカラム属性及びデータオブジェクト識別子を含み、少なくとも2つのデータオブジェクトのうち異なるデータオブジェクトのデータオブジェクト識別子は、ロー識別子フォーマット内の同じ位置にあり、且つ同じカラム属性の後に位置する、ステップと、
各データオブジェクトの決定されたロー識別子フォーマットに従って、各データオブジェクトの各データ記録のロー識別子値を決定するステップと、
KeyValue式分散データベースに、各データ記録のロー識別子値と各データ記録とを記憶するステップであって、各データ記録のロー識別子値は、各データ記録のKeyValue式分散データベースにおける主索引として利用される、ステップと、
を有する。
【0123】
任意に、プログラムは更に、
少なくとも2つのデータオブジェクトの全てのデータ記録がクラスターテーブルを形成するように、全てのデータ記録のロー識別子値に対して、全てのデータ記録を第1の順序にソートするステップ、
を有する。
【0124】
任意に、第1の順序は辞書式順序である。
【0125】
任意に、プログラムは更に、
データリクエストを受信するステップであって、データリクエストは、少なくとも2つのデータオブジェクトのデータ記録をクエリ又は取得することを命令する、ステップと、
ロー識別子フォーマットに従って、KeyValue式分散データベースにおいてクエリを行うためのクエリ情報を構成するステップであって、クエリ情報は同じカラム属性を含む、ステップと、
クエリ情報に従って、その主索引がクエリ情報を含むデータ記録をKeyValue式分散データベースからエクスポートするステップと、
を有する。
【0126】
任意に、少なくとも2つのデータオブジェクトの各データオブジェクトのKeyValue式分散データベースにおけるロー識別子のフォーマットを決定するステップは、
少なくとも2つのデータオブジェクトに対して、KeyValue式分散データベース中のロー識別子の第1のプレフィックスを指定するステップであって、第1のプレフィックスは定数である、ステップと、
少なくとも2つのデータオブジェクト中の第1のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第1のデータオブジェクトのデータオブジェクト識別子とを含むことを決定するステップ、又は、
少なくとも2つのデータオブジェクト中の第2のデータオブジェクトのロー識別子フォーマットが、第1のプレフィックスと、同じカラム属性と、第2のデータオブジェクトのデータオブジェクト識別子と、第2のデータオブジェクトのカラム属性のうち第2のデータオブジェクトの全てのデータ記録を区別できるカラム属性とを含むことを決定するステップと、
を含む。
【0127】
任意に、クエリ情報は第1のプレフィックス及び同じカラム属性を含む。
【0128】
任意に、プログラムは更に、
少なくとも2つのデータオブジェクトのうち任意のデータオブジェクトのKeyValue式分散データベースにおける副索引のフォーマットが、第2のプレフィックス、第2の属性及び同じカラム属性であることを決定するステップであって、第2の属性は、任意のデータオブジェクトのカラム属性にあり、且つ同じ属性とは異なるカラム属性であり、第2のプレフィックスは第1のプレフィックスとは異なる定数である、ステップと、
任意のデータオブジェクトの副索引のフォーマットに従って、任意のデータオブジェクトの副索引を決定するステップと、
任意のデータオブジェクトの副索引をKeyValue式分散データベースに記憶するステップと、
を有する。
【0129】
任意に、ロー識別子フォーマットのフィールド間、又は固定長を有するフィールド間に、セパレータが設定される。
【0130】
本発明の実施形態で提供される上述の技術的解決策から分かるように、本発明の実施形態では、複数のデータオブジェクトに対して相関クエリを実行できるように、同じカラム属性を有する複数のデータオブジェクトフォーマットを用いて、KeyValue式分散データベースに相関するデータオブジェクトが記憶される。よって、データクエリ効率が改善される。
【0131】
留意すべきこととして、本発明の本実施形態において、用語「及び/又は」は、相関する対象を説明するための相関を説明するものに過ぎず、3つの関係が存在し得ることを示す。例えば、A及び/又はBは、Aのみが存在するケースと、AとBの両方が存在するケースと、Bのみが存在するケースとの3つのケースを示し得る。加えて、本明細書において、記号「/」は一般に、相関する対象間の「又は」の関係を示す。
【0132】
当業者であれば、本明細書に開示される実施形態に説明される例と組み合わせて、ユニット及びアルゴリズムステップが電子機器、コンピューターソフトウェア、又はそれらの組合わせによって実施されてよいことに気付くであろう。ハードウェアとソフトウェアとの互換性を明確に説明するために、上記では一般に、各例の要素及びステップを機能に従って説明した。機能がハードウェアによって実行されるかソフトウェアによって実行されるかは、技術的解決策の特定の応用と設計制約条件によって決まる。当業者であれば、特定の応用の各々について記載の機能を実施するために異なる方法を利用できるであろうが、実施は本発明の範囲を超えることを考慮されたい。
【0133】
当業者であれば、説明を簡便にするために、上述のシステム、装置及びユニットの動作プロセスの詳細については、上述の方法実施形態における対応するプロセスを参照できることが明らかに理解できるであろう。よって、詳細の説明は省略する。
【0134】
本願で提供されるいくつかの実施形態において、開示のシステム、装置及び方法は他の方式で実施されてよいことを理解されたい。例えば、記載の装置実施形態は例示に過ぎない。例えば、ユニットの分割は論理的な機能分割に過ぎず、実際の実施では他の分割であってよい。例えば、複数のユニット又はコンポーネントは別のシステムに組み合わせ又は統合されてよく、或いは、一部の特徴は省略されてよく、或いは実行されなくてよい。加えて、提示又は議論される相互結合又は直接結合又は通信接続は、いくつかのインターフェースによって実施されてよい。装置若しくはユニット間の間接的な結合又は通信接続は、電子的形式、機械的形式その他の形式で実施されてよい。
【0135】
別々の要素として記載されたユニットは物理的に別々であってもなくてもよい。ユニットとして示された要素は物理的なユニットであってもなくてもよく、且つ、1ヶ所に位置しても複数のネットワークユニット上に分散されてもよい。ユニットの一部又は全部は、本発明の実施形態の解決策の目的を達成するために、実際の要件に従って選択されてよい。
【0136】
加えて、本発明の実施形態における機能ユニットは1つの処理ユニットに統合されてよい。或いは、ユニットの各々は物理的に単独で存在してよく、或いは、2以上のユニットは1つのユニットに統合されてよい。統合されたユニットは、ハードウェア形式で実施されてよく、或いは、ソフトウェア機能ユニットの形式で実施されてよい。
【0137】
統合されたユニットがソフトウェア機能ユニットの形式で実施され、且つ、独立した製品として販売又は使用される場合、統合されたユニットはコンピューター可読記憶媒体に記憶されてよい。そのような理解に基づき、本発明の技術的解決策は本質的にソフトウェア製品の形式で実施されてよく、或いは、従来技術に寄与する部分又は技術的解決策の全部若しくは一部は、ソフトウェア製品の形式で実施されてよい。ソフトウェア製品は、記憶媒体に記憶され、且つ、コンピューター装置(パーソナルコンピューター、サーバー又はネットワーク装置であってよい)が本発明の実施形態に記載の方法のステップの全部又は一部を実行することを命令するためのいくつかの命令を含む。上述の記憶媒体はプログラムコードを記憶できる任意の媒体を含んでよく、例えば、USBフラッシュドライブ、リムーバブルハードディスク、リードオンリーメモリ(ROM、Read-Only Memory)、ランダムアクセスメモリ(RAM、Random Access Memory)、磁気ディスク、光ディスク等を含んでよい。
【0138】
上述の説明は本発明の具体的な実施方式に過ぎず、本発明の保護範囲を限定する意図はない。本発明に開示された技術的範囲内で当業者により容易に想到され得る変形又は置換は、いかなるものでも本発明の保護範囲に包含されるものとする。したがって、本発明の保護範囲は特許請求の範囲の保護範囲に従うものとする。