JP6617117B2 - 半構造データのためのスケーラブルな分析プラットフォーム - Google Patents
半構造データのためのスケーラブルな分析プラットフォーム Download PDFInfo
- Publication number
- JP6617117B2 JP6617117B2 JP2017094636A JP2017094636A JP6617117B2 JP 6617117 B2 JP6617117 B2 JP 6617117B2 JP 2017094636 A JP2017094636 A JP 2017094636A JP 2017094636 A JP2017094636 A JP 2017094636A JP 6617117 B2 JP6617117 B2 JP 6617117B2
- Authority
- JP
- Japan
- Prior art keywords
- schema
- data
- key
- map
- index
- 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.)
- Active
Links
- 238000004458 analytical method Methods 0.000 title description 57
- 238000003860 storage Methods 0.000 claims description 121
- 238000000034 method Methods 0.000 claims description 89
- 230000001186 cumulative effect Effects 0.000 claims description 41
- 230000004044 response Effects 0.000 claims description 12
- 238000004587 chromatography analysis Methods 0.000 claims 1
- 230000001419 dependent effect Effects 0.000 claims 1
- 230000006870 function Effects 0.000 description 56
- 238000003491 array Methods 0.000 description 31
- 238000012545 processing Methods 0.000 description 26
- 230000008569 process Effects 0.000 description 23
- 238000005034 decoration Methods 0.000 description 13
- 230000008859 change Effects 0.000 description 10
- 238000005457 optimization Methods 0.000 description 10
- 238000013459 approach Methods 0.000 description 9
- 230000008901 benefit Effects 0.000 description 8
- 235000012489 doughnuts Nutrition 0.000 description 6
- 235000012459 muffins Nutrition 0.000 description 6
- 238000000638 solvent extraction Methods 0.000 description 6
- 238000007906 compression Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 5
- 230000009471 action Effects 0.000 description 4
- 230000006835 compression Effects 0.000 description 4
- 239000000543 intermediate Substances 0.000 description 4
- 230000008520 organization Effects 0.000 description 4
- 238000005192 partition Methods 0.000 description 4
- 235000015895 biscuits Nutrition 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 238000013480 data collection Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000007667 floating Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 230000002452 interceptive effect Effects 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000006855 networking Effects 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 238000012800 visualization Methods 0.000 description 3
- 230000002457 bidirectional effect Effects 0.000 description 2
- 238000004364 calculation method Methods 0.000 description 2
- 238000005266 casting Methods 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 238000001514 detection method Methods 0.000 description 2
- 238000009826 distribution Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- JEIPFZHSYJVQDO-UHFFFAOYSA-N ferric oxide Chemical compound O=[Fe]O[Fe]=O JEIPFZHSYJVQDO-UHFFFAOYSA-N 0.000 description 2
- 230000004927 fusion Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000007774 longterm Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000013439 planning Methods 0.000 description 2
- 230000002829 reductive effect Effects 0.000 description 2
- 239000002356 single layer Substances 0.000 description 2
- 230000001052 transient effect Effects 0.000 description 2
- 230000003442 weekly effect Effects 0.000 description 2
- 241000282813 Aepyceros melampus Species 0.000 description 1
- 241000132092 Aster Species 0.000 description 1
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 102100040837 Galactoside alpha-(1,2)-fucosyltransferase 2 Human genes 0.000 description 1
- 101000893710 Homo sapiens Galactoside alpha-(1,2)-fucosyltransferase 2 Proteins 0.000 description 1
- 241000183290 Scleropages leichardti Species 0.000 description 1
- 101000882403 Staphylococcus aureus Enterotoxin type C-2 Proteins 0.000 description 1
- 241001080526 Vertica Species 0.000 description 1
- 239000008186 active pharmaceutical agent Substances 0.000 description 1
- 238000007792 addition Methods 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 238000007630 basic procedure Methods 0.000 description 1
- 239000006227 byproduct Substances 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002860 competitive effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000012517 data analytics Methods 0.000 description 1
- 238000013499 data model Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000006837 decompression Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 230000008451 emotion Effects 0.000 description 1
- 238000003306 harvesting Methods 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 239000010410 layer Substances 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000036961 partial effect Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
- 230000008929 regeneration Effects 0.000 description 1
- 238000011069 regeneration method Methods 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000003362 replicative effect Effects 0.000 description 1
- 230000000717 retained effect Effects 0.000 description 1
- 238000012552 review Methods 0.000 description 1
- 239000010979 ruby Substances 0.000 description 1
- 229910001750 ruby Inorganic materials 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000009466 transformation Effects 0.000 description 1
- 238000012559 user support system Methods 0.000 description 1
- 210000002268 wool Anatomy 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/81—Indexing, e.g. XML tags; Data structures therefor; Storage structures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/80—Information retrieval; Database structures therefor; File system structures therefor of semi-structured data, e.g. markup language structured data such as SGML, XML or HTML
- G06F16/84—Mapping; Conversion
- G06F16/86—Mapping to a database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
Description
この出願は、2012年12月21日に出願された米国特許出願第13/725,39
9号および2011年12月23日に出願された米国仮出願第61/580,193号に
対する優先権を主張するものである。
より詳細には、ストレージおよび計算を組み込む半構造データのためのスケーラブルな双
方向データベースプラットフォームに関するものである。
のである。現在名を挙げられた発明者らの研究は、それがこの背景技術の欄に記載される
範囲内で、ならびに、そうでない場合には出願時に先行技術として資格を与えられ得ない
背景技術の記載の態様は、本開示に対する先行技術として明示的にも暗示的にも認められ
ない。
ス指定可能な持続的ストレージデバイスから成る、基礎的ストレージバックエンドと密に
集積されたクエリ実行エンジンを特徴とする。これらのデバイス(ハードディスクドライ
ブおよび/またはソリッドステートドライブ)は、(a)データが順次または無作為にア
クセスされるかどうかに著しく依存して異なるアクセス時間、(b)ブロックの粒度に設
定された固定した最小サイズを有するアクセス単位、および(c)メインメモリよりも(
数桁)著しく遅いアクセス時間によって特徴付けられる。これらの特徴は、ストレージバ
ックエンドが何の重要な計算能力も有さないという想定と共に、ストレージ管理からクエ
リ実行やクエリの最適化までデータベースシステムの設計に重要な影響を与えている。
ていた。データベース技術が性能と費用の両方を改善したことにつれて、ビジネスは、後
の分析のためにますます増える量の操作履歴およびビジネス状態を保持する必要性を理解
していた。そのような分析は、ビジネスが、それらの処理への洞察を得て、それらを最適
化するのに役立ち、それによって、競争的利点をもたらし、利益を増す。
れていることが多く、関係表に容易に適合する。データウェアハウスは、このビジネスデ
ータのオフライン分析のために構造化クエリ言語(SQL)を提供する本質的にスケーラ
ブルな関係データベースシステムであり、読み出しを主とする作業負荷のために最適化さ
れる。例えば、データウェアハウスは、Teradataや、Vertica、Gree
nplum、およびAster Dataなどの新たなベンダーのような伝統的なシステ
ムを含む。それらは、SQLインターフェース、インデックス、および高速カラム型アク
セスを提供する。
データを、周期的に、例えば毎夜または毎週、ロードされる。このデータをクリーニング
し、キュレーションし(curating)、単一スキーマに統一し、それをウェアハウ
スの中にロードする処理は、ETL(extract‐transform‐load:
抽出‐変換‐ロード)として知られる。様々なソースおよびデータが増加するにつれて、
ETL処理の複雑さもまた増加する。うまくETLを実装することは、適切なスキーマを
定義し、入力データを所定のスキーマに合致させることを含み、専門家を数週間から数カ
月間かけさせ得、変更は、実施することが困難であり得るか不可能であり得る。ETL処
理を支援するために市場には、Abinitio、Informatica、およびPe
ntahoなどの多くのツールがある。しかしながら、ETL処理は、一般に、煩雑で、
脆弱で、高価なままである。
限りで実行することを容易にさせる多数のビジネスインテリジェンスおよび可視化ツール
で爆発的に増加している。ビジネスインテリジェンスツールは、ウェアハウスデータの多
次元集計を構築し、ユーザがこのデータの種々の断片および射影を通して操作して見るこ
とを可能にする。例えば、ビジネスユーザは、製品カテゴリ、地域、および店による毎月
の売上総計を見ることを望む可能性がある。次いで、彼らは、特定のカテゴリについての
毎週の売上をより深く掘り調べること、または全国についての売上を見るために画面を上
方に送ることを望む可能性がある。多次元集計はまた、オンライン分析処理(OLAP:
online analytical processing)キューブとしても呼ばれ
得る。Business ObjectおよびCognosなどの多数のビジネスインテ
リジェンス(BI)ツールは、そのような分析を可能にし、キューブをクエリするための
Multidimensional Expressions(MDX)と呼ばれる言語
をサポートする。また、ビジネスユーザが、これらのキューブおよびデータウェアハウス
を直感的に操作することを可能にする、MicroStrategy、Tableau、
およびSpotfireなどの多数の可視化ツールがある。
界のビジネスがオンラインおよび新たなオンラインのビジネス形態を進めるにつれ、これ
らのビジネスは、GoogleやYahooなどの先導企業が氾濫させるデータの型を分
析する必要性がある。これらは、ウェブページ、ページビューのログ、クリックストリー
ム、RSS(Rich Site Summary)フィード、アプリケーションログ、
アプリケーションサーバログ、システムログ、トランザクションログ、センサデータ、ソ
ーシャルネットワークフィード、ニュースフィード、およびブログ投稿などのデータの型
を含む。
かの固有構造を有するが、構造は矛盾し得る。構造は、経時的に迅速に変化し得、異なる
ソースにわたって変動し得る。それらは、本来、表形式ではなく、ユーザがこれらのデー
タ上で動作させることを望むクラスタ化、分類、予測などの分析は、SQLで容易に表わ
されない。これらのデータの効果的な使用を行うための既存のツールは、煩雑で不十分で
ある。
ウェブクロールや検索を管理するためにGoogleに実装される技術によって着想を得
たHadoopを生じた。それの核心において、Hadoopは、それのデータを信頼性
をもって記憶するためのクラスタ化されたファイルシステム、HDFS(Hadoop
Distributed File System)、および、より複雑な分析をサポー
トするための基本的な並列分析エンジン、MapReduceを提供する。これらの実例
をはじめとして、Hadoopエコシステム(ecosystem)は、インデックス付
きの、操作可能なストア、HBase、および、MapReduceに頼る新たなクエリ
インターフェース、PigやHiveを含むように成長した。
ウェアハウスにおいて見付けられる何の最適化も無しに、クエリレイヤをHadoopの
トップ上に追加するApacheプロジェクトである。代わりに、Hiveは、(Hiv
e‐QLと呼ばれる)SQLのような言語でクエリをHadoopクラスタに対して動作
されることになるMapReduceジョブに単純に変える。伝統的なビジネスユーザに
ついてのHiveに関する3つの主な問題がある。Hiveは、標準SQLをサポートし
ないし、動的スキーマを有さない。更に、各Hiveクエリは、ソースデータの全てを再
度構文解析するMapReduceジョブを要求し、ソースデータを通した多数のパスを
要求することが多いので、Hiveは、双方向クエリを可能にするほど十分高速ではない
。
めのリアルタイムのエンジンである。それは、Hiveのシーケンスファイル上の分析を
提供し、ネストされたモデルを結局はサポートし得る。しかしながら、それは動的スキー
マを有しておらず、代わりに、ユーザが、クエリされることになるデータについて前もっ
てスキーマを依然として提供することを要求する。
を処理するためにスキーマの無いスクリプト言語を提供する。HiveのようなPigは
、すべてをマップリデュースジョブに変換する。同様に、それは、何のインデックスも活
用せず、双方向性のために十分高速ではない。
Script Object Notation)ログを分析するための(SQLのよう
な宣言型言語とは対照的に)スキーマの無い宣言型言語である。Pigのように、それは
、Hadoop上のマップリデュースプログラムにコンパイルされ、双方向的ではない速
度を含む同じ欠点の多くを共有する。
。Amazonは、クラウド内で動くHadoopのMapReduce実装に事実上等
価であり得る、Elastic Map‐Reduceを提供する。それは、Amazo
nのクラウドをベースとしたS3(Simple Storage Service)内
に記憶されたデータに作用し、結果をS3に出力する。
なサイズまでスケーリングし、任意のデータ型を記憶することができる。第2に、それは
、伝統的なウェアハウスに比べて極端に費用が低い(20倍ほども安い)。第3に、それ
は、単一ベンダーとの固定化を回避するオープンソースである。ユーザは、正しいジョブ
のための正しいツールを選び取る能力を望み、それらのジョブを行わせるためにシステム
間でデータが動くことを回避する。Hadoopはより柔軟であるが、Hadoopの使
用は、普通は見つけることが困難である深い知識を有し特殊な技術を有するアドミニスト
レータやプログラマーを必要とする。その上、Hadoopは、双方向型であるには遅す
ぎる。最も単純なクエリでさえ、実行するのに数分から数時間かかる。
された関係的または半構造データ上でSQLをベースとした分析クエリを提供する。元の
バージョンはProtoBuf形式でデータを取り扱っていた。Dremmelは、全て
のレコードのためにユーザが前もってスキーマを定義することを要求する。BigQue
ryは、Dremmelのクラウドをベースとした商業化であり、CSVおよびJSON
形式を取り扱うために拡張される。Drillは、Dremmelのオープンソースバー
ジョンである。
エリ言語(AQL:annotation query language)を使用する
半構造データを管理し分析するためのシステムである。Asterixは、標準SQLを
サポートせず、本開示によってもたらされる高速アクセスを有さない。
み、取り出されたオブジェクトのそれぞれは、(i)データおよび(ii)データを記述
するメタデータを含む。方法は、取り出されたオブジェクトのそれぞれからスキーマを推
論することによって累積スキーマを動的に生成することと、推論されたスキーマを累積ス
キーマと併合することと、を含む。方法は、取り出されたオブジェクトのそれぞれのデー
タをストレージサービス内に記憶することを含む。方法は、クエリをユーザから受信する
ことと、ストレージサービスによって記憶されたデータに基づいてクエリに応答すること
と、を含む。
提示することと、を含み、ユーザからのクエリは、関係スキーマ上で構築される。方法は
また、取り出されたオブジェクトのそれぞれのデータを(i)第1のインデックスおよび
(ii)配列インデックスの少なくとも1つ内に記憶することを含み、ストレージサービ
スは、第1のインデックスおよび配列インデックスを含む。方法はまた、第1のインデッ
クスおよび配列インデックスの少なくとも1つからのデータに基づいてクエリに応答する
ことを含む。
ンデックス内に記憶することを含み、キーと値のペアの値はデータであり、キーと値のペ
アのキーは、(i)関係スキーマと矛盾しないデータのパスおよび(ii)取り出された
オブジェクトの固有識別子に基づく。キーと値のペアのキーは、第1のインデックスが、
キーと値のペアを最初にパスによって、その後、固有識別子によって併置するように、構
築される。配列の一部であるデータは、配列インデックス内に記憶される。配列の一部で
あるデータは、第1のインデックス内に記憶されない。
はデータであり、キーと値のペアのキーは、(i)関係スキーマと矛盾しないデータのパ
ス、(ii)取り出されたオブジェクトの固有識別子、および(iii)配列内のデータ
の位置のインデックスに基づく。キーと値のペアのキーは、配列インデックスが、キーと
値のペアを最初にパスによって、次に、固有識別子によって、その後、インデックスによ
って併置するように、構築される。キーと値のペアのキーは、結合キーに更に基づく。キ
ーと値のペアのキーは、配列インデックスが、キーと値のペアを最初にパスによって、次
に、固有識別子によって、次に、結合キーによって、その後、インデックスによって併置
するように、構築される。方法はまた、補助配列インデックス内にデータを選択的に記憶
することを含む。
の値はデータであり、キーと値のペアのキーは、(i)関係スキーマと矛盾しないデータ
のパス、(ii)配列内のデータの位置のインデックス、および(iii)オブジェクト
の固有識別子に基づく。キーと値のペアのキーは、補助配列インデックスが、キーと値の
ペアを最初にパスによって、次に、インデックスによって、その後、固有識別子によって
併置するように、構築される。キーと値のペアのキーは、結合キーに更に基づく。キーと
値のペアのキーは、補助配列インデックスが、キーと値のペアを最初にパスによって、次
に、インデックスによって、次に、固有識別子によって、その後、結合キーによって併置
するように、構築される。
含み、ストレージサービスは、順序を保つインデックスストアを含む。方法はまた、順序
を保つインデックスストア内に配列インデックスを記憶することを含む。関係スキーマは
構造化クエリ言語(SQL)スキーマであり、クエリはSQLクエリである。クエリは、
Hive‐QLクエリ、jaqlクエリ、およびXQueryのうちの1つである。
。累積スキーマのオブジェクトは、取り出されたオブジェクト内のオブジェクトのフィー
ルドの発生の頻度に基づいてマップとして識別される。方法はまた、発生頻度を追跡する
間に、累積スキーマを動的に生成することを含む。累積スキーマのオブジェクトは、閾値
より下の発生の頻度の平均に応答して、マップとして識別される。
に記憶することを含み、キーと値のペアの値はデータであり、キーと値のペアのキーは、
(i)関係スキーマと矛盾しないデータのパス、(ii)データを提供する取り出された
オブジェクトの固有識別子、(iii)マップの結合キー、および(iv)マップ内のデ
ータのマップキーに基づく。キーと値のペアのキーは、マップインデックスが、キーと値
のペアを最初にパスによって、次に、固有識別子によって、次に、結合キーによって、そ
の後、マップキーによって併置するように、構築される。
の中に記憶することを含み、キーと値のペアの値はデータであり、キーと値のペアのキー
は、(i)関係スキーマと矛盾しないデータのパス、(ii)マップ内のデータのマップ
キー、(iii)データを提供する取り出されたオブジェクトの固有識別子、および(i
v)マップの結合キーに基づく。キーと値のペアのキーは、補助マップインデックスがキ
ーと値のペアを最初にパスによって、次に、マップキーによって、次に、固有識別子によ
って、その後、結合キーによって併置するように、構築される。
各要素についてのカラムを有するルート表を生成することを含む。累積スキーマを関係ス
キーマに変換することは、累積スキーマにおける各配列について関係スキーマ内に追加表
を生成することを含む。追加表は、(i)結合キーカラム、(ii)インデックスカラム
、および(iii)配列における各スカラ型データについて、値カラムを含む。
表におよびルート表に挿入することを含む。方法はまた、配列がトップレベルより下の累
積スキーマ内にネストされるときに、結合キーカラムを追加表におよび中間表に挿入する
ことを含む。累積スキーマを関係スキーマに変換することは、累積スキーマにおける各マ
ップについて関係スキーマ内に追加表を生成することを含む。
各スカラ型データについて、値カラムを含む。キーカラムは文字列型である。方法はまた
、マップが累積スキーマのトップレベルにあるときに、結合キーカラムを追加表におよび
ルート表に挿入することを含む。
合キーカラムを追加表におよび中間表に挿入することを含む。方法はまた、取り出された
オブジェクトのデータ値をキーと値のペアとして値インデックス内に選択的に記憶するこ
とを含み、キーと値のペアのキーは、(i)関係スキーマと矛盾しないデータ値のパスお
よび(ii)データ値に基づき、キーと値のペアの値は、取り出されたオブジェクトの固
有識別子に基づき、ストレージサービスは、値インデックスを含む。
その後、データ値によって併置するように、構築される。データ値が配列の一部であると
き、キーと値のペアの値は、配列におけるデータ値のインデックスに更に基づく。キーと
値のペアの値は、配列の結合キーに更に基づく。データ値がマップの一部であるとき、キ
ーと値のペアの値は、マップにおけるデータ値のマップキーに更に基づく。
ータソースから取得された生データに追加することによって、取り出されたオブジェクト
を生成することを含む。取り出されたオブジェクトについてスキーマを推論することは、
取り出されたオブジェクトのメタデータおよび取り出されたオブジェクトの要素の推論さ
れた型に基づいて実行される。取り出されたオブジェクトのそれぞれについて、取り出さ
れたオブジェクトのデータは値を含み、取り出されたオブジェクトのメタデータは、値の
名前を含む。
ON)オブジェクトである。累積スキーマは、Javaスクリプトオブジェクト表記(J
SON)スキーマである。方法はまた、取り出されたオブジェクトのそれぞれを行インデ
ックス内に選択的に記憶することを含み、ストレージサービスは、行インデックスを含む
。取り出されたオブジェクトは、キーと値のペアとして行インデックス内に記憶され、キ
ーと値のペアのキーは、取り出されたオブジェクトの固有識別子であり、キーと値のペア
の値は、取り出されたオブジェクト全体の直列化である。
かになるであろう。発明を実施するための形態および特定の例は、例示目的のために意図
されるものであり、開示の範囲を限定することを意図されないことが理解されるべきであ
る。
になるであろう。
本開示は、半構造データをクエリするためにSQL(構造化クエリ言語)に準拠したイ
ンターフェースを提供することが可能な分析プラットフォームを記載する。例示目的のた
めだけに、半構造データは、JSON(JavaScript Object Nota
tion)形式で表現される。他の自己記述式の半構造形式は、本開示の原理に従って使
用され得る。ソースデータは自己記述式である必要はない。記述は、プロトコルバッファ
のようなものと同様の場合であろうように、データとは分離され得る。タグをデータに適
用するための規則、発見的問題解決法、またはラッパー関数がある限り、任意の入力デー
タは、JSON形式に類似したオブジェクトに変えられ得る。
てが実現される。
分析プラットフォームは、その場限りの、探索的、および双方向型の分析をサポートす
るために高速のクエリ応答時間を提供する。ユーザは、クエリを送信し、その結果を見る
ためにその日または次の日の後で戻すこと無く、データにおける隠された洞察を迅速に発
見するためにこのシステムを使用することができる。分析プラットフォームは、インデッ
クス内に採集したデータの全てを記憶するインデックスストアに頼り、それは、高速応答
時間を可能にする。
インデックス(AI:ArrayIndex)が使用され、それらは以下により詳細に記
載される。これらは、パスインデックスとカラム指向型ストアの中間物である。カラム指
向型ストアのように、それらは、クエリが、関連したフィールドにあるデータだけを取り
出すことを可能にし、それによって、I/O(入出力)デマンドを減らし、性能を改善す
る。しかしながら、カラムストアとは異なり、これらのインデックスは、非常に多くのフ
ィールドを有する複雑なネストされたオブジェクトおよびコレクションに適する。他のア
クセスパターンについて、分析プラットフォームエンジンは、値インデックス(VI:V
alueIndex)を含む、以下により詳細に記載される補助インデックスを維持する
。伝統的なデータベースインデックスのように、値インデックスは、特定のフィールド値
または値の範囲について高速の対数的アクセスを提供する。これらのインデックスは、ク
エリを満たすために取り出すことが必要なデータを著しく削減し、それによって、応答時
間を改善する。
分析プラットフォームは、ユーザが、予測されたスキーマを事前に知る必要がないよう
に、データ自体からスキーマを推論し、また、データがロードされ得る前に、スキーマを
予め宣言する。半構造データは、経時的にも異なるソースにわたっても可変な構造を有し
得る。従って、エンジンは、データが到着する際に動的にデータからスキーマ(または構
造)を計算し更新する。この計算されたスキーマに基づく関係スキーマは、ユーザに提示
され、彼らはそれをクエリを構成するために使用することができる。
を要求する以前の分析エンジンとは異なり、本プラットフォームは、採集したオブジェク
トの全ての中で基礎的スキーマを計算する(または、推論する)。動的スキーマ特性が原
因で、かなりの柔軟性がある。ソースデータを生成するアプリケーションは、アプリケー
ションが進化するにつれ構造を変えることができる。分析家は、期間毎にどのようにスキ
ーマが変動するかを指定する必要性無しに、様々な期間からデータを集計しクエリするこ
とができる。その上、数か月かかり得、また、スキーマに適合しないデータの排除を要求
することが多い、グローバルスキーマを設計し実施する必要性は無い。
うな他の分析システムは、2つの主な欠点を有する。第1に、それらは、推論されたスキ
ーマをユーザに自動的に提示する代わりに、データをクエリするためにユーザにスキーマ
を知ることを要求する。第2に、それらは、全てのクエリ上でオブジェクトおよびそれら
の構造を構文解析し解釈する一方で、分析プラットフォームは、ロード時にオブジェクト
を構文解析しインデックス付けする。これらのインデックスは、上述のように、後のクエ
リが、かなり高速に動作することを可能にする。以前のエンジンは、基礎的データからの
精密で簡潔なスキーマの自動的な推論を提供しない。
分析プラットフォームは、ユーザが、既存のSQLツール(例えば、報告、可視化、お
よびBIツール)や専門技術を活用することができるように、標準SQLクエリインター
フェース(例えば、ANSI SQL2003に準拠したインターフェース)を露出する
。結果として、SQLまたはSQLツールに精通するビジネスユーザは、データウェアハ
ウスをロードする必要性無しに、半構造データに直接的にアクセスしクエリすることがで
きる。伝統的なSQLをベースとしたツールは、JSONまたは他の半構造データ形式を
取り扱わないので、分析プラットフォームは、JSONオブジェクトの計算されたスキー
マの関係ビューを提示する。それは、正規化ビューを提示し、サイズを管理することが可
能であるビューを保つための最適化を組み込む。関係ビューは、スキーマ内にいくつかの
表を提示し得るが、これらの表は、必ずしも具体化されない。
「マップ」オブジェクトを自動的に識別することができる。マップは、オブジェクト(ま
たはネストされたオブジェクト)であり、そのオブジェクトにおいて、フィールド名と値
の両方が検索され得、クエリされ得る。例えば、オブジェクトは、フィールド名として日
付と、値についてのページビューのような統計と、を含有し得る。関係ビューにおいて、
マップは別個の表に抽出され、キーがキーカラム内にあり、値が値カラム内にあるように
、データはピボットされる。
分析プラットフォームは、大きなデータセットサイズを取り扱うためにスケーリングす
る。分析プラットフォームは、独立ノードにわたって内部データ構造や処理を自動的にお
よび動的に分散することができる。
ククラウドと、Rackspaceなどの、ユーザの組織によって運営されたまたは第3
者によって提供された仮想サーバ環境のような、プライベートクラウドを含む、仮想化「
クラウド」環境のために設計され構築される。S3(Simple Storage S
ervice)、EC2(Elastic Compute Cloud)、およびEl
astic Block Storage(EBS)を含むAmazon Web Se
rvicesの種々の構成要素が活用され得る。分析プラットフォームは融通がきき、そ
れは、オンデマンドで任意のサイズに拡大縮小できることを意味し、Amazon S3
などの長期ストア上にそれの内部データ構造を記憶することによって休止状態にすること
ができる。分析プラットフォームはまた、マルチテナンシーおよびマルチユーザサポート
を有する。
、クエリエクゼキュータ、およびストレージサービスを有するサービスをベースとしたア
ーキテクチャを使用する。より多くのデータセットをサポートするように分析プラットフ
ォームエンジンをスケーリングすることは、より高速な応答を提供し、より多くのユーザ
をサポートし、実行エンジンは並列化され、ストレージサービスは独立の低費用のサーバ
ノードにわたって分割される。これらのノードは、ホスト型環境における現実のサーバま
たは仮想サーバとすることができる。エクゼキュータおよびストレージサービスは結合解
除されるので、それらは独立してスケーリングされ得る。この結合解除、スケールアウト
アーキテクチャは、ユーザが、AWSのようなクラウド環境が提供するストレージおよび
計算についての融通性をオンデマンドに活用することを可能にする。
タ構造(インデックスおよびメタデータ)は、使用中ではないときにシステムを休止状態
にするために、Amazon S3のような長期ストレージに移され得、それによって、
費用を減らす。
分析プラットフォームは、それの内容をHDFS(Hadoop Distribut
ed File System)、Amazon S3(Simple Storage
Service)、およびMongoDBなどの非SQLストアのようなリポジトリか
らのソースデータと自動的に同期させ、それによって、そのソースデータを複製するよう
に構成され得る。これらのソースは、分析プラットフォームが変更したデータを採集する
ことができるように、変更、追加、および更新のために連続的に監視され得る。これは、
クエリ結果が比較的最新であることを可能にする。
分析プラットフォームは、ソース内に現れるデータに応答して以下のアクション、すな
わち、(1)データから統一された半構造(JSONなどの)スキーマを推論し、(2)
スキーマについての関係ビューを生成し、(3)物理インデックスにデータをポピュレー
トし、(4)そのインデックスを活用するクエリを実行することを取る。アクション1、
2、および3の一部または全ては、データソースからデータを通す単一パスだけを可能に
するようにパイプライン化され得る。
JSONは、人気上昇中の自己記述型の、半構造データ形式であり、インターネット上
のデータ交換にごく普通に使用される。再び、JSONが例示のために、およびJSON
形式を使用する後の例のための文脈を提供するために、ここに記載されるが、本開示はJ
SONに限定されない。
に異なる型、すなわち、数字、文字列、配列、オブジェクト等の対応する値から成る。J
SONオブジェクトはネストされ得、フィールドは、多値、例えば、配列、ネストされた
配列等とすることができる。明細は、http://JSON.orgで見付けられ得る
。追加的な詳細は、http://tools.ietf.org/html/draf
t‐zyp‐json‐schema‐03で利用可能な、2010年11月22日の“
A JSON Media Type for Describing the Str
ucture and Meaning of JSON Documents”、IE
TF(Internet Engineering Task Force)draft
‐zyp‐json‐schema‐03において見付けられ、これらについては本明細
書では引用している。更なる型を含むためのJSONの一般化、例えば、BSON(Bi
nary JSON)がある。その上、XML、Protobuf、Thrift等のよ
うな他の半構造形式はすべて、JSONに変換され得る。XMLを使用する場合、クエリ
は、SQLの代わりにXQueryに準拠し得る。
{ ”player”: { ”fname”: ”George”, ”lname”
: ”Ruth”, ”nickname”:
”Babe”}, ”born”: ”February 6, 1985”,
”avg”: 0.342, ”HR”: 714,
”teams”: [ { ”name”: ”Boston Red Sox”, ”
years”: ”1914−1919” },
{ ”name”: ”New York Yankees”, ”years”: ”
1920−1934” },
{ ”name”: ”Boston Braves”, ”years”: ”193
5” } ] }
野球データにおいて、以下のオブジェクトが見付けられ得る。
{ ”player”: { ”fname”: ”Sandy”, ”lname”:
”Koufax”}, ”born”:
”December 30, 1935”,
”ERA”: 2.76, ”strikeouts”: 2396,
”teams”: [ { ”name”: ”Brooklyn / LA Dodg
ers”, ”years”: ”1955− 1966” } ] }
述する。このスキーマは、フィールドの名前、対応する値についての型、およびネスト化
関係を含む。それ故、上記2つのオブジェクトについてのスキーマは、
{ ”player”: { ”fname”: string, ”lname”:
string, ”nickname”: string
}, ”born”: string, ”avg”: number, ”HR”:
number, ”ERA”: number,
”strikeouts”: number,
”teams”: [ { ”name”: string, ”years”: st
ring } ] }
であることになる。
、より完全な明細は、http://JSON‐schema.orgで利用可能なJS
ONスキーマである。例えば、JSONスキーマにおける型は、文字列または“int.
”のような引用符に一般に含まれる。この開示における簡潔性および可読性のために、引
用符は省略されることになる。
葉を有するツリーとして見られ得る。オブジェクトまたはスキーマにおけるパスは、この
ツリーにおけるパス、例えば、“player.fname”、“teams[].na
me”である。
ユーザがデータセットの質問をすることができる前に、彼らは、スキーマ、すなわち、
どのフィールドまたは次元がクエリのために利用可能であるかを知る必要がある。多くの
場合において、分析家は、データを生成することを担当しないので、彼らは、何がレコー
ドされていて利用可能であるかに気付いていない。例えば、上記野球例において、分析家
は、打者だけがコレクションにおいて観察されている場合、“ERA”フィールドが利用
可能であったことを知り得ない。従って、分析プラットフォームは、採集したデータから
統一されたスキーマを計算し(または、推論し)、分析家がクエリを定式化する際に支援
するためにスキーマの関係ビューを提示する。
たスキーマを作り出すことを目的とする。一般に、精密さは、スキーマが、観察されたか
採集したデータにおける全ての構造を表現することを意味し、まだ見られていない構造を
許可しない。簡潔さは、スキーマが十分に小さいので、人間によって読み取られ解釈され
得ることを意味する。
「現在の」スキーマで開始し、新たなオブジェクトが採集されたときにスキーマを増やす
ことである。単純に、新たなスキーマ(S_new)に到着するように新たなオブジェク
ト(O_new)のスキーマ(type)と現在のスキーマ(S_curr)を併合する
。
S_new=merge(S_curr,type(O_new))
ジェクト、および配列を折り畳み、新たなものが現れるときにそれらを追加する。これは
、以下に更に詳細に記述される。
以下の例のいくつかは、Firehoseとして呼ばれる、Twitterからのデー
タストリームの出力に似ているデータを使用する。TwitterのFirehoseは
、ツイート“tweeted(ツイート済)”およびそれらのツイートについてのメタデ
ータ、例えば、ユーザ、位置、トピック等)を表現するJSONオブジェクトのストリー
ム(終わりのないシーケンス)を与える。これらのツイートは、現代のウェブフレームワ
ーク(例えば、Ruby on Rails(ルビーオンレイルズ))、モバイルアプリ
ケーション、センサおよびデバイス(電力計、サーモスタット)等によって生成されたも
のなどの、多くの他の型のイベントログデータに類似する。Twitterデータに類似
するが、以下の例は、説明目的のために、実際のTwitterデータから逸れる。
を単純に推論する。例えば、以下のオブジェクトを考える。
{ ”created_at”: ”Thu Nov 08”, ”id”: 2663
53834,
”source”: ”Twitter for iPhone”,
”text”: ” @ilstavrachi: would love dinne
r. Cook this:
http://bit.ly/955Ffo”,
”user”: { ”id”: 29471497, ”screen_name”:
”Mashah08” },
”favorited”: false}
{ ”created_at”: string, ”id”: number, ”s
ource”: string, ”text”: string,
”user”: { ”id”: number, ”screen_name”: s
tring }, ”favorited”: boolean }
であることになる。
行することによって追加され得る。時々、フィールドは繰り返されることになるが、それ
の型は変動し、条件は型多様性と呼ばれる。スキーマは、型多様性を表現するために同じ
キーで多数の属性を使用する。
ルド型を変え得る。具体例として、本来、数字であった、ツイートを識別する“id”フ
ィールドを考える。しかしながら、ツイートの数が増えるにつれ、一定のプログラミング
言語は、そのような多くの数を取り扱うことができず、従って、“id”フィールドは、
文字列に変更されている。従って、次の形式の新たなレコード、
{ ”created_at”: ”Thu Nov 10”, ”id”: ”266
353840”,
”source”: ”Twitter for iPhone”,
”text”: ”@binkert: come with me to @ilst
avrachi place”,
”user”: { ”id”: 29471497, ”screen_name”:
”Mashah08” },
”retweet_count”: 0 }
を見たことを想定する。
現れているので、スキーマは以下のように拡張される。
{ ”created_at”: string, ”id”: number, ”i
d”: string, ”source”:
string, ”text”: string,
”user”: { ”id”: number, ”screen_name”: s
tring },
”retweet_count”: number }
2度現れることに留意する。時々、ネストされたオブジェクトの構造は変動する。例えば
、ユーザについてのより多くのプロフィール情報、
{ ”created_at”: ”Thu Nov 10”, ”id”: ”266
353875”,
”source”: ”Twitter for iPhone”,
”text”: ”@binkert: come with me to @ilst
avrachi place”,
”user”: { ”id”: ”29471755”, ”screen_name
”: ”mashah08”,
”location”: ”Saratoga, CA”, ”followers_c
ount”: 22 },
”retweet_count”: 0 }
を追加したことを想定する。
ーザ)”ネスト化スキーマを再帰的に併合する。
{ ”created_at”: string, ”id”: number, ”i
d”: string, ”source”:
string, ”text”: string,
”user”: { ”id”: number, ”id”: string, ”s
creen_name”: string, ”location”: string,
”followers_count”: number },
”retweet_count”: number }
空のオブジェクトまたはヌルフィールドは、JSONレコード内に存在し得る。例えば
、人間の座標(緯度および経度)についてのレコードは、
{ ”coordinates”: {} }
であり得る。
スキーマは、同一型、
{ ”coordinates”: {} }
を有する。
厳密に言えば、{}はインスタンスと呼ばれ、型はオブジェクトである。この開示におけ
る例および説明は、説明のし易さのために厳密なJSONと異なる。
{ ”geo”: null }
は、同一型、
{ ”geo”: null }
を有する。
を適用することによって埋められる。例えば、レコード、
{ ”coordinates”: {} }
{ ”coordinates”: {”type”: ”Point”} }
は、スキーマ
{ ”coordinates”: {”type”: string} }
を作り出すことになる。
{ ”geo”: null }
{ ”geo ”: true }
は、スキーマ、
{ ”geo ”: boolean }
を作り出すことになる。
ツイートは、ハッシュタグ(強調されたトピックの語)、URL、および他のTwit
terユーザの言及などのアイテムを含有することが多い。TwitterのFireh
oseは、例えば、ツイートのJSONオブジェクトに含めるためにこれらのアイテムを
自動的に構文解析し抽出し得る。以下の例では、ハッシュタグメタデータは、配列のため
のスキーマがどのように推論されるかを例示するために使用される。
ットのリストの抽出およびレコードを考える。
”#donuts #muffins #biscuits”
それらのオフセットは、以下のような配列で表現され得る。
{ ”offsets”: [0, 8, 17] }
素の型を含有する配列としてスキーマにおいて表現される。それ故、上記オブジェクトに
ついてのスキーマは、
{ ”offsets”: [number] }
である。
場合において、ツイートオブジェクトは、以下のように、配列においてハッシュタグおよ
びオフセットの両方を列挙し得る。
{ ”tags”: [0, ”donuts”, 8, ”muffins”, 17
, ”biscuits”] }
対応するスキーマは、配列における両方の型、
{ ”tags”: [ number, string ] }
を含むことになる。
{ ”tags”: [”donuts”, 0, ”muffins”, 8, ”b
iscuits”, 17] }
また、“tag”配列は、文字列または数字を含有することができるので、結果として生
じるスキーマは、
{ ”tags”: [ string, number ] }
である。
{ ”tags”: [”donuts”, ”muffins”, ”biscuit
s”] },
{ ”tags”: [0, 8, 17] }
ここで、“tags(タグ)”について2つのスキーマがある。
{ ”tags”: [string] } and { ”tags”: [numb
er] }
この場合において、配列は同じ深さにあり、上記のように同じスキーマを生むために併合
され得る。
{ ”tags”: [ string, number ] }
{ ”tags”: [string, number] }
{ ”tags”: [number, string] }
これは、型のリストがセットとして処理されることが原因である。配列要素についての型
は、可能であれば併合され、併合は、配列の内側でオブジェクトと配列について更に実行
される。種々の他の実装では、(配列およびオブジェクトの両方における)型の順序およ
び型間の従属性が保持され得る。しかしながら、これは、スキーマをそれほど簡潔にさせ
得ない。
ネストされたオブジェクトを例示するために、オフセットの始まりと終わりの両方が以
下のようにレコードされることを想定する。
{ ”tags”: [{ ”text”: ”donuts”, ”begin”:
0 }, { ”text”: ”donuts”, ”end”: 6 }]}
結果として生じるスキーマは、
{ ”tags”: [{”text”: string, ”begin”: num
ber,
”end”: number }] }
である。
示されるように、オブジェクト型は、別個に配列要素を型付ける代わりに併合される。
{ ”tags”: [ [ ”donuts”, ”muffins” ], [0,
8] ] } ==>
{ ”tags”: [[string], [number]]},
において、スキーマは、
{ ”tags”: [[string, number]] }
に更に減る。これは、スキーマの精密さとスキーマの簡潔さとの間で本開示の種々の実装
においてなされるトレードオフである。
記のように埋められるので、以下のスキーマ削減例が可能である。
{ ”parsed”: { ”tag”: {}, ”tag”: { ”offse
t”: number } } }
=> { ”parsed”: { ”tag”: { ”offset”: numb
er }}
同様に、配列に併合規則を使用すると、以下のスキーマ削減がなされる。
{ ”tags”: [[], [ number ]] } => { ”tags”
: [[ number ]] }
{ ”tags”: [[], [[]]] } => { ”tags”: [[[]
]] }
{ ”tags”: [[], [[]], [number]] } => { ”t
ags”: [[[]], [number]]} => { ”tags”: [[[
], number]]] }
前のスキーマからの新たなスキーマおよび新たなオブジェクトを生成するために、分析
プラットフォームは、まず、新たなオブジェクトを型付けする(すなわち、新たなオブジ
ェクトについてスキーマを計算する)。この手順は、任意の特定の実装を記述すること無
く、型付けについて標準的な意味論を指定することが意図される。以下の記述では、変数
v、w、v_i、w_jは、任意の有効なJSON値の範囲にわたる一方、j、k、j_
m、k_nは、有効な文字列の範囲にわたる。型付けについての基礎的な規則は、
type (scalar v) = scalar_type of v
type ( { k_1 : v_1, ... k_n: v_n }) =
collapse ( { k_1 : type(v_1), ..., k_n
: type(v_n) })
type ( [ v_1, ..., v_n ] ) =
collapse ( [ type(v_1), ..., type(v_n)
] )
である。
う数字または“a”という文字列)から直接的に推論されることを単純に述べる。第2お
よび第3の規則は、折り畳み関数を使用してオブジェクトおよび配列を再帰的に型付けす
る。
の内側でオブジェクト、配列、および共通型を併合する。それは、スカラ型に到達するま
で再帰的に続く。オブジェクトの場合、折り畳み関数は、
collapse ( { k_1 : v_1, ..., k_n: v_n })
:
while k_i == k_j :
if v_i, v_j are scalar types and v_i
== v_j OR
v_i, v_j are objects OR v_i, v_j a
re arrays:
replace { ..., k_i : v_i, ..., k_j
: v_j, ... }
with { ..., k_i : merge (v_i, v_
j ), ... }
である。
collapse ( [ v_1, ..., v_n ] ) :
while v_i, v_j are scalar types and v_
i == v_j OR
v_i, v_j are objects OR v_i, v_j are
arrays:
replace [..., v_i, v_j, ...]
with [..., merge (v_i, v_j ), ..
.]
である。
組み合わせるかを記述する。オブジェクトの場合、併合は、共通フィールドを折り畳むた
めに、単純に折り畳みを再帰的に呼び出す。
merge (v, v) = v
merge ({}, { k_1 : v_1, ..., k_n : v_n }
) = { k_1 : v_1, ..., k_n: v_n
}
merge ( { j_1 : v_1, ..., j_n: v_n }, {
k_1 : w_1, ..., k_m: w_m } )
= collapse ( { j_1 : v_1, ..., j_n: v_
n, k_1 : w_1, ..., k_m: w_m
} )
merge ([], [v_1, ..., v_n] ) = [v_1, ...
, v_n]
merge([v_1, ..., v_n], [w_1, ..., w_m] )
= collapse ( [v_1, ..., v_n, w_1, ...,
w_m] )
である。
merge ( { ”coordinates”: {} }, { ”coordi
nates”: null },
{ ”coordinates”: [] } )
= { ”coordinates”: {}, ”coordinates”: []
, ”coordinates”: null }
数字9が値であるのと全く同じように、JSONヌルは値である。関係において、NUL
L(ヌル)は、指定された値が無かったことを示す。SQLでは、ヌルは、tags<n
ull>:booleanとして提示され、ここで、ブール値は、ヌルが存在する場合に
は真であり、そうではない場合にはNULLである。SQLユーザのためにスキーマを簡
略化するために、coordinates<null>カラムは、ユーザがJSONヌル
をSQLヌルから区別することを必要としない場合には省略され得る。
上記の簡単な規則を用いて、深くネストされたJSONレコードを型付けることが可能
である。例えば、ウェブページについてのページビュー統計を表現する複雑な仮定的レコ
ードを考える。
{ ”stat”: [ 10, ”total_pageviews”, { ”co
unts”: [1, [3]],
”page_attr”: 7.0 }, { ”page_attr”: [”i
nternal”]} ]}
以下のスキーマが作り出されることになる。
{ ”stat”: [number,
string,
{ ”counts”: [number, [number]],
”page_attr” : number,
”page_attr” : [string]
}] }
に使用され得る。この形式は、標準化され、追加メタデータ(例えば、オブジェクトがマ
ップであるかどうか)を組み込むために容易に拡張され得る。しかしながら、それはかな
り冗長であり、スペース的に非効率であり、従って、それは、この開示における例のため
に使用されない。例えば、JSONスキーマ形式では、上記スキーマは以下のように表現
される。
開発者および分析家は、多くの異なる目的のためにJSONオブジェクトおよび配列を
使用することができる。特に、JSONオブジェクトは、オブジェクトとしても「マップ
」としても使用されることが多い。例えば、開発者は、フィールドが日付であり、値がペ
ージビューのような収集された統計である、オブジェクトを生成する可能性がある。別の
例は、フィールドがユーザidであり、値がプロフィールである場合である。これらの場
合では、オブジェクトは、静的オブジェクトではなくて、むしろマップデータ構造に近い
。とても多くの可能なフィールド名があり、フィールド名は動的に生成されるので、ユー
ザは、可能なフィールド名を必ずしも知っているとは限らない。結果として、ユーザは、
彼らが値をクエリするのと同じように、フィールドをクエリすることを望み得る。
きる。分析プラットフォームは、マップを識別するために発見的問題解決法を組み込み、
また、ユーザが、ネストされたオブジェクトのどれがマップとして処理されるべきである
かおよび処理されるべきではないかを指定することを可能にする。オブジェクトをマップ
としてタグ付けすることは、装飾と呼ばれる。
必要はない。装飾は、第2のパス上で後で、あるいは、更なるデータが採集された後に実
行され得る。加えて、マップは、必要に応じて、単純にオブジェクトに返還され得る。
として処理される。これは、オブジェクトに“obj_type”:objectで注釈
を付けることによって、JSONスキーマにおいて明示的に示され得る。以下の例におい
て使用される省略表記はO{}である。
ブジェクト(コンテナ)と比べて比較的まれに発生するフィールドを探す。マップのため
に、省略表現M{}が使用される。
タセット内に頻度Fで発生するオブジェクト(またはネストされたオブジェクト)を考え
る。v_iをオブジェクトにおけるフィールドiの頻度とし、Nを(それの型とは無関係
に)オブジェクトの固有フィールドの数とする。割合(合計(v_i)/N)/Fは、コ
ンテナの頻度に対する平均フィールド頻度の割合である。この割合が、ユーザが構成可能
であり得る0.01などの閾値より下である場合には、含有オブジェクトは、マップとし
て指定される。種々の実装において、JSONスキーマにおける空のオブジェクトは、マ
ップとして処理される。
ソースデータセットにおけるJSONオブジェクトのスキーマが推論された後、分析プ
ラットフォームは、SQLユーザおよびSQLをベースとしたツールに露出され得る関係
スキーマを作り出す。目標は、JSONスキーマにおける含有関係を表現する簡潔なスキ
ーマを生成する一方で、ユーザに標準SQLの能力を与えることである。この関係スキー
マは、装飾されたJSONスキーマから作り出され、基礎的半構造データセット上のビュ
ーである。変換を実行するための一般化手順を記述する前に、どのようにJSONスキー
マが関係ビューに変換されるかについてのいくつかの例が、ここに提示される。
呼ばれ、とはいえ、それは、例えば、ソースコレクションの名前に、そのような名前が存
在する場合には、置換され得る。スペースおよび可読性の利益のために、型名文字列、数
字、およびブールは、str、num、およびboolに短縮されている。
って名付けられた別個の関係に「正規化」される。サブオブジェクトを表現する新たな表
におけるカラム“Root.user”.“id_jk”は、カラム“Root.use
r”(表“Root”における“user”カラム)のための外部キーである。型は、そ
れを他のカラムから区別するために「結合キー」として指定されるが、実際の実装では、
join_key型は典型的には整数である。
ジェクトは、リツイートしたユーザのプロフィールを含む、リツイートされた状態オブジ
ェクトを含み得、結果として、以下のスキーマになる。
および“Root.retweeted_status.user”は、全て異なる表に
分離されることに留意する。
ネストされたオブジェクトの関係では、メインの表における行からネストされたオブジ
ェクトについての表における行に1対1関係があることが多い。結果として、これらは、
カラム名についてドット付き表記を使用する単一の表に1対1に折り畳まれ得る。
に平坦化された、または別個の(平坦化されない)関係スキーマは、基礎的データを修正
すること無く、分析プラットフォームによって所望される際にユーザに提示され得ること
に留意する。唯一の限定は、ユーザが、矛盾する表定義を提示されないことである。
マップ
のカラムを含み得る。加えて、ユーザは、フィールド名をクエリすることを望み得、例え
ば、彼らは、12月における平均ページビューを見付けることを望み得る。
トについての表は、「ピボットされ」得る。例えば、ウェブサイト上の各ページについて
の種々のメトリック(metric)(毎日のページビュー、クリック、費やされた時間
等)の追跡を保持するために、以下のスキーマを考える。
ことを示す外部キーである。1年に値するページビューの場合、表“Root.metr
ic”において365個のカラムを有する代わりに、2個だけがある。“key”カラム
はフィールド名を記憶し、“val”カラムは値を記憶する。例えば、上記スキーマの場
合、データベースは、
”www.noudata.com/jobs”(page_id284)について、こ
れらのレコードを含有し得る。
が、カテゴリとカテゴリの強さを示すスコアの両方を含有する感情を表現することを想定
する。
関係に追加され得る。他の“val”カラムが、示されるように、カラム名を区別するた
めにそれらの型と共に同様に添えられ得る。
任意の他のカラムであることになるように、述語および関数をキーカラムに適用すること
ができる。
有した場合、結果として生じるJSONスキーマは、空のオブジェクトを含むことになる
。例えば、このスキーマにおける最後のフィールド(“user”)を見る。
して以下の関係スキーマになる。
意する。しかしながら、この設計は、Rootにおける各レコードが、結合キーを既に割
り当てられていることになるので、新たなオブジェクトが採集される際にスキーマが変わ
る場合、カラムを後で追加することを簡単にさせる。
配列は、マップに類似して処理されるので、スキーマ変換はかなり類似する。主な違い
は、マップの文字列“key”フィールドが、配列インデックスに対応する整数型(in
t)の“index”フィールドに置換されることである。簡単な例は、
とに留意する。空の配列の場合、別個の表は、“index”カラムだけで、しかしなが
ら“val”カラム無しで、生成され、その“val”カラムは、配列の内容が一旦観察
され型付けされると、後で追加され得る。
上記型推論および関係スキーマへの変換手順は、JSONにおいて利用可能である基本
型に頼る。いかなる型システムが選択されても、同じ手順が、その型システムに等しく適
用される。換言すれば、分析プラットフォームは、アトミックスカラ型が値から推論され
得る限り、整数、浮動小数、および時間のようなより狭いスカラ型を推論することができ
る。BSONおよびXMLは、そのような拡張された型システムを有する。その上、種々
の発見的問題解決法(正規表現など)が、日付や時間などのより複雑な型を検出するため
に使用され得る。
まで関係ビューについて見られた最も具体的な型に変換される。例えば、整数だけがフィ
ールド“freq”について見られる場合には、数字型は、“freq”についての関係
スキーマにおける整数に変換されることになる。同様に、整数と浮動小数の両方が観察さ
れている場合には、関係スキーマは、“freq”カラムを浮動小数として示すことにな
る。同様に、文字列フィールドは、関係スキーマにおいて文字可変型に変換する。換言す
れば、基本JSON型より具体的な型が、追跡され得る。
を使用することである。すなわち、JSONプリミティブ型を使用する代わりに、ANS
I SQLのプリミティブ型を使用する。
ーマについて変換されるか(右側)である。ほとんどのSQLデータベースは、クライア
ントによって所望される場合に使用され得るテキストを含む追加型をサポートする。留意
:オブジェクトId(ObjectId)型はBSONに特有である。
、関係スキーマを通して実行され得、1対1関係でオブジェクト表を識別し、それらを折
り畳む。あるいは、1対1最適化は直列式に実行され得るが、これは、明瞭さのために示
されていない。ネストされたオブジェクトを有するスキーマのサブツリーが配列またはマ
ップによって「割り込まれ」ないときには、オブジェクトサブツリー全体は、サブツリー
のルートにそれらのパスによって名付けられた属性を有する単一の表に折り畳まれ得る。
マップまたはオブジェクトである属性は別個の表内にとどまるが、内に含有される任意の
サブオブジェクトは、再帰的に折り畳まれ得る。これらの原理は、ネストされたオブジェ
クトの任意の深さに適用する。
JSONおよび関係スキーマが新たなオブジェクトに応答して一旦更新されると、オブ
ジェクト内に含有されるデータは、以下に記載されるように、インデックス内に記憶され
得る。
インデックスに頼る。インデックスは、操作、すなわち、ルックアップ(プレフィックス
)、挿入(キー,値)、削除(キー)、更新(キー,値)、および範囲検索のためのge
t_next()をサポートする。そのようなインターフェースをサポートする多数のデ
ータ構造および低レベルライブラリがある。例は、BerkeleyDB、TokyoC
abinet、KyotoCabinet、LevelDBなどを含む。これらは、Bツ
リー、LSM(log‐structured merge)ツリー、およびFract
alツリーのような順序を保つ二次記憶データ構造を内部で使用する。オブジェクトID
などについて、順序を保たないインデックス(ハッシュ表など)が使用される特殊な場合
があり得る。順序を保たないインデックスを用いると、get_next()および範囲
検索を行う能力が犠牲にされ得る。
lDBは、LSMツリーを実装し、圧縮を行い、高挿入速度でデータセットに良好な性能
を提供する。LevelDBはまた、分析フレームワークについての共通使用モデルと矛
盾し得ない性能のトレードオフを行う。例えば、ログデータなどのデータを分析するとき
、データは頻繁に追加されることになるが、既存のデータは、希に変えられるか、あるい
は、決して、変えられないことになる。有利には、LevelDBは、データ削除および
データ修正の遅さを代償にして、高速データ挿入のために最適化される。
る。それ故、一定のキーの近くのキーと値のペアについて検索するとき、あるいは順序よ
くアイテムを取り出すとき、応答は、順序がばらばらでアイテムを取り出すときよりもか
なり速く戻ることになる。
スを、また、いくつかの実装では、各ソースコレクションのための2つのインデックスと
6つのインデックスとの間を維持することができる。分析プラットフォームは、関係スキ
ーマ(SQLスキーマは具体化される必要はない)上でSQLクエリを評価するためにこ
れらのインデックスを使用する。各オブジェクトは、tidによって示された固有idを
割り当てられる。2つのインデックスであって、その2つのインデックスから他のインデ
ックスおよびスキーマが再構築され得る、2つのインデックスは、ビッグインデックス(
BI:BigIndex)および配列インデックス(AI:ArrayIndex)であ
る。
BigIndex(BI)は、配列内に埋め込まれないデータ内の全フィールドを記憶
するベースデータストアである。値(val)は、col_pathおよびtidに基づ
いてキーによってBIから取り出され得る。
グメントの意義に気付いていない。換言すれば、“root.text<str>,1”
がルート表内の文字列テキストフィールドの第1の要素を意味する一方、インデックスス
トアは、区別されないマルチ文字キーを単純に見得る。簡単な例として、キーは、col
_pathおよびtidを(重要なことには、その順序で)連結することによって単純に
生成され得る。例えば、上記に実例で示された第1のキーは、“root.text<s
tr>1”としてインデックスストアに渡され得る。インデックスストアは、パス類似性
の任意の理解が原因ではなく、単純に、第1の14文字が同じであるので、第2のキー(
“root.text<str>2”)を第1のキーと併置することになる。カラム名お
よび型は、分類順序化が原因で、全てのキーの一部として記憶されるけれども、圧縮(プ
レフィックスをベースとした圧縮など)が、ストレージ費用を削減するために使用され得
る。
ムストアとは異なり、ソースデータの全てのカラムが単一構造に組み合わされる。BIア
プローチは、単一インデックスインスタンスを可能にし、また、マップ検出が遅延される
ことを可能にする。新たなフィールドは、単純にBI内にエントリとして現れるので、マ
ップをピボットしないことは、後でマップに戻される各フィールドについて多数の物理フ
ァイルを生成する物理的費用を生じさせない。
カラムファイルのように、BIは、クエリエクゼキュータが、クエリにおいて参照されな
いフィールドを含有するデータを通して掃引することをそれに強制するのではなく、クエ
リにおける興味対象のフィールドに焦点を当てることを可能にする。
配列のために正規化表からのフィールドがBIに追加されるが、配列インデックスは、
それらの対応する値からのものであることになる。代わりに、配列フィールドは、インデ
ックス情報を保持する別個の配列インデックス(AI)に追加され得、同じ配列における
エントリが、インデックスストアによって併置されることを可能にし、それは、多くのク
エリのために良好な性能をもたらす。配列値は、以下の署名を使用してAI内に記憶され
得る。
root.tag”、またはタグ配列の内側のオブジェクト内の“text”フィールド
についての“root.tag.text”である。join_keyおよびindex
は、配列の外部キーおよび値のインデックスである。tidはまた、各配列についてBI
内に別個のエントリを記憶させることを回避するために記憶される。tidは、同じオブ
ジェクト内で対応するカラムについて値をルックアップするために使用され得る。異なる
ツイートにおけるハッシュタグを表現するオブジェクトを考える。
これは、例えば、これらのフィールド上で統計(例えば、合計、平均、分散等)を実行す
るとき、特定値を見付けるとき等に有用である。
ルートオブジェクト内の配列(トップレベルの配列)の場合、tidおよびjoin_
keyフィールドは冗長であり(上記を参照)、最適化により除去され得ることに留意す
る。しかしながら、ネストされた配列の場合、別個のjoin_keyが必要とされ、余
分ではない。例えば、このJSONオブジェクト
AIは、以下のキーと値のペアを使用することを思い起こす。
ィン(muffins)が第1のネストされた配列または第2のネストされた配列の一部
であったかどうかを知る可能性がないことになることに留意する。それ故、結合キーは、
トップレベルの配列には冗長であるが、ネストされた配列の場合には冗長ではない。
これらの2つのインデックス(BIおよびAI)は、全ての採集したデータを再構築す
るのに十分であるが、それらが効率的にサポートしないアクセスパターンがある。これら
のために、オプションとして追加スペースを犠牲にして性能を改善するために生成され得
る、以下のインデックスを導入する。
。例えば、インデックス10(タグ[10])における全てのタグを戻すことは、AI2
を使用して簡単で高速である。
構築されることである。初期ローディングの間、マップは、オブジェクトとして処理され
、通常通り、BIに挿入されることになる。両方が一旦ポピュレートされると、より効率
的なクエリ処理のためにBIとMIの両方において利用可能であるエントリがある。BI
エントリは、ユーザまたはアドミニストレータがマップが装飾されないことを要求する場
合に関連したままである。関係スキーマだけが変えられることを必要とし、マップされな
いデータに対応する元のBIエントリは、次いで、クエリにおいて使用されることになる
。
どのために、マップの要素を通して繰り返すときに有用である。ページビュー統計を維持
するオブジェクトを再度考える。
は、
この順序化は、page_viewsマップ内の値が各ページについて併置されることを
可能にする一方、BIでは、値が日で併置されることになる。
加えて、補助マップインデックスが実装され得る。マップインデックスは、それの機能
性および署名、すなわち、
これは、“all the different values corespondi
ng to map key 2012‐12‐05”などの、特定のマップ要素につい
ての効率的な検索を可能にする。AI2とMI2の両方の包括的表現は、以下のように書
かれ得る。
上記インデックスは、特定のフィールドについて値をルックアップし、それらの値を通
して繰り返すのに有用であるが、それらは、クエリが特定値または値の範囲だけを探す場
合に高速アクセスを可能にしない。例えば、クエリは、“mashah08”によって書
かれたツイートのテキストを戻すことを尋ね得る。そのようなクエリを支援するために、
値インデックスは、スキーマ内のいくつかのまたは全てのフィールドについて構築され得
る。値インデックスは、データが採集された際に構築され得るか、あるいは、後で非同期
的に構築され得る。値インデックスについてのキーは、
ーに対応する値は、どこでその値についてのフィールドが発生するかに依存する。上記イ
ンデックスのそれぞれについて、それは変動する。
VIを使用すると、キー:(root.user.screen_name,“mash
ah08”)を探し、全ての関連tidを取り出すことにより、“mashah08”に
よって書かれた全てのツイートについて検索することができる。次いで、BIは、各ツイ
ートの対応するテキストを戻すために、取り出されたtidを使用して検索され得る。
インデックス、特に、値インデックスの犠牲は、追加的なストレージスペースであり、新
たなオブジェクトとしてそれらを更新するために必要とされる実行時間がシステムに追加
される。スペースまたは更新オーバーヘッドに起因して、ユーザは、これらが原因で、全
ての可能なパスをインデックス付けることを望み得ない。従って、ユーザは、どのパスを
VIにおいてインデックス付けるかを指定することができる。
(伝統的な行をベースとしたストアにおけるレコードを要求することに類似して)全て
の採集したオブジェクトの再生成を容易にするために、行インデックス(RI)が実装さ
れ得る。行インデックスは、キーと値のペア、
ジェクトの内部表現のために使用されるツリー構造などの任意の他の直列化形式として記
憶され得る。VIに関して上述した2つのツイートの場合、対応するRIエントリは、
になるタプルであることに留意する。これらのタプルは、それ自体はストレージエンジン
において必ずしも具体化されない。すなわち、これは、基礎的データ上で単純に仮想ビュ
ーであり得、描写されるように物理的に記憶され得ない。
ることを可能にするためにパイプライン化され得、BI、AI、およびRIをロードし、
JSONスキーマを計算する。他のインデックスは、非同期的に構築され得、所望された
通りに有効にされたり無効にされたりし得る。
分析プラットフォームは、サービス指向であるように設計される。種々の実装において
、5つの主なサービス、すなわち、プロキシ、メタデータサービス、クエリエクゼキュー
タ、ストレージサービス、および採集サービスがある。
PI(遠隔手順呼び出し)だけを通して通信するので、サービスは、多重化され得、独立
してそれぞれ共有され得る。例えば、多数のプロキシは、エクゼキュータ毎に使用され得
、また、多数のエクゼキュータは、ストレージサービス毎に使用され得る。メタデータサ
ービスはまた、エクゼキュータの多数のインスタンスおよびストレージサービスにわたっ
て共有され得る。
パブリックインフラストラクチャにおける仮想マシンインスタンス内の個々の部分を動か
すことができる。これは、これらのサービスを独立的に中断してスケーリングすることを
可能にする。これは、デマンドの変動に基づいてサービス容量を調整することによって費
用を削減するのに有用である。例えば、パブリッククラウドの融通性が、高速の夜通しの
ローディングのために採集サービスを高度に並列化するように使用され得る一方、実行お
よびストレージサービスを毎日のクエリ作業負荷についてサイズが削減されるよう維持す
る。
tabase Connectivity)、libpq、JDBC(Java Dat
abase Connectivity)、SSL(secure sockets l
ayer)等の、1つ以上の標準プロトコルをサポートする。ゲートウェイは、ファイア
ウォール、認証サービス、および内部サービスのための制御の場所としての機能を果たす
。例えば、クライアント接続(ネットワークソケットなど)は、プロキシでオープンに保
たれ得る一方、実行をサポートし、ストレージサービスは、費用を節約するために中断さ
れる。クライアント接続が再びアクティブになると、必要とされたサービスは、比較的短
い始動待ち時間でオンデマンドに呼び起こされ得る。
る。それは、スキーマ、ソース情報、分割情報、クライアントユーザ名、キー、統計(ヒ
ストグラム、値分布等)、および各サービスの現在の状態についての情報(インスタンス
の数、IPアドレス等)を含むメタデータを記憶する。
。加えて、クエリエクゼキュータは、多くの関数をストレージサービスにプッシュダウン
することができる。種々の実装において、ストレージサービスは、結果をフィルタにかけ
るために、述語およびUDF(ユーザが定義した関数)を評価し、(例えば、オブジェク
トを再構築するために)局所的結合を評価し、プッシュダウンされた結合(例えば、ブロ
ードキャスト結合)を評価し、局所的集合を評価することができる。
プローチでは、ストレージサービスの非常に多くのインスタンスまたは分割が生成され、
採集されたオブジェクトは分割の間に分けられる。各分割は、単にそれが単一の全体的イ
ンスタンスであるかのように、インデックスの各型を記憶する。しかしながら、各分割は
、単に、採集されたデータのサブセットをインデックス付ける。
、tidによってオブジェクトを分割し、局所的インデックス内にそれらのそれぞれのエ
ントリを記憶することである。このようにして、採集されたオブジェクトは、クエリがオ
ブジェクトの多数の部分に頼る場合、かなりのネットワーク帯域幅を消費し得る、異なる
インスタンスにわたって分割されない。tidは、ハッシュ割り当て、ラウンドロビン、
または範囲をベースとした割り当てを含む多くの手法で割り当てられ得る。これらの特定
の割り当ては、全てのインスタンスにわたって直近のデータを分散し、それによって、負
荷を分散する。
ルド値の組み合わせ)によって分割することである。代替の分割フィールド(カラム)は
、他の表またはコレクション、例えば、ユーザプロフィールで局所的結合を実行すること
を便利にする。分割手法は、ハッシュ分割であり得、あるいはサンプリングおよび範囲分
割を使用し得る。前者は、効率的なポイントルックアップのために使用され、後者は、効
率的な範囲検索をサポートするために使用される。
に再構築されることができるべきである。従って、ストレージサービス分割は、クエリ処
理の間にクロストークがなく、それらのAPI経由で実行サービスと通信する必要性だけ
がある。
ことができ、あるいは、ストレージサービスの性能を改善するために分割の数を増やすこ
とができる。ストレージサービスは、メモリ内にあるいはローカルディスク上にインデッ
クスをキャッシュすることができ、インデックスは、Amazon S3のような外部ス
トレージ上に存続することができる。この特徴は、ストレージサービスノードの停止や破
壊を可能にし、また、必要な場合いつでも、それらを再配置することを可能にする。その
上、それは、極度の融通性、すなわち、低い費用でS3に対してストレージサービスを休
止状態にし、デマンドが変動する際にストレージサービス容量を変える能力を可能にする
。
れは、クエリ演算子、例えば、結合、融合、分類、集合などを実装する。これらの演算の
多くは、ストレージサービスにプッシュダウンされ得、可能であればである。これらは、
述語、射影、射影される属性を再構築するためのカラム型結合、ならびにGROUP B
Yステートメントを用いる分配的および代数的集合関数のための部分集合を含む。
なわち、非局所的結合、再分割を必要とするGROUP BYステートメント、分類など
を計算する。エクゼキュータは、分割並列処理エクゼキュータに類似する。それは、クエ
リ実行ステップ間で再分割するために交換演算子を使用し、中間結果を流すための局所的
ストレージを利用する。多くのクエリの場合、ストレージサービス内のクエリのほとんど
を動かし、結果を収集し、任意の小さな非局所的演算を実行するために単一のエクゼキュ
ータノードだけを要求することが可能である。
採集サービスは、半構造データをそれがクエリされ得るストレージサービスにロードす
ることを担当する。ユーザは、オプションとして圧縮機構(例えば、GZIP、BZIP
2、Snappy)で圧縮される、様々なプラットフォーム(例えば、MongoDB、
Amazon S3、HDFS)から様々な形式(例えば、JSON、BSON、CSV
)でデータを提供する。基本手順は、使用される形式に関わらず当てはまる。
集タスクと、新たなデータが利用可能であるときに周期的に発生する増分採集と、に大ま
かに分けられ得る。
初期採集処理は、いくつかのステップに分けられ得る。最初に、分割は、データをチャ
ンクに入力する。ユーザは、ファイルのコレクションに、あるいは、それらのデータソー
スへの直接接続を提供することによって初期データを提供する。これらのファイルの位置
や形式は、メタデータサービス内にレコードされる。ユーザは、例えばログファイルロー
テーションに起因して、既に分割されたデータを提供し得るが、そうではない場合、ファ
イルは、並列ローディングをサポートするためにチャンクに分割され得る。これらのチャ
ンクは、典型的には約数百メガバイトであり、独立して処理される。
改行によって分離される非圧縮形式(例えば、JSONまたはCSV)の場合、単一ファ
イルは、チャンクの対象数に等しい多くの処理を使用して並列に処理され得る。処理は、
ファイル(file_size/total_num_chunks)*chunk_n
um内の適切なオフセットで開始し、次いで、復帰改行が見付けられるまで検索する。圧
縮されたデータまたはBSONのようなバイナリ形式のデータの場合、各入力ファイルは
、順次にスキャンされる必要がある可能性がある。各チャンク(ファイル、オフセット、
サイズ)の位置は、メタデータサービス内に記憶される。
この処理の一部として、2つのサービス、すなわち、採集サービスおよびストレージサー
ビスが立ち上げられる。これらの2つのサービスは、作業をするための複数サーバを利用
することができる。2つのサービスはまた、任意の所与のマシン上に併置され得る。採集
サービスは、一時的であり、採集処理の間にだけ使用される一方、ストレージサービスは
、実際のデータを保持し、持続的である必要がある。採集に関係のあるサーバは、ストレ
ージサービスサーバにデータを送信し、採集サーバの数は、ストレージサーバの数と独立
しており、ここで、その数は、各サービスのスループット間の不均衡を最小限にするため
に選択される。チャンクは、採集サーバ間で分割される。各採集サーバは、それに割り当
てられた各チャンクについて以下のステップ、すなわち、(i)構文解析と型推論、(i
i)ストレージサービスとの通信、ならびに(iii)局所的スキーマおよび統計の計に
ついて担当する。
、全てのソース形式(JSON、BSON等)について使用され得る。入力形式に従って
、型推論がまた、実行され得る。例えば、JSONは日付の表現を有さないので、それは
、文字列として日付を記憶するのが一般的である。日付は非常に一般的であるので、それ
らは、ユーザが日付を使用するクエリを発行することができるように、採集の間に検出さ
れる型の例についてのものである。CSV入力ファイルの場合、カラムは型付けされない
ので、整数などの基本型もまた、検出される必要がある。
が、ストレージサービスに送信される。このタスクは、ツリーの前順走査の形態を取る。
ストレージサービスは、インデックス(BI、AI等)のそれぞれに記憶するために値を
決定することと、タプルidおよび結合キーを生成することと、を担当する。キー生成は
、キーが順次に生成され得るようにストレージサービスにゆだねられ、それは、基礎的イ
ンデックスストアに対する採集性能を改善する。
。スキーマは、単一採集マシンによって見られるレコードを反映することになり、異なる
マシンは、異なるスキーマを有し得る。
有用である統計が維持される。これらは、各属性が現れる回数ならびにバイトでのそれの
平均サイズのようなメトリックを含む。例えば、以下のレコード
tは、3の数で、id:stringは、2の数で注釈を付けられ得る。各採集マシンは
、それが計算したスキーマおよび統計をメタデータサービス内に記憶する。
ンによって使用され、ユーザに提示されることになる。これは、メタデータサービスから
部分的スキーマを読み取り、上記方法を使用してそれらを併合し、結果をメタデータサー
ビス内に戻して記憶する単一処理を使用して、達成され得る。スキーマの数は、採集マシ
ンの数に限定されるので、この処理は、性能に重要ではない。
がMI内にマップとして記憶されるべきであるかを決定するために、メタデータサービス
内に記憶された統計と共に使用され得る。これはクエリ処理に必要ではないが、それは、
いくつかのクエリをより自然に表現させ、効率を改善することを思い起こす。マップが一
旦識別されると、各ストレージサーバは、どの属性がマップであるべきかを識別するメッ
セージを受信する。ストレージサーバは、次いで、これらのカラムをスキャンし、それら
をMIに挿入する。
いくらかのユーザは、前もってそれらのデータの塊をロードし得るが、ほとんどは、周
期的に新たなデータを経時的に、多くの場合、規則的(例えば、毎時または毎日の)処理
の一部として、ロードすることになる。このデータの採集は、初期採集に概ね類似する。
新たなデータは、チャンクに分割され、スキーマはチャンク毎に計算され、局所的スキー
マは、メタデータサービス内に維持された大域的スキーマと併合される。
ータプラットフォームに依存する。例えば、S3ファイルの場合、最も簡単なケースは、
S3バケットの変化を検出することである。特殊処理は、新たなキーと値のペア(すなわ
ち、新たなファイル)についてバケットを周期的にスキャンし、メタデータサービスに見
付けられる任意のものを追加する。一定数の新たなファイルが見付けられたか一定期間が
経過した後、処理は、データをロードするための新たな採集処理を立ち上げる。
と呼ばれる特殊コレクションにおいて記憶され得る。oplogは、複製のために内部で
MongoDBによって使用される書き込み操作の矛盾しないレコードを提供する。op
logは、新たなレコードを記憶するS3内に1組の単層ファイルを生成するために読み
取られ、使用される。上記方法は、次いで、新たなデータ採集するために使用され得る。
キュメントへの更新(例えば、既存のJSONドキュメントにおける新たな属性または既
存の属性についての新たな値)の両方を取り扱うことができる。各データソースプラット
フォームは、ソースファイルにおける更新を露出することに関して異なる可能性を有する
。この型の情報を“delta”として呼び、それは、単層ファイルまたはログファイル
(例えば、MongoDB)の形態を取り得る。増分採集処理は、“delta”ファイ
ルからの情報を処理し、ストレージサービスに送信される新たなデータを生成するために
それを既存のスキーマ情報と組み合わせる。
データを採集し増分更新を行うための、ここに記載されたシステムは、ソースから全デ
ータを採集することができ、採集されることを望むデータのJSONスキーマ(または関
係スキーマ)を前もって指定することによって、サブセットだけを採集することは比較的
簡単である。これは、JSONスキーマ自体を提供することによって、あるいは、サブセ
ットを指定するクエリを提供することによって行われる。このようにして、分析プラット
フォームは、ソースデータの具体化ビューとして考えられ得る。
れるべきではないデータの一部を記述するJSONスキーマまたは関係スキーマが提供さ
れ得る。次いで、全ての将来の行のそれらの要素を単にスキップするように採集処理に告
げるその情報をメタデータサービスで記憶すればいいだけでのことである。これが、デー
タが既に採集された後に行われる場合、既に採集したデータは、単に利用不可能になり、
バックグラウンドのタスクによってガーベジコレクションをかけられ得る。このガーベジ
コレクションは、インデックスストア(例えば、LevelDB)の圧縮処理に組み込ま
れることになる。
初期採集の間にロード処理を開始するのが可能である一方、増分採集処理は、ユーザに
最初から全データをリロードさせることを防ぐために、システムにおける既存のデータを
破損させるべきではない。ファイル採集は冪等操作ではないので、id生成に起因して、
簡単な耐障害性体系が、基礎的ストレージシステムのスナップショットを取ることに基づ
いて実装され得る。
テムがある時点で矛盾しないスナップショットを取ることをサポートするときに簡単であ
り得る。このプリミティブで、増分ローディングのためのステップは、以下のようなもの
である。単一処理は、各ストレージサーバにスナップショットを局所的に取ることを導き
、全クエリをロードの期間にこのスナップショットに導く。各チャンクは、上記のように
ロードされる。完了すると、チャンクをロードすることを担当する採集サーバは、それを
メタデータサービスにおいて終了したものとして印を付ける。
、クエリを状態の更新されたバージョンにアトミックに再び導く。次いで、第1のステッ
プにおいて取られたスナップショットは捨てられ得る。故障の場合には、スナップショッ
トは、状態の標準的なバージョンになり、部分的に更新された(および潜在的に破損され
た)状態の元のバージョンは捨てられる。次いで、採集処理が再開される。追加的に、ス
トレージシステムディスクボリュームのスナップショットが、サーバ故障の場合には回復
のために使用され得る。
クエリ例
実行例を示すために、簡単なクエリ、
ードに発行する。次に、エクゼキュータノードは、どのコレクションおよびストレージノ
ードが使用のために利用可能であるかを決定するためにメタデータサービスを呼び出すク
エリ計画を生成する。エクゼキュータノードは、典型的には、計画を他のエクゼキュータ
ノードに分散させるが、ここでは、単一エクゼキュータノードだけを必要とする。
10述語およびカウント関数をプッシュダウンする。次に、ストレージノードは、サブカ
ウントを計算し、それらをエクゼキュータノードに戻す。エクゼキュータノードは、次い
で、プロキシが次の結果値をフェッチするときに結果をプロキシに戻す。
データベースシステム(例えば、PostgreSQL)のストレージエンジンは、強
く型付けされ、それは、カラム(または属性)の値の全てが、全く同じ型(例えば、整数
、文字列、タイムスタンプ等)を有する必要があることを意味する。ビッグデータ分析の
関連において、これは、かなり多くのアプリケーションが情報(属性)の特定の部分の表
現、その結果として、それらがそれを記憶するために使用するデータ型、を変えることを
必要とするので、かなりの限定である。例えば、アプリケーションは、整数を使用して特
定の属性の値を初期に記憶し得、次いで、浮動小数を使用することに切り替える。データ
ベースシステムは、そのような操作をサポートするように設計されていない。
つの関係カラムを各異なるデータ型のそれぞれについて、使用することである。例えば、
値31432および“31433”(すなわち、整数および文字列)を有する属性“us
er.id”を見た場合、別個のカラムとして“user.id<int>”および“u
ser.id<string>”を記憶することができる。単一レコードは、そのレコー
ドにおける“user.id“の型に対応するこれらのカラムの1つだけについての値を
有することになる。そのレコードのための他のカラムについての値はNULLであること
になる。
とが多い。ユーザの経験を簡略化するために、分析プラットフォームは、クエリ時間に動
的に、ユーザが使用することを意図する型を推論することができる。この目的のために、
ストレージサービスは、多数の型の追跡を保持する。例えば、ストレージサービスは、N
UMBERと呼ばれる、数字についての包括的データ型を使用し、それは、整数と浮動小
数の両方をカバーする。NUMBER型が使用されるとき、更に具体的なデータ型が、値
の一部として記憶される。例えば、属性“Customer.metric”の整数値1
0は、キーと値のペアとしてBI内に記憶され、ここで、(Customer.metr
ic,<NUMBER>,tid)がキーであり、(10,INTEGER)が値である
。同じ属性の浮動小数点値10.5は、キー:(Customer.metric,<N
UMBER>,TID)、値:(10.5,FLOAT)として記憶されることになる。
してもたらさない限り、クエリの特性(述語、キャスティング操作等)に従ってデータ型
間の動的キャスティングを実行できる。“number”はANSI SQL型ではない
が、柔軟な型付けシステムは、クライアントが、クエリコンテキストから標準ANSI
SQL浮動小数、整数、または数値型としてそれを処理することを可能にする。例えば、
クエリ、
両方を有する場合において、システムは、オプションとして、クエリ時間に整数(例えば
、31432)を単一文字列表現(例えば、“31432”)に変換し、それによって、
ユーザが、ANSI SQL型VARCHARで単一カラム“user.id”を処理す
ることを可能にする。
ute)/ISO(International Organization for
Standardization)SQL:2003が例として言及されるが、あるいは
、そうではない場合、他の実装では、他の標準、SQLと準拠するものが実現され得る。
単なる例として、露出されたインターフェースは、ANSI/ISO SQL:2011
に準拠し得る。
図1Aには、分析プラットフォームのクラウドをベースとした実装例が示される。分析
フレームワークを使用する組織のローカルエリアネットワーク(LAN)またはワイドエ
リアネットワーク(WAN)100が、インターネット104に接続する。この実装にお
ける計算ニーズおよびストレージニーズは、いずれも、クラウドをベースとしたサービス
によって提供される。示される特定の実装では、計算サーバは、ストレージサーバから分
離される。特に、計算クラウド108は、分析フレームワークに処理能力を与える複数の
サーバ112を含む。サーバ112は、離散的なハードウェアインスタンスであってもよ
いし、あるいは、仮想サーバであってもよい。
が動作する。例えば、サーバ112は、クエリエクゼキュータとストレージサービスの両
方を実装し得る。伝統的なカラム型ストレージシステムは、ディスク上にカラムとしてデ
ータを記憶するが、そのデータがメモリに読み込まれたとき、行は、カラム型データから
再び組み立てられる。しかしながら、本開示のインデックスは、ディスク上とメモリ内の
両方でカラム型ストレージとして機能する。インデックスの固有構成が原因で、高速カラ
ム型アクセスの利益は、比較的小さな不利益を伴って得られ得る。
具体化表内には格納されないので、インデックスデータのために使用されるストレージ配
列120を含む。サーバ112のストレージリソースが使用されるとき、ストレージ配列
120は、各クエリに応答するためではなく、バックアップおよびニアラインストレージ
のために使用され得る。
動作することになる当該データを含み得る。単なる例として、ストレージ配列124は、
ユーザが分析フレームワークを使用してクエリすることを望み得る、ログデータなどの関
連したデータを保持し得る。ストレージ配列120およびストレージ配列124が同じス
トレージクラウド116内に示されるが、それらは、プライベートの外部にホストされた
クラウド、パブリッククラウド、および組織に特定の内部にホストされた仮想環境を含む
、異なるクラウド内に位置し得る。
es(AWS)S3クラウドであり得、それは、ビジネスがストレージ配列124内にデ
ータを記憶するために既に使用している。結果として、データをストレージ配列120に
移すことは、高スループットおよび低費用で実現され得る。計算クラウド108は、AW
S EC2によって提供され得、その場合において、計算クラウド108およびストレー
ジクラウド116は、共通プロバイダによってホストされる。ユーザ130は、標準SQ
Lツールを使用してクエリを構築し、そのクエリは計算クラウド108において動作し、
応答はユーザ130に戻される。SQLツールは、ユーザ130のコンピュータ134上
に既にインストールされたツールであり得、本分析フレームワークで動作するために修正
される必要が無い。
ーバアプライアンス180はビジネスのLAN/WAN100に接続される。サーバアプ
ライアンス180は、オンサイトでホストされ得るかオフサイトでホストされ得、仮想プ
ライベートネットワークなどを用いて、LAN/WAN100に接続され得る。サーバア
プライアンス180は、ストレージのみならず計算能力を含み、ソースから入力データを
受信し、そのソースは、LAN/WAN100に対して局所的であり得る。単なる例とし
て、コンピュータもしくはサーバ184は、ウェブトラフィックログまたは侵入検出ログ
などのログを記憶し得る。
データを取り出し記憶する。ストレージクラウド116は、追加データソース188を含
み得、それは、更に他のデータを保持し得るおよび/またはより古いデータのためのニア
ラインデータストレージ設備であり得る。サーバアプライアンス180は、ユーザクエリ
を満たすために、追加データソース188から追加データを取り出し得る。サーバアプラ
イアンス180はまた、バックアップ目的などのために、ストレージクラウド116内に
データを記憶し得る。種々の他の実装では、追加データソース188は、クラウドにおけ
るHadoop実装の一部であり得る。
に柔軟である。単なる例として、ソフトウェアがビジネスに提供され得、そのソフトウェ
アは、所有されたまたはホストされたサーバ上にインストールされ得る。別の実装では、
仮想マシンインスタンスが提供され得、それは、仮想化環境を通してインスタンス化され
得る。なお更に、ユーザは、ブラウザにおいてユーザインターフェースが提供され得、S
QL部分は、Nou Dataなどのサービスプロバイダによってホストされ得、それら
のシステム上またはクラウドにおいて実装され得る。
メモリ208からの命令を実行し、メモリ208内に記憶された(読み書き)データ上で
動作し得る。一般に、速さのために、メモリ208は揮発性メモリである。プロセッサ2
04は、潜在的にチップセット212経由で、不揮発性ストレージ216と通信する。種
々の実装において、不揮発性ストレージ216は、キャッシュとして機能するフラッシュ
メモリを含み得る。より大容量および低費用のストレージが、2次不揮発性ストレージ2
20のために使用され得る。例えば、ハードドライブなどの磁気ストレージ媒体は、2次
不揮発性ストレージ220内に基礎的データを記憶するために使用され得、それのアクテ
ィブな部分は、不揮発性ストレージ216内にキャッシュされる。
音声出力などの出力とを含み得る。サーバ200は、ネットワーキングカード228を使
用して他のコンピューティングデバイスと通信する。種々の実装において、または種々の
時間に、入出力機能224が休止し、サーバ200と外部アクターとの間の全ての相互作
用がネットワーキングカード228経由で行われてもよい。例示のし易さのために、例え
ば、単なる例として、不揮発性ストレージ216とメモリ208との間またはネットワー
キングカード228とメモリ208との間のダイレクトメモリアクセス(DMA)機能な
どの、追加のよく知られた特徴および変形は示されない。
され得るように、分析的なフレームワークに採集されたかの一例を示す。データソース3
00はデータを提供し、そのデータについて分析フレームワークが動作する。その生デー
タが自己記述ではない場合、オプションのユーザが定義したラッパー関数304は、生デ
ータをJSONオブジェクトなどの自己記述の半構造データに変換し得る。
ラッパー関数を実装するためのガイドラインを指定することができる。アドミニストレー
タ308はまた、データソース300のどれを使用し、どのデータをそれらのデータソー
スから取り出すかを指定することができる。種々の実装において、データを取り出すこと
は、サブセッティング操作および/または他の計算を含み得る。単なる例として、データ
ソース300の1つがHadoopであるとき、MapReduceジョブが、分析フレ
ームワークのためにデータを取り出す前に要求され得る。
に構築するスキーマ推論モジュール312によって処理される。アドミニストレータ30
8は、種々の実装において、スキーマ推論モジュール312に型付けヒント(hint)
を提供する能力を有し得る。例えば、型付けヒントは、例えば正規表現によって指定され
得る、日付、時間、または他のアドミニストレータが定義した型などの特定形式を認識す
るための要求を含み得る。
は、装飾モジュール316のみならずインデックス生成モジュール320に提供される。
入力オブジェクトは、ソースデータのみならずソースデータを記述するメタデータを含む
。ソースデータは、インデックス生成モジュール320によってインデックスストレージ
324内に記憶される。
いてマップを識別する。マップ識別が所望されない実装では、装飾モジュール316は省
略され得る。アドミニストレータ308は、マップを識別する際に使用される装飾モジュ
ール316によって実行される発見的問題解決法を調整するために、マップ基準を指定す
ることができる。
ーマなどの関係スキーマを生成する。加えて、識別されたマップは、補助インデックス生
成モジュール332に提供され、そのモジュール332は、上記したような、MapIn
dexなどの追加インデックス、およびValueIndexにおけるマップエントリを
生成することができる。補助インデックスはまた、インデックスストレージ324内に記
憶され得る。
有し得、どのカラムが値インデックスに追加されるかを指定し得る。加えて、アドミニス
トレータは、どのオブジェクトがマップとして処理されるべきであるかを指定することが
でき、オブジェクトがマップとして処理されるか否かを動的に変更することができる。そ
のような変更は、関係スキーマの変更を結果としてもたらすことになる。
、関係スキーマを最適化する。例えば、関係最適化モジュール336は、上記したように
、表間の1対1関係を識別し得、それらの表を単一の表に平坦化し得る。結果として生じ
る関係スキーマは、メタデータサービス340に提供される。
ータサービス340とインターフェースを取る。プロキシ348は、特殊構成無しに、プ
ロキシ348と相互作用することができるODBCクライアント352などのSQLに準
拠したクライアントと相互作用する。ユーザ130は、クエリをクエリエクゼキュータ3
44に送信し、それらのクエリに対する応答を受信するために、ODBCクライアント3
52を使用する。
によって記憶された関係スキーマを見ることができ、関係スキーマ上でクエリを構築する
ことができる。ユーザ130もアドミニストレータ308も、予測されたスキーマを知る
こと、またはスキーマの生成を助けることを要求されない。代わりに、スキーマは、取り
出されたデータに基づいて動的に生成され、次いで、提示される。ODBCクライアント
352が示されるが、JDBCを含むODBC以外の機構が利用可能であり、postg
resクエリを導く。種々の実装において、グラフィカルユーザインターフェースアプリ
ケーションは、ユーザによるODBCクライアント352の使用をし易くし得る。
ビス356からのデータ上で動作する。ストレージサービス356は、それ自体の局所的
ストレージ処理モジュール360を含み得、そのモジュール360に対してクエリエクゼ
キュータ344は、種々の処理タスクを委任することができる。処理されたデータは、次
いで、受信されたクエリへの応答を構築するために、ストレージ処理モジュール360に
よってクエリエクゼキュータ344に提供される。クラウドをベースとした実装では、ス
トレージサービス356およびクエリエクゼキュータ344は共に、計算クラウド内に実
装され得、インデックスストレージ324は、計算インスタンス内に記憶され得る。イン
デックスストレージ324は、図1Aに示されるようなストレージクラウド116内など
の、ニアラインストレージに反映され得る。
‐3(集合的に、ノード402)を有するストレージサービス356を示す。3つのノー
ド402が示されるが、より多いかより少ないものが使用され得、使用される数は、分析
フレームワークの必要性に基づいて動的に変動され得る。ノード402の数は、より多く
のデータが記憶される必要性があるにつれて、ならびに、クエリを実行するためにおよび
/または冗長性を提供するために要求される追加処理に応答して、増加され得る。クエリ
エクゼキュータ344が、ノード406‐1、406‐2、および406‐3(集合的に
、ノード406)と共に示される。ノード406の数はまた、クエリロードに基づいて動
的に変動され得、ノード402の数と独立している。
のインターフェースを提供する。クエリエクゼキュータ344は、ストレージサービス3
56内にあるデータについてのスキーマを記憶するメタデータサービス340と相互作用
する。
ソースは、ユーザまたはアドミニストレータなどによって、指定され得る。加えて、デー
タのソースからの一定のデータセットが選択され得、一定のサブセッティングおよび低減
操作がデータソースに要求され得る。制御は508に続き、ここで、指定されたデータソ
ースは、新たなデータのために監視される。
6に移り、そうではない場合、制御は、所望された場合にデータのソースが修正されるこ
とを可能にするために、504に戻る。516では、新たなオブジェクトのスキーマが推
論され、それは、図4に示されるような型関数に従って実行され得る。520では、51
6から推論されたスキーマが、既に存在しているスキーマと併合される。併合は、図5に
示されるような併合関数に従って実行され得る。
532に移る。528では、マップが、図8に示されるように、データ内で識別される。
536では、新たなマップが識別されない場合、制御は532に続き、そうではない場合
、新たなマップが識別された場合、制御は540に移る。540では、マップインデック
スが所望される場合、制御は544に移り、そうではない場合、制御は532に続く。5
44では、新たなマップ属性と関連付けられたBigIndexまたはArrayInd
exにおける各値について、その値が、マップインデックスに追加される。更に、ユーザ
および/またはアドミニストレータによって所望される場合、特定の属性について、値が
値インデックスに追加される。制御は次いで532に続く。
れるまで待機し得る。例えば、初期採集上で、装飾は、初期オブジェクトの全てが採集さ
れるまで遅延され得る。このようにして、十分な統計が、マップの発見的問題解決法によ
る使用のために収集されていることになる。追加オブジェクトの増分採集のために、装飾
は追加オブジェクトの新たなグループのそれぞれの後に実行され得る。
御は548に移り、ここで、スキーマは関係スキーマに変換される。制御は552に続き
、ここで、1対1関係を平坦化することなどによって、関係ビューが最適化される。制御
は次いで556に続く。スキーマが532で変更されていない場合、制御は直接的に55
6に移ることになる。556では、インデックスは、図7に示されるように実行され得る
新たなオブジェクトのデータをポピュレートされる。制御は次いで504に戻る。
ンデックスのポピュレーションが556に示されるが、種々の実装において、インデック
スは、関係スキーマが要求されないので、関係スキーマを生成する前にポピュレートされ
得る。手順は、パスおよび結合キーを生成するために推論されたJSONスキーマを使用
することができる。関係スキーマは、基礎的半構造データの関係ビューとして機能する。
れることになるオブジェクトがスカラである場合、制御は608に移る。608では、ス
カラの型が決定され、そのスカラ型は、612で関数の出力として戻される。スカラ型は
、受信されたオブジェクトにおける自己記述に基づいて決定され得る。加えて、一定の文
字列が日付または時間などのデータを表現するものであることを認識し得る更なる型付け
規則が使用され得る。
オブジェクトが配列である場合、制御は620に移り、ここで、型関数(図4)は、配列
の各要素上で再帰的に呼び出される。これらの型関数の結果が受信されたとき、制御は6
24に続き、ここで、図6に示されるような折り畳み関数が、620で決定されたような
要素型の配列上で呼び出される。折り畳まれた配列が折り畳み関数によって戻されると、
その折り畳まれた配列が、628で型関数によって戻される。
数(図4)は、オブジェクトの各フィールド上で再帰的に呼び出される。制御は636に
続き、ここで、折り畳み関数は、632で決定されたフィールド型の連結上で呼び出され
る。折り畳み関数によって戻された折り畳まれたオブジェクトは、次いで、640で型関
数によって戻される。
。併合関数はまた、再帰的であり、最初に呼び出されるとき、2つのスキーマ要素は、既
存のスキーマおよび新たに受信されたオブジェクトから推論された新たなスキーマである
。併合関数の更なる再帰的呼び出しでは、スキーマ要素は、これらのスキーマのサブ要素
であることになる。制御は704で始まり、ここで、併合されることになるスキーマ要素
が等価である場合、制御は708に移り、等価スキーマ要素のいずれか1つを戻す。そう
ではない場合、制御は712に移り、ここで、併合されることになるスキーマ要素が両方
とも配列である場合、制御は716に移り、そうではない場合、制御は720に移る。
される。そうではない場合、制御は728に続き、ここで、図6に示されるような折り畳
み関数が、併合されることになる両方の配列の要素を含有する配列上で呼び出される。折
り畳み関数によって戻された折り畳まれた配列は、次いで、732で併合関数によって戻
される。
ーマ要素は、736で併合関数によって戻される。併合されることになるスキーマ要素の
いずれもが空ではない場合、制御は740に続き、ここで、折り畳み関数が、併合される
ことになる両方のスキーマ要素のキーと値のペアを含有するオブジェクト上で呼び出され
る。折り畳み関数によって戻された折り畳まれたオブジェクトは、次いで、744で併合
関数によって戻される。
ことになるオブジェクトが配列である場合、制御は808に移り、そうではない場合、制
御は812に移る。808では、配列が、両方とも配列である値のペアを含有する場合、
制御は816に移り、そうではない場合、制御は820に続く。820では、配列が、両
方ともオブジェクトである値のペアを含有する場合、制御は816に移り、そうではない
場合、制御は824に続く。824では、配列が、等しいスカラ型である値のペアを含有
する場合、制御は816に移り、そうではない場合、折り畳みが完了し、配列が折り畳み
関数から戻される。816では、図5に示されるような併合関数が、808、820、ま
たは824によって識別された値のペア上で呼び出される。制御は828に続き、ここで
、値のペアは、併合関数によって戻される単一値で置換される。
うではない場合、折り畳みが完了し、オブジェクトは戻される。832では、制御は、同
じであるキーのペアを選択し、836に続く。キーのペアについての値が両方とも配列で
あるか、両方ともオブジェクトである場合、制御は840に移り、そうではない場合、制
御は844に移る。840では、キーのペアについての値上で併合関数が呼び出される。
制御は848に続き、ここで、キーのペアが、併合関数によって戻される値を有する単一
キーで置換される。制御は、次いで852に続き、ここで、任意の追加キーが同じである
場合、制御は832に移り、そうではない場合、折り畳みが行われ、修正される際にオブ
ジェクトは戻される。844では、キーのペアについての値が両方ともスカラである場合
、制御は856に移り、そうではない場合、制御は852に移る。856では、キーのペ
アについての値のスカラ型が等しい場合、制御はキーのそれらのペアを併合するために8
40に移り、そうではない場合、制御は852に移る。
するための処理例を示す。制御は904で始まり、ここで、RowIndexが所望され
る場合、制御は908に移り、そうではない場合、制御は912に移る。908では、オ
ブジェクトが、上記のようにRowIndexに追加され、制御は912に続く。912
では、オブジェクトは、現在の関係スキーマについて関係タプルに平坦化され、結合キー
が必要に応じて生成される。制御は916に続き、ここで、制御は、インデックスに追加
されることになる更なるタプルが存在するかどうかを決定する。そうである場合、制御は
920に移り、そうではない場合、インデックスはポピュレートされており、従って、制
御は終了する。
である場合、制御は924に移り、そうではない場合、制御は928に移る。924では
、配列表内に更なる値カラムがある場合、制御は932に移る。932では、カラム値が
元の取り出されたオブジェクト内に存在する場合、値が、936でArrayIndex
に追加される。制御は、次いで、940に続く。ValueIndexがカラムについて
所望される場合、制御は944に移り、そうではない場合、制御は924に戻る。カラム
値が、932で元の取り出されたオブジェクト内に存在しない場合、制御は924に戻る
。
ではない場合、制御は952に移る。948では、制御は、更なる値カラムがマップ表内
に残っているかどうかを決定する。そうである場合、制御は956に移り、そうではない
場合、制御は916に戻る。956では、制御は、カラム値が元の取り出されたオブジェ
クト内に存在するかどうかを決定する。そうである場合、制御は960に移り、そうでは
ない場合、制御は948に戻る。960では、値が、MapIndexに追加され、制御
は964に移る。964では、ValueIndexがカラムについて所望される場合、
値が、968においてValueIndexに追加され、いずれの場合においても、制御
は次いで948に戻る。
うである場合、制御は972に移り、そうではない場合、制御は916に戻る。972で
は、制御は、カラム値が元の取り出されたオブジェクト内に存在するかどうかを決定する
。そうである場合、制御は976に移り、そうではない場合、制御は952に戻る。97
6では、値がBigIndexに追加され、制御は980に続く。980では、Valu
eIndexがカラムについて所望される場合、制御は984に移り、ここで、値がVa
lueIndexに追加され、いずれの場合においても、制御は次いで952に戻る。
第1のオブジェクトが選択される。制御は1008に続き、ここで、オブジェクトが空で
ある場合、1012で含有オブジェクトがマップとして指定され、そうではない場合、制
御は1016に移る。1016では、制御は、上記のような含有オブジェクトの頻度に対
する平均フィールド頻度の割合を決定する。制御は1020に続き、ここで、割合が閾値
より下である場合、制御は、マップとして含有オブジェクトを指定するために1012に
移り、そうではない場合、制御は1024に移る。単なる例として、閾値は、ユーザが調
整可能であり得、および/または観察されたデータに基づいて動的であり得る。種々の実
装において、発見的問題解決法は、関係スキーマが大きくなるにつれて、マップとしてフ
ィールドをより容易に識別するように調整され得る。1012では、含有オブジェクトが
マップとして指定され、制御は1024に続く。評価するための更なるオブジェクトがあ
る場合、制御は1028に移り、ここで、次のオブジェクトが選択され、制御は1008
に続き、そうではない場合、制御は終了する。
実装例を示す。create_schema関数が呼び出されると、制御は、スキーマ要
素(Schema_Element)を表(Current_Table)に組み込む。
この目的のために、制御は1104で始まり、ここで、Schema_Elementが
オブジェクトである場合、制御は1108に移り、そうではない場合、制御は1112に
移る。1108では、オブジェクトが空のオブジェクトである場合、オブジェクトはマッ
プとして処理され、制御は1116に移り、そうではない場合、制御は1120に続く。
1120では、新たな表(New_Table)がネストされたオブジェクトのために生
成される。1124では、結合キー(Join_Key)が、Current_Tabl
eに追加され、1128では、対応するJoin_Keyが、New_Tableに追加
される。制御は次いで1132に続き、ここで、ネストされたオブジェクトにおける各フ
ィールドについて、create_schema関数が、フィールドを表に追加するため
に再帰的に呼び出される。制御は、次いで1136でcreate_schema関数の
本呼び出しから戻る。
移り、そうではない場合、制御は1138に移る。1116では、新たな表(New_T
able)がマップのために生成される。制御は1140に続き、ここで、Join_K
eyが、Current_Tableに追加され、1144では、対応するJoin_K
eyが、New_Tableに追加される。1148では、文字列型を有するキーフィー
ルドが、New_Tableに追加される。制御は1152に続き、ここで、マップにお
ける各値型について、create_schema関数は、値型をNew_Tableに
追加するために再帰的に呼び出される。制御は次いで1136に戻る。
る。そうである場合、制御は1156に移り、そうではない場合、制御は1160に移る
。1156では、新たな表(New_Table)が配列のために生成され、Join_
Keyが、1164でCurrent_Tableに追加され、対応するJoin_Ke
yが、1168でNew_Tableに追加される。1172では、整数型を有するイン
デックスフィールドが、New_Tableに追加される。制御は1176に続き、ここ
で、配列における各アイテム型について、アイテム型をNew_Tableに追加するた
めにcreate_schema関数が呼び出される。次いで、制御は1136に戻る。
る。プリミティブと同じ名前を有するCurrent_Tableに既にフィールドがあ
る場合、制御は1180に移り、そうではない場合、制御は1184に移る。1184で
は、名前フィールドがCurrent_Tableに単純に加えられ、制御は1136に
戻る。1180では、型多様性が存在し、従って、プリミティブと同じ名前を有するCu
rrent_Tableにおける既存のフィールドが、それらの型をフィールド名に添え
るために再び名前を付けられる。制御は1188に続き、ここで、新たなフィールドが現
在のプリミティブに基づいて追加され、型はフィールド名に添えられる。次いで、制御は
1136に戻る。
上記は、事実上単なる例示にすぎず、開示、それの用途、または使用に限定されること
を決して意図されない。開示の広範な教示は、様々な形態で実装され得る。従って、この
開示は特定の例を含むが、他の修正が、図面、明細書、および以下の特許請求の範囲の検
討から明らかになるであろうから、開示の真の範囲は、そのように限定されるべきではな
い。本明細書において使用される際、A、B、およびCの少なくとも1つという文言は、
非排他的論理ORを使用する、論理(AまたはBまたはC)を意味することが解釈される
べきである。方法内の1つ以上のステップは、本開示の原理を変えること無く、異なる順
序で(または同時に)実行され得ることが理解されるべきである。
され得る。モジュールという用語は、特定用途向け集積回路(ASIC)、デジタル、ア
ナログ、もしくはアナログ/デジタル混合ディスクリート回路、デジタル、アナログ、も
しくはアナログ/デジタル混合集積回路、組み合わせ論理回路、フィールドプログラマブ
ルゲートアレイ(FPGA)、コードを実行する(共有、専用、もしくはグループ)プロ
セッサ、プロセッサによって実行されるコードを記憶する(共有、専用、もしくはグルー
プ)メモリ、記載した機能性を提供する他の適切なハードウェア構成要素、またはシステ
ムオンチップにおけるものなどの上記のいくつかもしくは全ての組み合わせの一部である
か、あるいはそれを含むことを言い得る。
またはマイクロコードを含み得、プログラム、ルーチン、関数、クラス、および/または
オブジェクトのことを言う。共有プロセッサという用語は、多数のモジュールからいくつ
かのまたは全てのコードを実行する単一プロセッサを包含する。グループプロセッサとい
う用語は、追加プロセッサと組み合わせて、1つ以上のモジュールからいくつかのまたは
全てのコードを実行するプロセッサを包含する。共有メモリという用語は、多数のモジュ
ールからいくつかのまたは全てのコードを記憶する単一メモリを包含する。グループメモ
リという用語は、追加メモリと組み合わせて、1つ以上のモジュールからいくつかのまた
は全てのコードを記憶するメモリを包含する。メモリという用語は、コンピュータで読み
取り可能な媒体という用語のサブセットであり得る。コンピュータで読み取り可能な媒体
という用語は、媒体を通って伝搬する一時的な電気および電磁信号を包含せず、従って、
有形および非一時的であると考えられ得る。非一時的な有形のコンピュータで読み取り可
能な媒体の非限定例は、不揮発性メモリ、揮発性メモリ、磁気ストレージ、および光スト
レージを含む。
つ以上のコンピュータプログラムによって部分的にまたは完全に実装され得る。コンピュ
ータプログラムは、少なくとも1つの非一時的な有形のコンピュータで読み取り可能な媒
体上に記憶されるプロセッサで実行可能な命令を含む。コンピュータプログラムはまた、
記憶されたデータを含み得るおよび/または記憶されたデータに頼り得る。
Claims (15)
- クエリシステムのプロセッサによって実行される方法であって、前記方法は、
データソースからオブジェクトを取り出し、前記取り出されたオブジェクトのそれぞれが、データおよび前記データを記述するメタデータを含み、
前記取り出されたオブジェクトの新しいオブジェクトのそれぞれのために、前記オブジェクトの前記メタデータおよび前記オブジェクトの要素の推論されたタイプに基づいて、
前記新しいオブジェクトからスキーマを推論することと、
前記新しいオブジェクトを記述する前記推論されたスキーマを、以前に取り出されたオブジェクトのために推論されたスキーマの間における以前の併合動作から生成された既存の累積スキーマと併合することにより統一スキーマを生成することと、
前記統一スキーマを前記累積スキーマとして記憶することと、
によって累積スキーマを動的に生成すること、
前記取り出されたオブジェクトのそれぞれの前記データをストレージサービス内に記憶すること、
を含む方法。 - 前記累積スキーマを関係スキーマに変換すること、
前記関係スキーマをユーザに提示することであって、前記ユーザからのクエリが前記関係スキーマ上で構築される、当該提示することを更に含む、請求項1に記載の方法。 - 前記取り出されたオブジェクトの第1のオブジェクトの前記データを第1のインデックスおよび配列インデックスの少なくとも1つ内に記憶することであって、前記ストレージサービスが前記第1のインデックスおよび前記配列インデックスを含む、当該記憶することと、
前記第1のインデックスおよび前記配列インデックスの少なくとも1つからのデータに基づいて前記クエリに応答することを更に含む、請求項2に記載の方法。 - キーと値のペアとして前記第1のインデックス内の第1のオブジェクトからのデータを記憶することを更に含み、前記キーと値のペアの前記値は前記データであり、前記キーと値のペアの前記キーは、前記関係スキーマと矛盾しない前記データのパスおよび前記第1のオブジェクトの固有識別子に基づく、請求項3に記載の方法。
- 前記キーと値のペアの前記キーは、前記第1のインデックスが、キーと値のペアを最初に前記パスによって、その後、前記固有識別子によって併置するように構築される請求項4に記載の方法。
- 配列の一部であるデータが、前記配列インデックス内に記憶される、請求項3に記載の方法。
- 前記第1のインデックスを順序を保つインデックスストア内に記憶することを更に含み、前記ストレージサービスは、前記順序を保つインデックスストアを含む請求項3に記載の方法。
- マップとして前記累積スキーマのオブジェクトを選択的に識別することを更に含む、請求項2に記載の方法。
- 前記累積スキーマの前記オブジェクトは、前記取り出されたオブジェクト内の前記オブジェクトのフィールドの発生の頻度に基づいて、マップとして識別され、
前記累積スキーマを動的に生成する間に、前記発生の頻度を追跡すること、
累積スキーマの前記オブジェクトは、閾値より下の前記発生の頻度の平均に応答して、マップとして識別されること、
の少なくとも1つを更に含む、請求項8に記載の方法。 - 前記マップに対応するデータをキーと値のペアとしてマップインデックスの中に記憶することを更に含み、前記キーと値のペアの前記値は前記データであり、前記キーと値のペアの前記キーは、前記関係スキーマと矛盾しない前記データのパス、第1のオブジェクトが前記データを提供する前記取り出されたオブジェクトの前記第1のオブジェクトの固有識別子、前記マップの結合キー、および前記マップ内の前記データのマップキーに基づき、
前記キーと値のペアの前記キーは、前記マップインデックスが、キーと値のペアを最初に前記パスによって、次に、前記固有識別子によって、次に、前記結合キーによって、その後、前記マップキーによって併置するように、構築され、または、
前記マップに対応するデータを補助マップインデックスの中にキーと値のペアとして記憶し、前記キーと値のペアの前記値は前記データであり、前記キーと値のペアの前記キーは、前記関係スキーマと矛盾しない前記データのパス、前記マップ内の前記データのマップキー、前記第1のオブジェクトが前記データを提供する、前記取り出されたオブジェクトの第1のオブジェクトの固有識別子、および前記マップの結合キーに基づき、
前記キーと値のペアの前記キーは、前記補助マップインデックスが、キーと値のペアを最初に前記パスによって、次に、前記マップキーによって、次に、前記固有識別子によって、その後、前記結合キーによって併置するように、構築される、請求項8に記載の方法。 - 前記累積スキーマを前記関係スキーマに変換することは、前記累積スキーマのトップレベルにおける各要素についてカラムでルート表を生成することを含む、請求項2に記載の方法。
- 前記累積スキーマを前記関係スキーマに変換することは、前記累積スキーマにおける各配列について前記関係スキーマ内に追加表を生成することをさらに含み、
前記追加表は、結合キーカラム、インデックスカラム、および、前記配列における各スカラ型データについての、値カラムを含み、前記方法は、前記配列が前記累積スキーマの前記トップレベルにあるときに、結合キーカラムを前記追加表および前記結合キーカラムに挿入することを更に含み、
前記配列が前記トップレベルより下の前記累積スキーマ内にネストされるときに、結合キーカラムを前記追加表におよび結合キーコラムを中間表に挿入することを更に含む、請求項11に記載の方法。 - 前記累積スキーマを前記関係スキーマに変換することは、前記累積スキーマ内にあるよう決定された各マップについて、前記関係スキーマ内に追加表を生成することを更に含み、
前記追加表は結合キーカラム、キーカラム、および前記マップにおける各スカラ型データについての、値カラムを含み、
前記方法は、前記マップが前記累積スキーマの前記トップレベルにあるときに、結合キーカラムを前記追加表に、および結合キーコラムを前記ルート表に挿入し、および、前記マップが前記トップレベルより下の前記累積スキーマ内にネストされるときに、結合キーカラムを前記追加表におよび結合キーカラムを中間表に挿入することを更に含む、請求項11に記載の方法。 - 前記関係スキーマは構造化クエリ言語(SQL:Structured Query Language)スキーマであり、前記クエリはSQLであり、または、前記クエリはHive‐QLクエリ、jaqlクエリ、およびXQueryのうちの1つである、請求項2または請求項2に従属するいずれかの請求項に記載の方法。
- プロセッサで実行可能な命令を記憶する非一時的なコンピュータで読み取り可能な媒体であって、
1つ以上のプロセッサで実行されるとき、前記命令は前記1つ以上のプロセッサに:
データソースからオブジェクトを取り出すことを行わせ、前記取り出されたオブジェクトのそれぞれが、データおよび前記データを記述するメタデータを含み、
累積スキーマを動的に生成することを行わせ、前記累積スキーマを動的に生成するために、前記取り出されたオブジェクトのそれぞれのために、前記命令は前記1つ以上のプロセッサに:
前記取り出されたオブジェクトの新しいオブジェクトのそれぞれのために:
前記オブジェクトの前記メタデータおよび前記オブジェクトの要素の推論されたタイプに基づいて、前記新しいオブジェクトからスキーマを推論することと、
前記新しいオブジェクトを記述する前記推論されたスキーマを、以前に取り出されたオブジェクトのために推論されたスキーマの間における以前の併合動作から生成された既存の累積スキーマと併合することにより統一スキーマを生成することと、
前記統一スキーマを前記累積スキーマとして記憶することと、
前記取り出されたオブジェクトのそれぞれの前記データをストレージサービス内に記憶すること、
を行わせることを特徴とする非一時的なコンピュータで読み取り可能な媒体。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201161580193P | 2011-12-23 | 2011-12-23 | |
US61/580,193 | 2011-12-23 | ||
US13/725,399 | 2012-12-21 | ||
US13/725,399 US8732213B2 (en) | 2011-12-23 | 2012-12-21 | Scalable analysis platform for semi-structured data |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014548978A Division JP6144700B2 (ja) | 2011-12-23 | 2012-12-21 | 半構造データのためのスケーラブルな分析プラットフォーム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2017157229A JP2017157229A (ja) | 2017-09-07 |
JP6617117B2 true JP6617117B2 (ja) | 2019-12-04 |
Family
ID=48655578
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014548978A Active JP6144700B2 (ja) | 2011-12-23 | 2012-12-21 | 半構造データのためのスケーラブルな分析プラットフォーム |
JP2017094636A Active JP6617117B2 (ja) | 2011-12-23 | 2017-05-11 | 半構造データのためのスケーラブルな分析プラットフォーム |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2014548978A Active JP6144700B2 (ja) | 2011-12-23 | 2012-12-21 | 半構造データのためのスケーラブルな分析プラットフォーム |
Country Status (6)
Country | Link |
---|---|
US (2) | US8732213B2 (ja) |
EP (1) | EP2795487A4 (ja) |
JP (2) | JP6144700B2 (ja) |
CN (2) | CN107451225B (ja) |
CA (1) | CA2860322C (ja) |
WO (1) | WO2013096887A1 (ja) |
Families Citing this family (172)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9576046B2 (en) | 2011-11-16 | 2017-02-21 | Ptc Inc. | Methods for integrating semantic search, query, and analysis across heterogeneous data types and devices thereof |
US9361263B1 (en) * | 2011-12-21 | 2016-06-07 | Emc Corporation | Co-located clouds, vertically integrated clouds, and federated clouds |
CN107451225B (zh) * | 2011-12-23 | 2021-02-05 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
US9201911B2 (en) * | 2012-03-29 | 2015-12-01 | International Business Machines Corporation | Managing test data in large scale performance environment |
US8949175B2 (en) * | 2012-04-17 | 2015-02-03 | Turn Inc. | Meta-data driven data ingestion using MapReduce framework |
US9501550B2 (en) * | 2012-04-18 | 2016-11-22 | Renmin University Of China | OLAP query processing method oriented to database and HADOOP hybrid platform |
US20130297624A1 (en) * | 2012-05-07 | 2013-11-07 | Microsoft Corporation | Interoperability between Map-Reduce and Distributed Array Runtimes |
US10445674B2 (en) | 2012-06-05 | 2019-10-15 | Dimensional Insight Incorporated | Measure factory |
US10755233B2 (en) | 2012-06-05 | 2020-08-25 | Dimensional Insight Incorporated | Guided page navigation |
US9274668B2 (en) | 2012-06-05 | 2016-03-01 | Dimensional Insight Incorporated | Guided page navigation |
US10671955B2 (en) | 2012-06-05 | 2020-06-02 | Dimensional Insight Incorporated | Dynamic generation of guided pages |
US9547682B2 (en) * | 2012-08-22 | 2017-01-17 | Bitvore Corp. | Enterprise data processing |
US9075833B2 (en) * | 2013-01-21 | 2015-07-07 | International Business Machines Corporation | Generating XML schema from JSON data |
US9665621B1 (en) * | 2013-03-14 | 2017-05-30 | EMC IP Holding Company LLC | Accelerated query execution within a storage array |
US9299041B2 (en) | 2013-03-15 | 2016-03-29 | Business Objects Software Ltd. | Obtaining data from unstructured data for a structured data collection |
WO2014144889A2 (en) * | 2013-03-15 | 2014-09-18 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
US9262550B2 (en) * | 2013-03-15 | 2016-02-16 | Business Objects Software Ltd. | Processing semi-structured data |
US9460407B2 (en) | 2013-05-03 | 2016-10-04 | Sap Se | Generating graphical representations of data |
US9454348B2 (en) | 2013-06-21 | 2016-09-27 | Here Global B.V. | Methods, apparatuses, and computer program products for facilitating a data interchange protocol modeling language |
US9485306B2 (en) * | 2013-06-21 | 2016-11-01 | Here Global B.V. | Methods, apparatuses, and computer program products for facilitating a data interchange protocol |
US9336203B2 (en) * | 2013-07-19 | 2016-05-10 | Tibco Software Inc. | Semantics-oriented analysis of log message content |
US10372794B1 (en) * | 2013-08-08 | 2019-08-06 | Teal Rainsky Rogers | Three-dimensional network mapping system and method |
US10795943B1 (en) * | 2013-08-08 | 2020-10-06 | Teal Rainsky Rogers | Three-dimensional network mapping system and method |
CN104424245B (zh) * | 2013-08-27 | 2017-11-24 | 国际商业机器公司 | 一种管理数据表的共享关系的方法和装置 |
WO2015027425A1 (zh) * | 2013-08-29 | 2015-03-05 | 华为技术有限公司 | 存储数据的方法和装置 |
US9471711B2 (en) * | 2013-09-23 | 2016-10-18 | Teradata Us, Inc. | Schema-less access to stored data |
US10437805B2 (en) * | 2013-09-24 | 2019-10-08 | Qliktech International Ab | Methods and systems for data management and analysis |
CN104516894B (zh) * | 2013-09-27 | 2018-08-17 | 国际商业机器公司 | 用于管理时间序列数据库的方法和装置 |
CN104572649B (zh) * | 2013-10-11 | 2019-10-25 | 南京中兴新软件有限责任公司 | 分布式存储系统的数据的处理方法、装置及系统 |
US9471654B1 (en) | 2013-11-07 | 2016-10-18 | Progress Software Corporation | Modeling of a non-relational database as a normalized relational database |
US9037752B1 (en) | 2013-11-14 | 2015-05-19 | Sap Se | Remote materialization of low velocity data |
US9355118B2 (en) | 2013-11-15 | 2016-05-31 | International Business Machines Corporation | System and method for intelligently categorizing data to delete specified amounts of data based on selected data characteristics |
GB2521198A (en) | 2013-12-13 | 2015-06-17 | Ibm | Refactoring of databases to include soft type information |
US9384259B2 (en) * | 2014-02-03 | 2016-07-05 | Yahoo! | Categorizing hash tags |
US9853956B2 (en) * | 2014-02-11 | 2017-12-26 | Texas Instruments Incorporated | JSON encryption and hashing with indication added to key-value |
US10587689B2 (en) | 2014-02-14 | 2020-03-10 | Western Digital Technologies, Inc. | Data storage device with embedded software |
US10289547B2 (en) * | 2014-02-14 | 2019-05-14 | Western Digital Technologies, Inc. | Method and apparatus for a network connected storage system |
US11809451B2 (en) * | 2014-02-19 | 2023-11-07 | Snowflake Inc. | Caching systems and methods |
US9454620B2 (en) | 2014-02-28 | 2016-09-27 | Here Global B.V. | Methods, apparatuses and computer program products for automated learning of data models |
US10459767B2 (en) | 2014-03-05 | 2019-10-29 | International Business Machines Corporation | Performing data analytics utilizing a user configurable group of reusable modules |
US10313410B2 (en) | 2014-03-21 | 2019-06-04 | Ptc Inc. | Systems and methods using binary dynamic rest messages |
US9560170B2 (en) | 2014-03-21 | 2017-01-31 | Ptc Inc. | System and method of abstracting communication protocol using self-describing messages |
US9961058B2 (en) | 2014-03-21 | 2018-05-01 | Ptc Inc. | System and method of message routing via connection servers in a distributed computing environment |
US9762637B2 (en) | 2014-03-21 | 2017-09-12 | Ptc Inc. | System and method of using binary dynamic rest messages |
EP3120267B1 (en) * | 2014-03-21 | 2020-01-08 | PTC Inc. | Communication of binary dynamic rest messages |
US9462085B2 (en) | 2014-03-21 | 2016-10-04 | Ptc Inc. | Chunk-based communication of binary dynamic rest messages |
US9350791B2 (en) | 2014-03-21 | 2016-05-24 | Ptc Inc. | System and method of injecting states into message routing in a distributed computing environment |
US9350812B2 (en) | 2014-03-21 | 2016-05-24 | Ptc Inc. | System and method of message routing using name-based identifier in a distributed computing environment |
US9690500B2 (en) | 2014-04-02 | 2017-06-27 | International Business Machines Corporation | Efficient flashcopy backup target volume allocation |
US9507536B2 (en) * | 2014-04-02 | 2016-11-29 | International Business Machines Corporation | Creating a stable flashcopy map (FCMAPS) for ingest |
US9817724B2 (en) | 2014-04-02 | 2017-11-14 | International Business Machines Corporation | Efficient FlashCopy backup target volume allocation with reuse and a shared resource pool |
US9542106B2 (en) | 2014-04-02 | 2017-01-10 | International Business Machines Corporation | Efficient repository ingest of a target volume without breaking a flashcopy chain |
US9442664B2 (en) * | 2014-04-02 | 2016-09-13 | International Business Machines Corporation | Efficient flashcopy backup target volume allocation from a shared resource pool |
US9454315B2 (en) * | 2014-04-02 | 2016-09-27 | International Business Machines Corporation | Efficient flashcopy backup target volume allocation from a shared resource pool while ingesting a flashcopy backup in a repository |
CN105095237B (zh) * | 2014-04-30 | 2018-07-17 | 国际商业机器公司 | 用于生成非关系数据库的模式的方法和设备 |
US9678787B2 (en) | 2014-05-23 | 2017-06-13 | Microsoft Technology Licensing, Llc | Framework for authoring data loaders and data savers |
US20150347477A1 (en) * | 2014-05-30 | 2015-12-03 | John Esmet | Streaming File System |
CN106575427B (zh) * | 2014-08-12 | 2020-12-08 | 艾高特有限责任公司 | 基于零知识环境的社交网络引擎 |
CN105373561B (zh) * | 2014-08-28 | 2019-02-15 | 国际商业机器公司 | 识别非关系数据库中的记录模式的方法和设备 |
US10387494B2 (en) | 2014-09-24 | 2019-08-20 | Oracle International Corporation | Guided data exploration |
US9754048B1 (en) | 2014-10-06 | 2017-09-05 | Google Inc. | Storing semi-structured data |
US10417108B2 (en) | 2015-09-18 | 2019-09-17 | Splunk Inc. | Portable control modules in a machine data driven service monitoring system |
US9208463B1 (en) | 2014-10-09 | 2015-12-08 | Splunk Inc. | Thresholds for key performance indicators derived from machine data |
US11671312B2 (en) | 2014-10-09 | 2023-06-06 | Splunk Inc. | Service detail monitoring console |
US9146954B1 (en) | 2014-10-09 | 2015-09-29 | Splunk, Inc. | Creating entity definition from a search result set |
US11501238B2 (en) | 2014-10-09 | 2022-11-15 | Splunk Inc. | Per-entity breakdown of key performance indicators |
US9130832B1 (en) | 2014-10-09 | 2015-09-08 | Splunk, Inc. | Creating entity definition from a file |
US9158811B1 (en) | 2014-10-09 | 2015-10-13 | Splunk, Inc. | Incident review interface |
US11087263B2 (en) | 2014-10-09 | 2021-08-10 | Splunk Inc. | System monitoring with key performance indicators from shared base search of machine data |
US10209956B2 (en) * | 2014-10-09 | 2019-02-19 | Splunk Inc. | Automatic event group actions |
US11200130B2 (en) | 2015-09-18 | 2021-12-14 | Splunk Inc. | Automatic entity control in a machine data driven service monitoring system |
US10505825B1 (en) * | 2014-10-09 | 2019-12-10 | Splunk Inc. | Automatic creation of related event groups for IT service monitoring |
US10193775B2 (en) * | 2014-10-09 | 2019-01-29 | Splunk Inc. | Automatic event group action interface |
US11755559B1 (en) | 2014-10-09 | 2023-09-12 | Splunk Inc. | Automatic entity control in a machine data driven service monitoring system |
US10474680B2 (en) | 2014-10-09 | 2019-11-12 | Splunk Inc. | Automatic entity definitions |
US10417225B2 (en) | 2015-09-18 | 2019-09-17 | Splunk Inc. | Entity detail monitoring console |
US9491059B2 (en) | 2014-10-09 | 2016-11-08 | Splunk Inc. | Topology navigator for IT services |
US9210056B1 (en) | 2014-10-09 | 2015-12-08 | Splunk Inc. | Service monitoring interface |
US10305758B1 (en) | 2014-10-09 | 2019-05-28 | Splunk Inc. | Service monitoring interface reflecting by-service mode |
US9760240B2 (en) | 2014-10-09 | 2017-09-12 | Splunk Inc. | Graphical user interface for static and adaptive thresholds |
US10235638B2 (en) | 2014-10-09 | 2019-03-19 | Splunk Inc. | Adaptive key performance indicator thresholds |
US10536353B2 (en) | 2014-10-09 | 2020-01-14 | Splunk Inc. | Control interface for dynamic substitution of service monitoring dashboard source data |
US11455590B2 (en) | 2014-10-09 | 2022-09-27 | Splunk Inc. | Service monitoring adaptation for maintenance downtime |
US9146962B1 (en) | 2014-10-09 | 2015-09-29 | Splunk, Inc. | Identifying events using informational fields |
US10558719B2 (en) | 2014-10-30 | 2020-02-11 | Quantifind, Inc. | Apparatuses, methods and systems for insight discovery and presentation from structured and unstructured data |
US20170011093A1 (en) * | 2014-10-30 | 2017-01-12 | Quantifind, Inc. | Apparatuses, methods and systems for efficient ad-hoc querying of distributed data |
US9208200B1 (en) * | 2014-11-01 | 2015-12-08 | Veeva Systems Inc. | System and method for reporting multiple objects in enterprise content management |
US9959299B2 (en) | 2014-12-02 | 2018-05-01 | International Business Machines Corporation | Compression-aware partial sort of streaming columnar data |
CN105786808B (zh) * | 2014-12-15 | 2019-06-18 | 阿里巴巴集团控股有限公司 | 一种用于分布式执行关系型计算指令的方法与设备 |
US9965514B2 (en) | 2014-12-19 | 2018-05-08 | Software Ag Usa, Inc. | Techniques for real-time generation of temporal comparative and superlative analytics in natural language for real-time dynamic data analytics |
US10198155B2 (en) * | 2015-01-31 | 2019-02-05 | Splunk Inc. | Interface for automated service discovery in I.T. environments |
US9967351B2 (en) | 2015-01-31 | 2018-05-08 | Splunk Inc. | Automated service discovery in I.T. environments |
US10909078B2 (en) | 2015-02-25 | 2021-02-02 | International Business Machines Corporation | Query predicate evaluation and computation for hierarchically compressed data |
US10255378B2 (en) * | 2015-03-18 | 2019-04-09 | Adp, Llc | Database structure for distributed key-value pair, document and graph models |
US20160292598A1 (en) * | 2015-04-05 | 2016-10-06 | Vishai Kumar | Analytics Virtualization System |
CN105187375B (zh) * | 2015-06-16 | 2019-05-17 | 公安部交通管理科学研究所 | 基于代理服务的Hadoop生态组件调度服务实现方法及系统 |
US9858299B2 (en) | 2015-06-24 | 2018-01-02 | Oracle International Corporation | System and method for generating a JSON schema from a JSON stream |
CN106326317A (zh) * | 2015-07-09 | 2017-01-11 | 中国移动通信集团山西有限公司 | 数据处理方法及装置 |
US20170024432A1 (en) * | 2015-07-24 | 2017-01-26 | International Business Machines Corporation | Generating sql queries from declarative queries for semi-structured data |
US10762084B2 (en) | 2015-08-11 | 2020-09-01 | Micro Focus Llc | Distribute execution of user-defined function |
US9881054B2 (en) * | 2015-09-30 | 2018-01-30 | International Business Machines Corporation | System and method of query processing with schema change in JSON document store |
US9507762B1 (en) | 2015-11-19 | 2016-11-29 | International Business Machines Corporation | Converting portions of documents between structured and unstructured data formats to improve computing efficiency and schema flexibility |
US10353966B2 (en) | 2015-11-19 | 2019-07-16 | BloomReach, Inc. | Dynamic attributes for searching |
US9928060B2 (en) | 2015-11-30 | 2018-03-27 | International Business Machines Corporation | Tracking changes within Javascript object notation |
US9747081B2 (en) | 2015-11-30 | 2017-08-29 | International Business Machines Corporation | Undo/redo in JavaScript object notation |
CN106844406B (zh) * | 2015-12-07 | 2021-03-02 | 腾讯科技(深圳)有限公司 | 检索方法和检索装置 |
US9607063B1 (en) | 2015-12-10 | 2017-03-28 | International Business Machines Corporation | NoSQL relational database (RDB) data movement |
CN106294837A (zh) * | 2016-01-21 | 2017-01-04 | 华南师范大学 | 一种数据库增量数据转换迁移方法和系统 |
US10552455B2 (en) * | 2016-02-05 | 2020-02-04 | Sap Se | Analytics enablement for engineering records |
JP7271059B2 (ja) * | 2016-04-28 | 2023-05-11 | スノーフレーク インク. | マルチクラスタウェアハウス |
US10114846B1 (en) * | 2016-06-24 | 2018-10-30 | Amazon Technologies, Inc. | Balanced distribution of sort order values for a multi-column sort order of a relational database |
US10956467B1 (en) * | 2016-08-22 | 2021-03-23 | Jpmorgan Chase Bank, N.A. | Method and system for implementing a query tool for unstructured data files |
US10503923B1 (en) | 2016-08-31 | 2019-12-10 | Amazon Technologies, Inc. | Centralized data store for multiple data processing environments |
US10437564B1 (en) * | 2016-09-16 | 2019-10-08 | Software Tree, LLC | Object mapping and conversion system |
US10942960B2 (en) | 2016-09-26 | 2021-03-09 | Splunk Inc. | Automatic triage model execution in machine data driven monitoring automation apparatus with visualization |
US10942946B2 (en) | 2016-09-26 | 2021-03-09 | Splunk, Inc. | Automatic triage model execution in machine data driven monitoring automation apparatus |
US10795871B2 (en) * | 2016-09-26 | 2020-10-06 | Vmware, Inc. | Key-value stores implemented using fragmented log-structured merge trees |
US11853529B2 (en) * | 2016-11-07 | 2023-12-26 | Tableau Software, Inc. | User interface to prepare and curate data for subsequent analysis |
US10885057B2 (en) | 2016-11-07 | 2021-01-05 | Tableau Software, Inc. | Correlated incremental loading of multiple data sets for an interactive data prep application |
ES2668723B1 (es) * | 2016-11-18 | 2019-04-01 | 8Kdata Tech S L | Maquina de extraccion, mapeo y almacenamiento de datos jerarquicos |
US10769209B1 (en) * | 2017-01-13 | 2020-09-08 | Marklogic Corporation | Apparatus and method for template driven data extraction in a semi-structured document database |
US10628421B2 (en) * | 2017-02-07 | 2020-04-21 | International Business Machines Corporation | Managing a single database management system |
US10216823B2 (en) | 2017-05-31 | 2019-02-26 | HarperDB, Inc. | Systems, methods, and apparatus for hierarchical database |
US9934287B1 (en) | 2017-07-25 | 2018-04-03 | Capital One Services, Llc | Systems and methods for expedited large file processing |
CN107633181B (zh) * | 2017-09-12 | 2021-01-26 | 复旦大学 | 面向数据开放共享的数据模型的实现方法及其运作系统 |
US11093518B1 (en) | 2017-09-23 | 2021-08-17 | Splunk Inc. | Information technology networked entity monitoring with dynamic metric and threshold selection |
US11106442B1 (en) | 2017-09-23 | 2021-08-31 | Splunk Inc. | Information technology networked entity monitoring with metric selection prior to deployment |
US11159397B2 (en) | 2017-09-25 | 2021-10-26 | Splunk Inc. | Lower-tier application deployment for higher-tier system data monitoring |
US10394691B1 (en) | 2017-10-05 | 2019-08-27 | Tableau Software, Inc. | Resolution of data flow errors using the lineage of detected error conditions |
KR102040858B1 (ko) * | 2017-11-29 | 2019-11-06 | 한국과학기술연구원 | 가상 공간의 인터랙션 분석 시스템 및 방법 |
CN108108490B (zh) * | 2018-01-12 | 2019-08-27 | 平安科技(深圳)有限公司 | Hive表扫描方法、装置、计算机设备及存储介质 |
US10503497B2 (en) * | 2018-01-30 | 2019-12-10 | Microsoft Technology Licensing, Llc | Techniques for utilizing an expression language in service configuration files |
CN108256109B (zh) * | 2018-02-07 | 2022-04-15 | 福建星瑞格软件有限公司 | 列簇类型半结构化数据的结构化查询方法及计算机设备 |
US11693832B2 (en) * | 2018-03-15 | 2023-07-04 | Vmware, Inc. | Flattening of hierarchical data into a relational schema in a computing system |
CN110377577B (zh) * | 2018-04-11 | 2022-03-04 | 北京嘀嘀无限科技发展有限公司 | 数据同步方法、装置、系统和计算机可读存储介质 |
US11172050B1 (en) * | 2018-05-25 | 2021-11-09 | Progress Software Corporation | Self-configuring adapter |
US11188865B2 (en) | 2018-07-13 | 2021-11-30 | Dimensional Insight Incorporated | Assisted analytics |
US11048815B2 (en) * | 2018-08-06 | 2021-06-29 | Snowflake Inc. | Secure data sharing in a multi-tenant database system |
US11722470B2 (en) * | 2018-08-29 | 2023-08-08 | International Business Machines Corporation | Encrypted data according to a schema |
US11030242B1 (en) * | 2018-10-15 | 2021-06-08 | Rockset, Inc. | Indexing and querying semi-structured documents using a key-value store |
US10691304B1 (en) | 2018-10-22 | 2020-06-23 | Tableau Software, Inc. | Data preparation user interface with conglomerate heterogeneous process flow elements |
US11250032B1 (en) | 2018-10-22 | 2022-02-15 | Tableau Software, Inc. | Data preparation user interface with conditional remapping of data values |
US10635360B1 (en) * | 2018-10-29 | 2020-04-28 | International Business Machines Corporation | Adjusting data ingest based on compaction rate in a dispersed storage network |
TWI693525B (zh) * | 2018-12-21 | 2020-05-11 | 凌群電腦股份有限公司 | 雲端大數據資料庫快捷建立索引系統 |
US10592525B1 (en) * | 2019-01-31 | 2020-03-17 | Splunk Inc. | Conversion of cloud computing platform data for ingestion by data intake and query system |
JP7193721B2 (ja) | 2019-01-31 | 2022-12-21 | 富士通株式会社 | 情報処理装置およびデータベース検索プログラム |
US11853359B1 (en) * | 2019-01-31 | 2023-12-26 | Veeva Systems Inc. | System and method for reporting multiple objects in enterprise content management |
US10911379B1 (en) | 2019-06-12 | 2021-02-02 | Amazon Technologies, Inc. | Message schema management service for heterogeneous event-driven computing environments |
US11061856B2 (en) | 2019-07-03 | 2021-07-13 | Bank Of America Corporation | Data ingestion system |
CN112395287A (zh) * | 2019-08-19 | 2021-02-23 | 北京国双科技有限公司 | 表格分类方法、表格创建方法、装置、设备和介质 |
CN110928876A (zh) * | 2019-11-08 | 2020-03-27 | 上海数禾信息科技有限公司 | 资信数据存储的方法和装置 |
US11249964B2 (en) | 2019-11-11 | 2022-02-15 | Microsoft Technology Licensing, Llc | Generating estimated database schema and analytics model |
US11100097B1 (en) | 2019-11-12 | 2021-08-24 | Tableau Software, Inc. | Visually defining multi-row table calculations in a data preparation application |
US11567939B2 (en) * | 2019-12-26 | 2023-01-31 | Snowflake Inc. | Lazy reassembling of semi-structured data |
US11308090B2 (en) * | 2019-12-26 | 2022-04-19 | Snowflake Inc. | Pruning index to support semi-structured data types |
CN111241056B (zh) * | 2019-12-31 | 2024-03-01 | 国网浙江省电力有限公司营销服务中心 | 一种基于决策树模型的电力用能数据存储优化方法 |
US11327962B1 (en) * | 2020-01-23 | 2022-05-10 | Rockset, Inc. | Real-time analytical database system for querying data of transactional systems |
US11886399B2 (en) | 2020-02-26 | 2024-01-30 | Ab Initio Technology Llc | Generating rules for data processing values of data fields from semantic labels of the data fields |
CN111522662B (zh) * | 2020-04-23 | 2020-11-27 | 柴懿晖 | 一种用于金融分析的节点系统及其实现方法 |
US11663177B2 (en) * | 2020-05-04 | 2023-05-30 | International Business Machines Corporation | Systems and methods for extracting data in column-based not only structured query language (NoSQL) databases |
CN112187953B (zh) * | 2020-10-13 | 2022-05-03 | 南开大学 | 一种基于json的基因本体映射系统及方法 |
WO2022106977A1 (en) * | 2020-11-18 | 2022-05-27 | Ownbackup Ltd. | Continuous data protection using retroactive backup snapshots |
US11797600B2 (en) | 2020-11-18 | 2023-10-24 | Ownbackup Ltd. | Time-series analytics for database management systems |
CA3202971A1 (en) * | 2020-12-21 | 2022-06-30 | Trevor Jerome SMITH | System and method for parsing regulatory and other documents for machine scoring |
CN112632169B (zh) * | 2020-12-29 | 2023-03-28 | 永辉云金科技有限公司 | 一种金融数据自动上报方法、装置及计算机设备 |
US11676072B1 (en) | 2021-01-29 | 2023-06-13 | Splunk Inc. | Interface for incorporating user feedback into training of clustering model |
US11709836B2 (en) * | 2021-10-21 | 2023-07-25 | S&P Global Inc. | Data fetch engine |
WO2023096587A2 (en) * | 2021-11-29 | 2023-06-01 | Shopee IP Singapore Private Limited | Device and method for preparing data for responding to database queries |
CN115455113A (zh) * | 2022-08-05 | 2022-12-09 | 深圳市大头兄弟科技有限公司 | NoSQL数据库的同步方法、装置、设备及存储介质 |
CN115065642B (zh) * | 2022-08-18 | 2022-12-02 | 深圳华锐分布式技术股份有限公司 | 带宽限制下的代码表请求方法、装置、设备及介质 |
CN116955363B (zh) * | 2023-09-21 | 2023-12-26 | 北京四维纵横数据技术有限公司 | 无模式数据创建索引方法、装置、计算机设备及介质 |
CN117194490B (zh) * | 2023-11-07 | 2024-04-05 | 长春金融高等专科学校 | 基于人工智能的金融大数据存储查询方法 |
Family Cites Families (39)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3583688B2 (ja) * | 2000-05-22 | 2004-11-04 | 日本電信電話株式会社 | Xmlデータ変換方式およびxmlデータ変換方法 |
AU2001290646A1 (en) * | 2000-09-08 | 2002-03-22 | The Regents Of The University Of California | Data source integration system and method |
AU2002334721B2 (en) * | 2001-09-28 | 2008-10-23 | Oracle International Corporation | An index structure to access hierarchical data in a relational database system |
JP2003162533A (ja) * | 2001-11-22 | 2003-06-06 | Nec Corp | スキーマ統合変換システム、スキーマ統合変換方法およびスキーマ統合変換用プログラム |
US6826568B2 (en) * | 2001-12-20 | 2004-11-30 | Microsoft Corporation | Methods and system for model matching |
JP4207438B2 (ja) * | 2002-03-06 | 2009-01-14 | 日本電気株式会社 | Xml文書格納/検索装置及びそれに用いるxml文書格納/検索方法並びにそのプログラム |
AU2002337036A1 (en) * | 2002-08-30 | 2004-03-19 | Sap Aktiengesellschaft | Business application generation system |
US6820967B2 (en) * | 2002-11-23 | 2004-11-23 | Silverbrook Research Pty Ltd | Thermal ink jet printhead with heaters formed from low atomic number elements |
US20040148278A1 (en) * | 2003-01-22 | 2004-07-29 | Amir Milo | System and method for providing content warehouse |
US7007033B1 (en) * | 2003-04-28 | 2006-02-28 | Microsoft Corporation | Management of markup language data mappings available to a spreadsheet application workbook |
JP4394643B2 (ja) * | 2003-08-21 | 2010-01-06 | マイクロソフト コーポレーション | アイテムベースのストレージプラットフォームにおけるデータモデリングのためのシステムおよび方法 |
US7970730B2 (en) * | 2005-01-27 | 2011-06-28 | Microsoft Corporation | Efficient data access via runtime type inference |
US20060224579A1 (en) * | 2005-03-31 | 2006-10-05 | Microsoft Corporation | Data mining techniques for improving search engine relevance |
JP2006350924A (ja) * | 2005-06-20 | 2006-12-28 | Hitachi Ltd | 情報処理装置、スキーマ作成方法、及びプログラム |
US7730448B2 (en) * | 2005-08-11 | 2010-06-01 | Microsoft Corporation | Layered type systems |
AU2006318417B2 (en) * | 2005-11-23 | 2012-01-19 | Dun And Bradstreet Corporation | System and method for searching and matching data having ideogrammatic content |
KR100759186B1 (ko) | 2006-05-29 | 2007-09-14 | 주식회사 케이티 | 비구조 웹문서 및 데이터베이스의 다양한 정보를웹서비스로 제공하기 위한 웹서비스 제공 시스템 및 그방법 |
JP4593580B2 (ja) * | 2007-03-05 | 2010-12-08 | 株式会社エヌジェーケー | Xmlデータ用操作ボタンの生成方法 |
US20090024590A1 (en) | 2007-03-15 | 2009-01-22 | Sturge Timothy | User contributed knowledge database |
US20080235260A1 (en) * | 2007-03-23 | 2008-09-25 | International Business Machines Corporation | Scalable algorithms for mapping-based xml transformation |
EP2079020B1 (en) | 2008-01-03 | 2013-03-20 | Accenture Global Services Limited | System amd method for automating ETL applications |
US8296301B2 (en) | 2008-01-30 | 2012-10-23 | Commvault Systems, Inc. | Systems and methods for probabilistic data classification |
CN101960365A (zh) * | 2008-03-11 | 2011-01-26 | 夏普株式会社 | 液晶显示装置 |
GB2476754A (en) * | 2008-09-15 | 2011-07-06 | Erik Thomsen | Extracting semantics from data |
US20100274750A1 (en) | 2009-04-22 | 2010-10-28 | Microsoft Corporation | Data Classification Pipeline Including Automatic Classification Rules |
US8768976B2 (en) * | 2009-05-15 | 2014-07-01 | Apptio, Inc. | Operational-related data computation engine |
US8762333B2 (en) * | 2009-07-08 | 2014-06-24 | Pivotal Software, Inc. | Apparatus and method for read optimized bulk data storage |
US8874600B2 (en) * | 2010-01-30 | 2014-10-28 | International Business Machines Corporation | System and method for building a cloud aware massive data analytics solution background |
US20110225133A1 (en) * | 2010-03-09 | 2011-09-15 | Microsoft Corporation | Metadata-aware search engine |
CN101894143A (zh) * | 2010-06-28 | 2010-11-24 | 北京用友政务软件有限公司 | 一种联邦检索及检索结果集成展现方法及系统 |
CN102254022B (zh) * | 2011-07-27 | 2013-03-06 | 河海大学 | 一种面向多数据类型信息资源元数据的共享方法 |
US8631048B1 (en) * | 2011-09-19 | 2014-01-14 | Rockwell Collins, Inc. | Data alignment system |
US9020981B2 (en) * | 2011-09-30 | 2015-04-28 | Comprehend Systems, Inc. | Systems and methods for generating schemas that represent multiple data sources |
CN107451225B (zh) * | 2011-12-23 | 2021-02-05 | 亚马逊科技公司 | 用于半结构化数据的可缩放分析平台 |
CN102768676B (zh) | 2012-06-14 | 2014-03-12 | 腾讯科技(深圳)有限公司 | 一种格式未知文件的处理方法和装置 |
WO2014144889A2 (en) * | 2013-03-15 | 2014-09-18 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
US9582556B2 (en) | 2013-10-03 | 2017-02-28 | International Business Machines Corporation | Automatic generation of an extract, transform, load (ETL) job |
US20150286701A1 (en) | 2014-04-04 | 2015-10-08 | Quantum Corporation | Data Classification Aware Object Storage |
US9600547B2 (en) | 2014-05-30 | 2017-03-21 | International Business Machines Corporation | System and method of consuming and integrating with rest-based cloud and enterprise services |
-
2012
- 2012-12-21 CN CN201710589656.5A patent/CN107451225B/zh active Active
- 2012-12-21 US US13/725,399 patent/US8732213B2/en active Active
- 2012-12-21 EP EP12859130.2A patent/EP2795487A4/en not_active Withdrawn
- 2012-12-21 CN CN201280068938.6A patent/CN104160394B/zh active Active
- 2012-12-21 JP JP2014548978A patent/JP6144700B2/ja active Active
- 2012-12-21 CA CA2860322A patent/CA2860322C/en not_active Expired - Fee Related
- 2012-12-21 WO PCT/US2012/071454 patent/WO2013096887A1/en active Application Filing
-
2014
- 2014-02-26 US US14/190,934 patent/US10095732B2/en active Active
-
2017
- 2017-05-11 JP JP2017094636A patent/JP6617117B2/ja active Active
Also Published As
Publication number | Publication date |
---|---|
JP6144700B2 (ja) | 2017-06-07 |
WO2013096887A1 (en) | 2013-06-27 |
JP2017157229A (ja) | 2017-09-07 |
CN107451225B (zh) | 2021-02-05 |
US20140181141A1 (en) | 2014-06-26 |
CA2860322C (en) | 2017-06-27 |
CA2860322A1 (en) | 2013-06-27 |
EP2795487A1 (en) | 2014-10-29 |
JP2015508529A (ja) | 2015-03-19 |
US10095732B2 (en) | 2018-10-09 |
CN104160394B (zh) | 2017-08-15 |
EP2795487A4 (en) | 2015-07-29 |
CN104160394A (zh) | 2014-11-19 |
US20130166568A1 (en) | 2013-06-27 |
US8732213B2 (en) | 2014-05-20 |
CN107451225A (zh) | 2017-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6617117B2 (ja) | 半構造データのためのスケーラブルな分析プラットフォーム | |
US10983967B2 (en) | Creation of a cumulative schema based on an inferred schema and statistics | |
US11036735B2 (en) | Dimension context propagation techniques for optimizing SQL query plans | |
US10713247B2 (en) | Executing queries for structured data and not-structured data | |
WO2020139655A1 (en) | Technique of comprehensively support autonomous json document object (ajd) cloud service | |
Chung et al. | JackHare: a framework for SQL to NoSQL translation using MapReduce | |
US10776368B1 (en) | Deriving cardinality values from approximate quantile summaries | |
Venkatesan et al. | PoN: Open source solution for real-time data analysis | |
Tian | Accelerating data preparation for big data analytics | |
Data | SQL and NoSQL Database Comparison | |
Cao | Big Data Database for Business | |
Maccioni et al. | NoXperanto: Crowdsourced polyglot persistence | |
Feng | ART: A Large Scale Microblogging Data Management System | |
Lehner et al. | Web-Scale Analytics for BIG Data |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170511 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20180814 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20181114 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20190514 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20190520 |
|
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: 20191029 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20191111 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6617117 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |