JP2019109693A - データ管理装置、データ管理方法、およびプログラム - Google Patents

データ管理装置、データ管理方法、およびプログラム Download PDF

Info

Publication number
JP2019109693A
JP2019109693A JP2017242030A JP2017242030A JP2019109693A JP 2019109693 A JP2019109693 A JP 2019109693A JP 2017242030 A JP2017242030 A JP 2017242030A JP 2017242030 A JP2017242030 A JP 2017242030A JP 2019109693 A JP2019109693 A JP 2019109693A
Authority
JP
Japan
Prior art keywords
data
column
record
item
data item
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2017242030A
Other languages
English (en)
Other versions
JP6550448B2 (ja
Inventor
周一 鈴木
Shuichi Suzuki
周一 鈴木
洸二 山田
Koji Yamada
洸二 山田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Yahoo Japan Corp
Original Assignee
Yahoo Japan Corp
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 Yahoo Japan Corp filed Critical Yahoo Japan Corp
Priority to JP2017242030A priority Critical patent/JP6550448B2/ja
Priority to US16/021,716 priority patent/US11487729B2/en
Publication of JP2019109693A publication Critical patent/JP2019109693A/ja
Application granted granted Critical
Publication of JP6550448B2 publication Critical patent/JP6550448B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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/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/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Abstract

【課題】非構造的な入力データについて列志向型としての利用を可能にしつつ、入力レコードの特定も容易に行うこと。【解決手段】入力されたレコードを解釈し、データ項目とデータ本体との対応関係が認識可能な抽象表現に変換する解釈部と、前記データ項目ごとに、前記データ本体と前記レコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部に記憶させる変換部と、を備えるデータ管理装置である。【選択図】図6

Description

本発明は、データ管理装置、データ管理方法、およびプログラムに関する。
従来、中国、日本、および韓国の言語のための名前を検出する方法が知られている(特許文献1参照)。この方法では、構造化されたデータを扱っている。
ところで、データベースにおけるデータ構造には、行指向型のデータ構造と列指向型のデータ構造がある。行指向型のデータ構造とは、ひとつのレコードを、ひとまとまりの論理構造として保持するデータ構造である。これに対し、列指向型のデータ構造が知られている。列指向型のデータ構造とは、同じインデックス(ユーザの属性データであれば、名前、年齢、性別といったもの)に対応するデータを、ひとまとまりの論理構造として保持するデータ構造である。論理構造とは、データを検索する際に使用される、キー、LBA(Logical Block Addressing)、論物変換テーブル上のラベル、その他の論理的な情報をいう。行指向型のデータ構造は、データの追加や削除などが容易であるのに対し、列指向型のデータ構造は、インデックスごとの統計処理に向いているといった違いがある。
特開2013−109364号公報
ここで、行指向型のデータ構造を扱うJSONなどの機能では、データのツリー構造を自動生成することができるが、ネットワーク、記憶装置、ソフトウェア処理の面でコストが大きい。特に、列指向型のデータ構造を有するデータベースから統計処理のためのデータを読み出す際の処理時間は長くなってしまう。
一方、列指向型のデータ構造でデータを格納した場合、採用され得る全てのインデックスの管理と、データの追加や削除などが困難である。特に、Stream形式でデータが入力される場合、レコードごとにデータを処理することが想定されるが、レコードごとの処理から直接的に列指向型に書き込むことはできない。また、列指向型においては、書き込み失敗時の管理や重複排除を行う有効な方法が開発されていない。
本発明は、このような事情を考慮してなされたものであり、非構造的な入力データについて列志向型としての利用を可能にしつつ、入力レコードの特定も容易に行うことができるデータ管理装置、データ管理方法、およびプログラムを提供することを目的の一つとする。
本発明の一態様は、入力されたレコードを解釈し、データ項目とデータ本体との対応関係が認識可能な抽象表現に変換する解釈部と、前記データ項目ごとに、前記データ本体と前記レコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部に記憶させる変換部と、を備えるデータ管理装置である。
本発明の一態様によれば、非構造的な入力データについて列志向型としての利用を可能にしつつ、入力レコードの特定も容易に行うことことができる。
jsonフォーマットによるログの一例を示す図である。 図1のログを木構造で表現した図である。 jsonフォーマットによるログの他の一例を示す図である。 図3のログを木構造で表現した図である。 カラムナーファイルのデータを木構造で表現した図である。 データ管理装置の一例であるデータベースサーバ100の使用環境と構成の一例を示す図である。 解釈部112の機能について説明するための図である。 変換部114の機能について説明するための図(その1)である。 変換部114の機能について説明するための図(その2)である。 変換部114により実行される処理の流れの一例を示すフローチャートである。 変換部114のキャスト機能について説明するための図である。 変換部114のデータ分割機能について説明するための図である。 データ利用者インターフェース120による出力データのイメージを示す図である。 データ利用者インターフェース120により実行される処理の流れの一例を示すフローチャートである。
以下、図面を参照し、本発明のデータ管理装置、データ管理方法、およびプログラムの実施形態について説明する。データ管理装置は、クライアントから受信したデータを記憶装置に保管すると共に、データ送信元のクライアント、或いは他のクライアントからの要求に応じたデータを記憶装置から読み出して提供する装置である。データ管理装置をDBMS(データベース管理システム)と称してもよい。クライアントには、エンドユーザの使用する端末装置において動作するアプリケーションプログラムと協調して動作するアプリケーションサーバ(以下、フロントエンドサーバと称する)、蓄積されたデータを統計データなどとして利用するデータ利用者サーバなどが含まれる。
先に、本発明の概念的側面について説明する。近年のHadoopはhiveやprestoに代表される"SQL on Hadoop"でRDB的にhdfsにアクセスすることが主流であり、過去に言われていた「非構造な大量のデータ」のファイルを直接扱うケースはまれになってきた。一方、格納されるデータは、取得時には非構造な「ログ」であることがほとんどである。そこで、多くの場合「規則性のある非構造データ」としてデータを取得・加工することになる。この、「規則性のある非構造データ」の代表がjsonやxmlであり、これは「ネストを含むkey value形式」で表現でき、これは木構造として見ることができる。図1は、jsonフォーマットによるログの一例を示す図であり、図2は図1のログを木構造で表現した図である。木構造による表現は「ネストを含むkey value形式」の抽象化に適している。図3は、jsonフォーマットによるログの他の一例を示す図であり、図4は図3のログを木構造で表現した図である。
図4で示すように、「ネストを含むkeyvalue」は(x, z)平面で、配列に関してはy方向に次元を拡張する事が可能であり、多次元空間での木構造は「ネストを含むkeyvalue形式」、すなわちschemaを表現するのに適している事がわかる。この「多次元空間での木構造」をデータフォーマット(json, xml, avro, message pack等)から切り離して抽象化したオブジェクトにしたものが「schemaobject」である。
一方、Hadoopに代表される分散型ストレージは、当初は大量の非構造データに対し高スループット高レイテンシでアクセスすることを主眼に設計・開発されたが、近年では、高スループットかつ低レイテンシを実現するために、データを構造化して配置するケースが増えてきている。hdfs上に構造化する際はカラムナーと呼ばれる、RDB的なデータを永続化するファイルフォーマットが一般的であり、代表的なものとしてhive ORC file、apache parquetがある。カラムナーファイルのデータを木構造で表現すると、図5に示すような「root直下のみの階層しかない2次元木」で描くことができる。図5は、カラムナーファイルのデータを木構造で表現した図である。
カラムナーファイルフォーマットの利点は、「カラム毎にアクセスすることによる省コスト可」であり、メモリ・CPU・IOどの観点でも、Hadoopで馴染みのある他の非構造データ用のファイルフォーマットを凌駕する。一方で、カラムナーファイルには「データに構造化を強制する」という弱点がある。前述のとおり、データは取得時には非構造な「ログ」であり、構造化しようにも「多次元的な木構造」という高度な表現は不可能である。
この問題を解決するのが、本発明で採用する方式である。これは、多次元的な(木構造で言うと深さ方向の)広がりをもつデータを永続化することができるファイルフォーマットである。前述したschemaobjectをそのまま記述する形式を取るので、「ネストを含むkey valueの配列」という表現力を保ったままデータを保持することができる。
一般に、データのカラムナフォーマットの弱点は「データの構造化」の部分であり、多次元的なデータを二次元へ次元圧縮するロジックと処理をどこかで実装する必要がでてきてしまい、それが俗にいう「スキーマ」である。スキーマの管理や変更には大きなコストが伴う。本発明の方式では、次元圧縮処理が不要であるため、データの保存においては、この「スキーマ問題」から解放される。また、カラムナファイルでは構造上不可能な、配列やStruct型の「特定の値」へのアクセスも、そのカラムを全展開することなく木の探索としてアクセスできる点でも大きな利点がある。
以下、具体的な構成および機能について説明する。図6は、データ管理装置の一例であるデータベースサーバ100の使用環境と構成の一例を示す図である。エンドユーザの使用する一以上の端末装置10は、フロントエンドサーバ20と通信する。端末装置10では、アプリケーションプログラムが動作し、アプリケーションプログラムの実行に必要なデータをフロントエンドサーバ20との間で送受信する。フロントエンドサーバ20は、端末装置10から取得したデータのうち保存が必要なデータを、プロキシサーバ30を介してデータベースサーバ100に送信して保管させる。また、フロントエンドサーバ20は、アプリケーションプログラムの実行に必要なデータをデータベースサーバ100から読み出し、端末装置10に送信する。このような、一以上の端末装置10とフロントエンドサーバ20との組み合わせが複数存在する。それぞれのフロントエンドサーバ20は、JSON(JavaScript(登録商標) Object Notation)、MySQLなどの任意の形式で、データベースサーバ100に対してデータの書き込み要求または読み出し要求を行う。
一方、データ利用者サーバ50は、フロントエンドサーバ20から収集されたデータのうち、利用規約によって統計処理などに利用することが許可されているデータを、データベースサーバ100から取得する。なお、フロントエンドサーバ20とデータ利用者サーバ50の区別は厳密なものである必要はなく、フロントエンドサーバ20の一部がデータ利用者サーバ50として動作することがあってもよい。また、データ利用者サーバ50は、プロキシサーバ30を介してデータベースサーバ100と通信してもよい。図6に示す各装置は、インターネット、WAN(Wide Area Network)、LAN(Local Area Network)などのネットワークを介して相互に通信可能に接続されている。
データベースサーバ100は、例えば、図示しないNIC(Network Interface Card)などの通信インターフェースの他、フロントエンドインターフェース110と、データ利用者インターフェース120と、記憶部150とを備える。フロントエンドインターフェース110およびデータ利用者インターフェース120は、それぞれ、CPU(Central Processing Unit)などのプロセッサがプログラム(ソフトウェア)を実行することにより実現される。また、これらの機能部のうち一方または双方は、LSI(Large Scale Integration)やASIC(Application Specific Integrated Circuit)、FPGA(Field-Programmable Gate Array)などのハードウェアにより実現されてもよいし、ソフトウェアとハードウェアが協働することで実現されてもよい。
フロントエンドインターフェース110は、例えば、解釈部112と、変換部114とを備える。解釈部112は、フロントエンドサーバ20から取得されるデータを抽象化する。また、解釈部112は、フロントエンドサーバ20にデータを提供する際には、抽象化されたデータを、フロントエンドサーバ20に対応した形式に変換する。変換部114は、行指向型のデータを列指向型のデータに変換して記憶部150に記憶部150に記憶させる。データ利用者インターフェース120は、データ利用者サーバ50から取得した要求に応じたデータを記憶部150から読み出し、データ利用者サーバ50に送信する。これらの機能の詳細については後述する。
記憶部150は、例えば、キャッシュメモリ152と、不揮発性メモリ154とを備える。キャッシュメモリ152は、RAM(Random Access Memory)、レジスタ、フラッシュメモリなどで実現される。また、不揮発性メモリ154は、HDD(Hard Disk Drive)、フラッシュメモリなどで実現される。不揮発性メモリ154には、列志向型データ154Aが格納される。記憶部150は、データベースサーバ100がネットワークを介してアクセス可能なNAS(Network Attached Storage)であってもよい。
[フロントエンドインターフェース]
以下、フロントエンドインターフェース110の機能について説明する。フロントエンドインターフェース110の解釈部112は、フロントエンドサーバ20ごとに定義が異なるデータを、一つの共通する形式に変換する。図7は、解釈部112の機能について説明するための図である。ここでは、Markというユーザ名(name)を有するユーザの年齢(age)が30才であるというデータを示している。これに対し、図7の下図は、データベースサーバ100が扱うことのできる抽象化されたデータを模式的に示している。解釈部112は、図7に例示したように、フロントエンドサーバ20から取得されたデータ格納要求を解釈し、抽象化する処理を行って、データを変換部114に渡す。なお、stringやintは後述するデータ形式である。
フロントエンドインターフェース110により抽象化されたデータは、特に処理を加えなければ、行指向型のデータ構造を有するものとなるのが通常である。変換部114は、抽象化したデータを更に、列指向型のデータ構造に変換し、列志向型データ154Aとして記憶部150の不揮発性メモリ154に記憶させる。
図8は、変換部114の機能について説明するための図(その1)である。ここでは、レコード1〜レコード3の3つのレコードがフロントエンドサーバ20から取得され、解釈部112によって抽象化されたものとする。レコード1は、データ項目としてid(識別情報)、name(ユーザ名)、sex(性別)を含んでいる。また、レコード2は、データ項目としてid、name、age(年齢)を含んでおり、レコード3は、データ項目としてid、nameを含んでいる。これらの抽象化されたレコードは、例えばレコード番号に対応付けられてキャッシュメモリ152に格納される。
キャッシュメモリ152に一定量のデータが格納されると、変換部114は、これらを予め配列が確保されていない列指向型のデータ構造で管理しながら不揮発性メモリ154に記憶させる。列志向型のデータ構造において、一単位のデータ(以下、データセット)は、IndexとValueの組み合わせを含む。データセットに含まれるIndexとValueは、互いに対応付けられて不揮発性メモリ154に記憶される。「互いに対応付けられて」とは、例えば、格納場所を示すアドレス情報が、メモリ空間において連続して、あるいはポインタを介して辿ることができる位置に書き込まれていることをいう。このデータセットの格納態様は、「多次元空間での木構造」をデータフォーマット(json, xml, avro, message pack等)から切り離して抽象化したオブジェクトにしたschemaobjectを、メモリ空間にそのまま格納することに相当する。
Indexとは、Valueすなわちデータ本体が、そのテーブル(データのより大きい管理単位)において、何レコード目から抽出されたものであるかを示す情報(換言すると、オフセット情報)である。Indexは、「インデックス情報」の一例である。同じデータ項目のデータセットは、例えば、論理構造に関して近い位置で、不揮発性メモリ154に記憶される。「論理構造に関して近い位置で」とは、例えば、あるデータセットを参照した後に、次のデータセットを参照するために、メモリ空間における連続したアドレスを参照すればよい、あるいは一つまたは少数のポインタを辿るだけで参照することができることをいう。
以下、同じデータ項目の一以上のデータセット、すなわち列志向型で管理される一以上のデータセットのことをカラムデータと称する。図8の例では、データ項目「id」についてレコード1、2、3のデータセットが、データ項目「name」についてレコード1、2、3のデータセットが、データ項目「sex」についてレコード1のデータセットが、データ項目「age」についてレコード2のデータセットが、それぞれカラムデータとして管理される。
また、カラムデータには、そのデータ項目のデータ形式などを記述したヘッダが付与される。データ形式には、[string(文字列)]、[int(整数)]、[long(桁の長い整数)]、[float(小数点表記)]、[double(桁の長い小数点表記)]などがある。
更に別のレコードを記憶する要求が取得された場合、変換部114は、以下の手法でデータを管理する。変換部114は、(手法1)既に管理されているデータ構造に追加する形でデータを管理してもよいし、(手法2)キャッシュメモリ152から不揮発性メモリ154にデータを移すごとに管理するデータを区分してもよい。以下では手法1について説明する。手法2を採用する場合、データの読み出しの際に適宜、データの結合処理が行われる。
図9は、変換部114の機能について説明するための図(その2)である。ここでは、更に、レコード4〜レコード6の3つのレコードがフロントエンドサーバ20から取得され、解釈部112によって抽象化されたものとする。レコード4は、データ項目としてname、age、jobを含んでいる。また、レコード5は、データ項目としてid、name、sexを含んでおり、レコード6は、データ項目としてid、name、jobを含んでいる。これらの抽象化されたレコードは、キャッシュメモリ152に格納される。
キャッシュメモリ152に一定量のデータが格納されると、変換部114は、これらを列指向型のデータ構造で管理しながら不揮発性メモリ154に記憶させる。ここで、レコード4〜6には、レコード1〜3には含まれていなかったjob(職業)というデータ項目が含まれている。この場合、変換部114は、新たなカラムデータを設定し、データを管理する。図9の例では、データ項目「id」についてレコード1、2、3、5、6のデータセットが、データ項目「name」についてレコード1、2、3、4、5、6のデータセットが、データ項目「sex」についてレコード1のデータセットが、データ項目「age」についてレコード2、4、5のデータセットが、データ項目「job」についてレコード4、6のデータセットが、それぞれカラムデータとして管理される。
このようにデータを管理することで、例えば、「全ユーザのjobを取得したい」といった要求がデータ利用者サーバ50から取得された場合、データベースサーバ100(データ利用者インターフェース120)は、他のデータ項目(id、name、age、sex、…)のカラムデータを参照せずに、データ項目「job」のカラムデータを読み出すことができる。この結果、読み出しに要する時間を短縮し、データ利用のニーズに迅速に対応することができる。なお、不揮発性メモリ154がHDDである場合、シーク時間が短くなるように、ひとまとまりの論理構造を、例えば同じトラック内に保持するようにすると好適であるが、これに限定されるものではない。
また、例えば、データベースサーバ100(データ利用者インターフェース120)は、所定のデータ項目におけるValue(データ本体)が設定条件を満たすIndex(レコードを特定可能な情報)を記憶部150から読み出す要求を受け付け、結果を返すことができる。具体的には、「ageのValueが45以上のレコードを取得したい」といった要求がデータ利用者サーバ50から取得された場合、他のデータ項目(id、name、sex、job…)を参照せずに、データ項目「age」のカラムデータに含まれるIndexを読み出すことができる。この場合、データベースサーバ100(データ利用者インターフェース120)は、「age」のカラムデータから順にデータセットを読み出し、Valueの示す値が45以上であるデータセットのIndexを抽出する。この抽出したIndexは、「age」が45以上であるレコードに対する付番であるため、データベースサーバ100は、例えば、列志向型データ154Aとは別に保存されているレコードごとのデータを検索し、「age」が45以上であるレコードを取得することができる。図9の例では、Indexが4と5であるデータセットが条件に該当するため、データベースサーバ100は、4番目のレコードと5番目のレコードを抽出する。
また、図8および図9に示すように、変換部114は、Indexが列方向に連続しない場合でも、連続しないIndexを含むデータセットの間に空のメモリ領域を設けない。これによって、データベースサーバ100は、データを読み出す際にメモリ領域をスキップする処理などを省略することができ、処理速度を向上させることができる。また、本実施形態では、データセットに含まれるIndexとValueとを互いに対応付けて不揮発性メモリ154に記憶させるため、予め設定されたデータ項目に関するデータセットでなくても列志向型データ154Aに追加することができる。すなわち、任意のタイミングで自由にデータ項目を追加することができる。
図10は、変換部114により実行される処理の流れの一例を示すフローチャートである。まず、変換部114は、不揮発性メモリ154への書き込みタイミングが到来するまで待機する(S100)。不揮発性メモリ154への書き込みタイミングとは、前述したようにキャッシュメモリ152に一定量のデータが格納されたタイミング、データベースサーバ100がシャットダウンされるタイミング、直近までの集計処理が依頼されたタイミングなど、任意に定義することができる。
不揮発性メモリ154への書き込みタイミングが到来すると、変換部114は、キャッシュメモリ152に格納されたレコードを一つ選択し(S102)、そのレコードに含まれるデータ項目を一つ選択する(S104)。そして、変換部114は、選択したデータ項目が、既に管理済のデータ項目であるか否かを判定する(S106)。
選択したデータ項目が、既に管理済のデータ項目である場合、変換部114は、そのデータ項目の末尾にIndexとValueを追加する(S108)。一方、選択したデータ項目が、既に管理済のデータ項目でない場合、変換部114は、列を新たに設定(定義)し、設定した列にIndexとValueを書き込む(S110)。
次に、変換部114は、選択されているレコードの全てのデータ項目を選択したか否かを判定する(S112)。選択されているレコードの全てのデータ項目を選択していない場合、S104に処理が戻される。選択されているレコードの全てのデータ項目を選択した場合、変換部114は、キャッシュメモリ152に格納されている全てのレコードを選択したか否かを判定する(S114)。キャッシュメモリ152に格納されている全てのレコードを選択していない場合、S102に処理が戻される。キャッシュメモリ152に格納されている全てのレコードを選択した場合、本フローチャートの1ルーチンの処理が終了する。
[拡張機能]
変換部114は、同じデータ項目について、データ形式が異なるが、統合可能なデータ形式であるデータが入力された場合、これらをキャストして一つのカラムデータにしてもよい。統合可能なデータ形式とは、例えば、int(整数)とlong(桁の長い整数)の組、あるいはfloat(小数点表記)とdouble(桁の長い小数点表記)の組である。変換部114は、それぞれが互いに異なる数値型のデータ形式で定義された同じデータ項目に対応する二以上のカラムデータに関して、所望のタイミングで数値型のうち桁の多い方のデータ形式に揃えて一つのカラムデータを再構成する。
図11は、変換部114のキャスト機能について説明するための図である。例えば、「times(ログイン回数)」のようなデータ項目について、レコード10、15、17ではデータ形式[int]で入力され、レコード22でValueの桁が長いためデータ形式[long]で入力された場合、当初のカラムデータは図11の上図のように二つに分けて設定される。この場合、変換部114は、任意のタイミングで、データ項目[int]のデータセットのデータ形式を[long]に変更して統合する。これによって、データ形式の異なるデータセットについても、例えば合計を求めるような統計処理を効率的に行うことができる。
変換部114は、例えば、データ形式として[array]が指定されている場合、複数のデータ項目を分割してカラムデータとする。すなわち、変換部114は、入力されたレコードが階層構造を含む場合、階層構造をカラムデータの形成するメモリ空間に展開して記憶部150に記憶させる。図12は、変換部114のデータ分割機能について説明するための図である。図示するように、変換部114は、[array]形式の「date」を構成する「yy」と「mm」と「dd」をそれぞれデータ項目とし、親空間(上位空間)とは別のメモリ空間(子空間(下位空間))において、カラムデータとして列志向型で管理する。この場合、変換部114は、親空間における[array]に対応するカラムデータのValueに、子空間におけるオフセット情報であるChildIndexの先頭値と、length(何カラム目まで該当するデータがあるかを示す値)とを格納する。図12の例では、親空間のデータ項目「date」のIndex=10のデータセットにおけるValueの「ChildIndex(7,2)」は、子空間におけるChildIndex=7および8のデータセットが対応することを示している。また、変換部114は、それらが[array]からの派生であることを示す情報を、子空間におけるカラムデータに付加しておく。これによって、元々は次元数が他のデータ項目よりも多い(階層構造の)入力データを、フラットなデータ構造で管理することができる。
[データ利用者インターフェース]
以下、データ利用者インターフェース120の機能について説明する。データ利用者インターフェース120は、例えば、データ利用者サーバ50からの要求に応じて、表形式のデータ(配列データ)を提供する。データ利用者サーバ50からの要求は、任意のデータ項目を指定して行われる。この際に、データ利用者インターフェース120は、指定されたデータ項目を含まないレコードに関しては、そのデータ項目に対応するデータを「null」(或いはブランクなど、「該当データ無し」を示す任意の形態であってよい)とした表形式のデータを生成してデータ利用者サーバ50に提供する。また、データ利用者インターフェース120は、指定されたデータ項目が既に管理されているデータ項目の中に無い場合、エラーを返すのではなく、そのデータ項目についてのデータを全て「null」(或いはブランクなど、「該当データ無し」を示す任意の形態であってよい)とした表形式のデータを生成してデータ利用者サーバ50に提供する。なお、データ利用者サーバ50からの要求は、例えば所定の拡張子を指定することで行われてよい。
例えば、図9に示すようなデータが列志向型データ154Aとして不揮発性メモリ154に格納されている状態で、データ項目[sex、age、job、hobby(趣味)]を指定したデータの要求があったとする。この場合、データ利用者インターフェース120による出力データのイメージは、図13のようになる。図13は、データ利用者インターフェース120による出力データのイメージを示す図である。図示するように、データ利用者インターフェース120による出力データは、データの有無に拘わらず、レコードごと且つデータ項目ごとにデータを配列化して表したデータである。これによって、データベースサーバ100は、データ利用者サーバ50のニーズに応じた形式でデータを提供することができる。
図14は、データ利用者インターフェース120により実行される処理の流れの一例を示すフローチャートである。まず、データ利用者インターフェース120は、データの要求を取得するまで待機する(S200)。データの要求を取得すると、データ利用者インターフェース120は、スキーマ情報154Bから、現時点でのレコードの最大数を取得する(S202)。この最大数をnとする。次に、データ利用者インターフェース120は、データの要求に含まれるデータ項目数×nの配列を定義する(S204)。この配列が、出力データの枠組みとなる。
次に、データ利用者インターフェース120は、データの要求からデータ項目を一つ選択し(S206)、選択したデータ項目が、既に列志向型データ154Aに設定済であるか否かを判定する(S208)。データ利用者インターフェース120は、選択したデータ項目が、既に列志向型データ154Aに設定済でない場合、当該データ項目のデータを全てnullにする(S210)。
一方、選択したデータ項目が、既に列志向型データ154Aに設定済である場合、データ利用者インターフェース120は、列志向型データ154Aから、現在選択されているデータ項目のデータを一つ読み出す(S212)。次に、データ利用者インターフェース120は、S212において読み出し可能なデータが存在しなかったか否かを判定する(S214)。S212において読み出し可能なデータが存在した場合、データ利用者インターフェース120は、その読み出しに至るまでにレコード番号が飛ばされたか否かを判定する(S216)。レコード番号が飛ばされた場合、データ利用者インターフェース120は、飛ばされたレコード番号のデータをnullにする(S218)。そして、データ利用者インターフェース120は、列志向型データ154Aから読み出したデータをS204で設定した配列に含める(S220)。
S210の処理を行った後、或いは、S214において肯定的な判定を得た後、データ利用者インターフェース120は、繰り返しS206が行われる中で全てのデータ項目を選択したか否かを判定する(S222)。全てのデータ項目を選択していない場合、S206に処理が戻される。一方、全てのデータ項目を選択した場合、データを出力する(S224)。この段階で、配列における全てのデータに、列志向型データ154Aから読み出されたデータ、或いはnullが格納されている筈である。
以上説明した本発明のデータ管理装置、データ管理方法、およびプログラムによれば、入力されたレコードを解釈してデータ項目とデータ本体との対応関係が認識可能な抽象表現に変換し、データ項目ごとに、データ本体とレコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部150に記憶させることにより、非構造的な入力データについて列志向型としての利用を可能にしつつ、入力レコードの特定も容易に行うことができる。
以上、本発明を実施するための形態について実施形態を用いて説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々の変形及び置換を加えることができる。
10 端末装置
20 フロントエンドサーバ
30 プロキシサーバ
50 データ利用者サーバ
100 データベースサーバ
110 フロントエンドインターフェース
112 解釈部
114 変換部
120 データ利用者インターフェース
150 記憶部
152 キャッシュメモリ
154 不揮発性メモリ
154A 列志向型データ

Claims (11)

  1. 入力されたレコードを解釈し、データ項目とデータ本体との対応関係が認識可能な抽象表現に変換する解釈部と、
    前記データ項目ごとに、前記データ本体と前記レコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部に記憶させる変換部と、
    を備えるデータ管理装置。
  2. 前記変換部は、前記インデックス情報が列方向に連続しない場合でも、前記連続しないインデック情報を含むデータセットの間に空のメモリ領域を設けない、
    請求項1記載のデータ管理装置。
  3. 前記変換部は、前記入力されたレコードを解釈した結果として得られるデータ項目が、前記記憶部に設定されていない場合、新たなデータ項目に対応するカラムデータを設定する、
    請求項1または2記載のデータ管理装置。
  4. 前記変換部は、前記入力されたレコードが階層構造を含む場合、異なる階層のデータに基づくの前記カラムデータを異なるメモリ空間に格納すると共に、上位のカラムデータに下位のカラムデータの格納場所を示す情報を埋め込んで前記記憶部に記憶させる、
    請求項1から3のうちいずれか1項記載のデータ管理装置。
  5. 前記変換部は、それぞれが互いに異なる数値型のデータ形式で定義された同じデータ項目に対応する二以上のカラムデータに関して、所望のタイミングで前記数値型のうち桁の多い方のデータ形式に揃えて一つのカラムデータを再構成する、
    請求項1から4のうちいずれか1項記載のデータ管理装置。
  6. 少なくとも前記カラムデータに含まれるデータ本体を、入力されたデータ要求に含まれるデータ項目ごとに前記記憶部から読み出して出力するデータ利用者インターフェースを更に備える、
    請求項1から5のうちいずれか1項記載のデータ管理装置。
  7. 前記データ利用者インターフェースは、指定されたデータ項目を含まないレコードに関しては、当該データ項目に対応するデータを、該当するデータが存在しないことを示す任意の形態のデータで埋める、
    請求項6記載のデータ管理装置。
  8. 前記データ利用者インターフェースは、指定されたデータ項目が、前記カラムデータとして設定されていないデータ項目である場合、当該データ項目についてのデータを全て、該当するデータが存在しないことを示す任意の形態のデータで埋める、
    請求項6または7記載のデータ管理装置。
  9. 前記データ利用者インターフェースは、所定のデータ項目におけるデータ本体が設定条件を満たすレコードを特定可能な情報を前記記憶部から読み出す要求を受け付け、前記所定のデータ項目のカラムデータに含まれるデータセットのデータ本体を順に検索し、データ本体が設定条件を満たすレコードを特定可能な情報を出力する、
    請求項6から8のうちいずれか1項記載のデータ管理装置。
  10. コンピュータが、
    入力されたレコードを解釈してデータ項目とデータ本体との対応関係が認識可能な抽象表現に変換し、
    前記データ項目ごとに、前記データ本体と前記レコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部に記憶させる、
    データ管理方法。
  11. コンピュータに、
    入力されたレコードを解釈させてデータ項目とデータ本体との対応関係が認識可能な抽象表現に変換させ、
    前記データ項目ごとに、前記データ本体と前記レコードを特定可能なインデックス情報とを対応付けたデータセットを、カラムデータとして記憶部に記憶させる処理を行わせる、
    プログラム。
JP2017242030A 2017-12-18 2017-12-18 データ管理装置、データ管理方法、およびプログラム Active JP6550448B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017242030A JP6550448B2 (ja) 2017-12-18 2017-12-18 データ管理装置、データ管理方法、およびプログラム
US16/021,716 US11487729B2 (en) 2017-12-18 2018-06-28 Data management device, data management method, and non-transitory computer readable storage medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017242030A JP6550448B2 (ja) 2017-12-18 2017-12-18 データ管理装置、データ管理方法、およびプログラム

Publications (2)

Publication Number Publication Date
JP2019109693A true JP2019109693A (ja) 2019-07-04
JP6550448B2 JP6550448B2 (ja) 2019-07-24

Family

ID=66814495

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017242030A Active JP6550448B2 (ja) 2017-12-18 2017-12-18 データ管理装置、データ管理方法、およびプログラム

Country Status (2)

Country Link
US (1) US11487729B2 (ja)
JP (1) JP6550448B2 (ja)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11238409B2 (en) 2017-09-29 2022-02-01 Oracle International Corporation Techniques for extraction and valuation of proficiencies for gap detection and remediation
US20200097879A1 (en) * 2018-09-25 2020-03-26 Oracle International Corporation Techniques for automatic opportunity evaluation and action recommendation engine
JP2022503842A (ja) 2018-09-27 2022-01-12 オラクル・インターナショナル・コーポレイション メトリックのデータ駆動型相関のための技術
US11467803B2 (en) 2019-09-13 2022-10-11 Oracle International Corporation Identifying regulator and driver signals in data systems
US11620284B2 (en) * 2019-01-18 2023-04-04 Inmoment Research, Llc Backend data aggregation system and method
CN110968585B (zh) * 2019-12-20 2023-11-03 深圳前海微众银行股份有限公司 面向列的存储方法、装置、设备及计算机可读存储介质
CN113094292B (zh) * 2020-01-09 2022-12-02 上海宝存信息科技有限公司 数据存储装置以及非挥发式存储器控制方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050050092A1 (en) * 2003-08-25 2005-03-03 Oracle International Corporation Direct loading of semistructured data
JP2008243193A (ja) * 2007-02-26 2008-10-09 System Produce:Kk データ管理システム
JP2016099647A (ja) * 2014-11-18 2016-05-30 シャープ株式会社 情報処理装置
JP2016519810A (ja) * 2013-03-15 2016-07-07 アマゾン・テクノロジーズ・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
JP2017167917A (ja) * 2016-03-17 2017-09-21 日本電気株式会社 データベース管理装置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3607107B2 (ja) * 1998-03-13 2005-01-05 株式会社東芝 データ管理装置
US7337167B2 (en) * 2005-04-14 2008-02-26 International Business Machines Corporation Estimating a number of rows returned by a recursive query
US9442980B1 (en) * 2010-04-21 2016-09-13 Stan Trepetin Mathematical method for performing homomorphic operations
US8762428B2 (en) * 2011-06-06 2014-06-24 International Business Machines Corporation Rapidly deploying virtual database applications using data model analysis
JP5735702B2 (ja) * 2012-03-16 2015-06-17 株式会社日立製作所 情報処理システム及び情報処理システムの制御方法
JP5770753B2 (ja) 2013-01-15 2015-08-26 グーグル・インコーポレーテッド Cjk名前検出
US20150186825A1 (en) * 2013-12-30 2015-07-02 Suresh Balasubramhanya Cost and Profitability Planning System
US10127025B2 (en) * 2015-07-22 2018-11-13 Oracle International Corporation Optimization techniques for high-level graph language compilers
US10585871B2 (en) * 2016-03-04 2020-03-10 Inviso Corporation Database engine for mobile devices
US10645548B2 (en) * 2016-06-19 2020-05-05 Data.World, Inc. Computerized tool implementation of layered data files to discover, form, or analyze dataset interrelations of networked collaborative datasets

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050050092A1 (en) * 2003-08-25 2005-03-03 Oracle International Corporation Direct loading of semistructured data
JP2008243193A (ja) * 2007-02-26 2008-10-09 System Produce:Kk データ管理システム
JP2016519810A (ja) * 2013-03-15 2016-07-07 アマゾン・テクノロジーズ・インコーポレーテッド 半構造データのためのスケーラブルな分析プラットフォーム
JP2016099647A (ja) * 2014-11-18 2016-05-30 シャープ株式会社 情報処理装置
JP2017167917A (ja) * 2016-03-17 2017-09-21 日本電気株式会社 データベース管理装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
加藤 慶信 外4名: "軽い!速い! ビッグデータ 分析システムの作り方", 日経SYSTEMS, vol. 第246号/2013年10月号, JPN6017019937, 26 September 2013 (2013-09-26), JP, pages 42 - 59, ISSN: 0003956628 *

Also Published As

Publication number Publication date
JP6550448B2 (ja) 2019-07-24
US20190188289A1 (en) 2019-06-20
US11487729B2 (en) 2022-11-01

Similar Documents

Publication Publication Date Title
JP6550448B2 (ja) データ管理装置、データ管理方法、およびプログラム
US11475034B2 (en) Schemaless to relational representation conversion
EP3602351B1 (en) Apparatus and method for distributed query processing utilizing dynamically generated in-memory term maps
JP6144700B2 (ja) 半構造データのためのスケーラブルな分析プラットフォーム
US9122746B2 (en) Executing structured queries on unstructured data
WO2014010082A1 (ja) 検索装置、検索装置の制御方法及び記録媒体
KR101083563B1 (ko) 데이터베이스 관리 방법 및 시스템
JP2015099586A (ja) データ集約のためのシステム、装置、プログラム、及び方法
US11030242B1 (en) Indexing and querying semi-structured documents using a key-value store
US11468031B1 (en) Methods and apparatus for efficiently scaling real-time indexing
CN112667720A (zh) 接口数据模型的转化方法、装置、设备及存储介质
Banane et al. Storing RDF data into big data NoSQL databases
WO2013097115A1 (zh) 文件目录存储方法、检索方法和设备
Mittal et al. Efficient random data accessing in MapReduce
JP5194856B2 (ja) コンパクトな決定図を用いた効率的インデックス付け
US11144580B1 (en) Columnar storage and processing of unstructured data
JP6480495B2 (ja) データ管理装置、データ管理方法、およびプログラム
CN115495462A (zh) 批量数据更新方法、装置、电子设备和可读存储介质
Kanojia et al. IT Infrastructure for Smart City: Issues and Challenges in Migration from Relational to NoSQL Databases
CN111680072A (zh) 基于社交信息数据的划分系统及方法
US20130246479A1 (en) Computer-readable recording medium, data model conversion method, and data model conversion apparatus
JP5903372B2 (ja) キーワード関連度スコア算出装置、キーワード関連度スコア算出方法、及びプログラム
CN117349359B (zh) 一种多源异构数据库导入导出方法及系统
CN113536040B (zh) 信息查询方法、装置以及存储介质
Gao et al. Multi-dimensional index over a key-value store for semi-structured data

Legal Events

Date Code Title Description
A80 Written request to apply exceptions to lack of novelty of invention

Free format text: JAPANESE INTERMEDIATE CODE: A80

Effective date: 20180112

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20181010

A871 Explanation of circumstances concerning accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A871

Effective date: 20181010

A975 Report on accelerated examination

Free format text: JAPANESE INTERMEDIATE CODE: A971005

Effective date: 20181016

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190306

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190604

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190701

R150 Certificate of patent or registration of utility model

Ref document number: 6550448

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350