IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ サービスナウ, インコーポレイテッドの特許一覧

特許7559062データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法
<>
  • 特許-データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法 図1
  • 特許-データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法 図2
  • 特許-データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法 図3
  • 特許-データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法 図4
  • 特許-データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-09-20
(45)【発行日】2024-10-01
(54)【発明の名称】データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法
(51)【国際特許分類】
   G06F 16/22 20190101AFI20240924BHJP
   G06F 16/2453 20190101ALI20240924BHJP
   G06F 16/28 20190101ALI20240924BHJP
【FI】
G06F16/22
G06F16/2453
G06F16/28
【請求項の数】 19
(21)【出願番号】P 2022526448
(86)(22)【出願日】2020-11-05
(65)【公表番号】
(43)【公表日】2023-01-05
(86)【国際出願番号】 US2020059234
(87)【国際公開番号】W WO2021092270
(87)【国際公開日】2021-05-14
【審査請求日】2022-07-06
(31)【優先権主張番号】62/932,931
(32)【優先日】2019-11-08
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】62/960,567
(32)【優先日】2020-01-13
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/784,982
(32)【優先日】2020-02-07
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】518249328
【氏名又は名称】サービスナウ, インコーポレイテッド
【氏名又は名称原語表記】ServiceNow, Inc.
(74)【代理人】
【識別番号】100121083
【弁理士】
【氏名又は名称】青木 宏義
(74)【代理人】
【識別番号】100138391
【弁理士】
【氏名又は名称】天田 昌行
(74)【代理人】
【識別番号】100074099
【弁理士】
【氏名又は名称】大菅 義之
(72)【発明者】
【氏名】シャー シッダールト ラジェンドラ
(72)【発明者】
【氏名】ノリス ジェレミー
(72)【発明者】
【氏名】バクサ オリヴィエ
(72)【発明者】
【氏名】マート ジョセフ
【審査官】酒井 恭信
(56)【参考文献】
【文献】特開2013-246835(JP,A)
【文献】特開2013-228999(JP,A)
【文献】米国特許出願公開第2008/0281784(US,A1)
【文献】諸岡 大輝 外3名,複数コア環境におけるアクセス範囲を考慮したOLTP/OLAP同時実行手法,第11回データ工学と情報マネジメントに関するフォーラム (第17回日本データベース学会年次大会) [online],2019年03月06日,http://db-event.jpn.org/deim2019/post/papers/97.pdf
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00 - 16/958
(57)【特許請求の範囲】
【請求項1】
システムであって、
データエントリの第1のセットを含む行指向データベースと、
データエントリの第2のセットを含む列指向データベースと、
非一時的コンピュータ可読ストレージ媒体に記憶された1つまたは複数のコンピュータ実行可能プログラムを実行するように構成されたプロセッサを含むコンピューティングデバイスと、を含み、前記1つまたは複数のコンピュータ実行可能プログラムは、前記プロセッサによって実行されたとき、前記プロセッサに、
前記データエントリの第1のセットまたは前記データエントリの第2のセットにおける1つまたは複数のデータエントリに関連した問い合わせ要求を受け取らせ、
前記問い合わせ要求が、1つまたは複数の条件に一致する前記1つまたは複数のデータエントリを識別するためのフィルタリング動作を行うことまたは前記1つまたは複数のデータエントリについて1つまたは複数のアルゴリズムを実行するための分析動作を行うことを含むかどうかを決定させ、
前記フィルタリング動作を含む前記問い合わせ要求に応答して前記行指向データベースに問い合わせさせ、
前記分析動作を含む前記問い合わせ要求に応答して前記列指向データベースに問い合わせさせ、
前記分析動作を含む前記問い合わせ要求に応答して、かつ、前記列指向データベースにおける前記1つまたは複数のデータエントリの不在を検出することに応答して、前記1つまたは複数のデータエントリを含む前記データエントリの第1のセットを前記行指向データベースから前記列指向データベースにコピーさせる、システム。
【請求項2】
前記問い合わせ要求は、前記列指向データベースにおける前記1つまたは複数のデータエントリの前記不在を検出することに応答してレプリケータ構成要素へ送られる、請求項1に記載のシステム。
【請求項3】
前記レプリケータ構成要素は、前記問い合わせ要求を受け取ることに応答して前記データエントリの第1のセットを前記行指向データベースから前記列指向データベースへコピーするように構成されている、請求項2に記載のシステム。
【請求項4】
前記分析動作は、前記1つまたは複数のデータエントリに関連した1つまたは複数の値を集めることを含み、前記フィルタリング動作は、前記行指向データベース内の前記1つまたは複数のデータエントリに関連した1つまたは複数の値を検索することを含む、請求項1に記載のシステム。
【請求項5】
前記1つまたは複数のコンピュータ実行可能プログラムは、前記プロセッサによって実行されたとき、前記プロセッサに、
前記行指向データベースに問い合わせた後に前記フィルタリング動作を含む前記問い合わせ要求に基づいて前記列指向データベースに問い合わせさせ、
前記行指向データベースにおいて行われる前記問い合わせ要求に応答する際の第1の応答性能および前記列指向データベースにおいて行われる前記問い合わせ要求に応答する際の第2の応答性能を分析させ、
前記第1の応答性能および前記第2の応答性能に基づいて、前記行指向データベースまたは前記列指向データベースを特定のデータベースとして選択させ、
前記特定のデータベースにおいて前記フィルタリング動作を含む後続の問い合わせ要求を行わせる、請求項1に記載のシステム。
【請求項6】
前記1つまたは複数のコンピュータ実行可能プログラムは、前記プロセッサによって実行されたとき、前記プロセッサに、
前記列指向データベースに問い合わせた後に前記分析動作を含む前記問い合わせ要求に基づいて前記行指向データベースに問い合わせさせ、
前記行指向データベースにおいて行われる前記問い合わせ要求に応答する際の第1の応答性能および前記列指向データベースにおいて行われる前記問い合わせ要求に応答する際の第2の応答性能を分析させ、
前記第1の応答性能および前記第2の応答性能に基づいて、前記行指向データベースまたは前記列指向データベースを特定のデータベースとして選択させ、
前記特定のデータベースにおいて前記分析動作を含む後続の問い合わせ要求を行わせる、請求項1に記載のシステム。
【請求項7】
1つまたは複数のプロセッサが、データエントリのセットに関連した問い合わせ要求を受け取ることと、
前記問い合わせ要求が、前記問い合わせ要求により規定された1つまたは複数の条件に一致する前記データエントリのセットの1つまたは複数のデータエントリを識別するためのフィルタリング動作に対応する、という決定に従って、前記1つまたは複数のプロセッサが、前記問い合わせ要求に基づいて行指向データベースに問い合わせることと、
前記問い合わせ要求が、前記データエントリのセットについて1つまたは複数のアルゴリズムを実行することを含む分析動作に対応する、という決定に従って、前記1つまたは複数のプロセッサが、前記問い合わせ要求に基づいて列指向データベースに問い合わせることと、
前記問い合わせ要求が前記分析動作に対応するという決定に応答して、かつ、前記列指向データベースにおける前記データエントリのセットの1つまたは複数のデータエントリの不在を検出することに応答して、前記1つまたは複数のプロセッサが、前記1つまたは複数のデータエントリを前記行指向データベースから前記列指向データベースにコピーすることと、を含む、方法。
【請求項8】
前記フィルタリング動作は、前記行指向データベースにおける前記データエントリのセットを識別することを含む、請求項7に記載の方法。
【請求項9】
前記フィルタリング動作は、前記行指向データベースにおける前記データエントリのセットに関連した1つまたは複数の値を置き換えることを含む、請求項7に記載の方法。
【請求項10】
前記分析動作は、前記列指向データベースにおける前記データエントリのセットに関連した1つまたは複数のデータエントリを集めることを含む、請求項7に記載の方法。
【請求項11】
前記分析動作は、前記集めることの結果に基づいてレポートを生成することを含む、請求項10に記載の方法。
【請求項12】
前記集めることは、前記列指向データベースにおける前記データエントリのセットに関連した前記1つまたは複数のデータエントリについて1つまたは複数のアルゴリズムを実行することを含む、請求項10に記載の方法。
【請求項13】
前記1つまたは複数のプロセッサが、前記フィルタリング動作を含む前記問い合わせ要求に応答して前記行指向データベースに問い合わせた後に前記列指向データベースに問い合わせることと、
前記1つまたは複数のプロセッサが、前記行指向データベースにおいて行われる前記問い合わせ要求に応答する際の第1の応答性能および前記列指向データベースにおいて行われる前記問い合わせ要求に応答する際の第2の応答性能を分析することと、
前記1つまたは複数のプロセッサが、前記第1の応答性能および前記第2の応答性能に基づいて、前記行指向データベースまたは前記列指向データベースにおいて前記フィルタリング動作を含む後続の問い合わせ要求を行うことと、を含む、請求項7に記載の方法。
【請求項14】
前記1つまたは複数のプロセッサが、前記分析動作を含む前記問い合わせ要求に応答して前記列指向データベースに問い合わせた後に前記行指向データベースに問い合わせることと、
前記1つまたは複数のプロセッサが、前記行指向データベースにおいて行われる前記問い合わせ要求に応答する際の第1の応答性能および前記列指向データベースにおいて行われる前記問い合わせ要求に応答する際の第2の応答性能を分析することと、
前記1つまたは複数のプロセッサが、前記第1の応答性能および前記第2の応答性能に基づいて、前記行指向データベースまたは前記列指向データベースにおいて前記分析動作を含む後続の問い合わせ要求を行うことと、を含む、請求項7に記載の方法。
【請求項15】
プロセッサと、
前記プロセッサによってアクセス可能であり、前記プロセッサによって実行されたとき、前記プロセッサに、
データエントリのセットに関連した問い合わせ要求を受け取ることと、
前記問い合わせ要求が、前記問い合わせ要求により規定された1つまたは複数の条件に一致する前記データエントリのセットの1つまたは複数のデータエントリを識別するためのフィルタリング動作に対応する、という決定に従って、前記問い合わせ要求に基づいて行指向データベースに問い合わせることと、
前記問い合わせ要求が、前記データエントリのセットについて1つまたは複数のアルゴリズムを実行することを含む分析動作に対応する、という決定に従って、前記問い合わせ要求に基づいて列指向データベースに問い合わせることと、
前記問い合わせ要求が前記分析動作に対応するという決定に応答して、かつ、前記列指向データベースにおける前記データエントリのセットの1つまたは複数のデータエントリの不在を検出することに応答して、前記1つまたは複数のデータエントリを前記行指向データベースから前記列指向データベースにコピーすることと、
を含む動作を行わせる1つまたは複数のプログラムを記憶したメモリと、を含む、システム。
【請求項16】
前記フィルタリング動作は、前記行指向データベースにおける前記データエントリのセットを識別することを含む、請求項15に記載のシステム。
【請求項17】
前記フィルタリング動作は、前記行指向データベースにおける前記データエントリのセットに関連した1つまたは複数の値を置き換えることを含む、請求項15に記載のシステム。
【請求項18】
前記分析動作は、前記列指向データベースにおける前記データエントリのセットに関連した1つまたは複数のデータエントリを集めることを含む、請求項15に記載のシステム。
【請求項19】
1つまたは複数のプロセッサによって実行されたとき、前記1つまたは複数のプロセッサに、
データエントリのセットに関連した問い合わせ要求を受け取ることと、
前記問い合わせ要求が、前記問い合わせ要求により規定された1つまたは複数の条件に一致する前記データエントリのセットの1つまたは複数のデータエントリを識別するためのフィルタリング動作に対応する、という決定に従って、前記問い合わせ要求に基づいて行指向データベースに問い合わせることと、
前記問い合わせ要求が、前記データエントリのセットについて1つまたは複数のアルゴリズムを実行することを含む分析動作に対応する、という決定に従って、前記問い合わせ要求に基づいて列指向データベースに問い合わせることと、
前記問い合わせ要求が前記分析動作に対応するという決定に応答して、かつ、前記列指向データベースにおける前記データエントリのセットの1つまたは複数のデータエントリの不在を検出することに応答して、前記1つまたは複数のデータエントリを前記行指向データベースから前記列指向データベースにコピーすることと、
を含む動作を行わせる1つまたは複数のプログラムを記憶した、有形の非一時的コンピュータ可読ストレージ媒体。
【発明の詳細な説明】
【技術分野】
【0001】
[関連出願との相互参照]
本出願は、2019年11月8日に出願された、「SYSTEM AND METHODS FOR QUERYING AND UPDATING DATABASES」という名称の米国仮特許出願第62/932,931号の優先権および利益を主張し、また、2020年1月13日に出願された、「SYSTEMS AND METHODS FOR PERFORMING UPDATED QUERY REQUESTS IN A SYSTEM OF MULTIPLE DATABASE ENGINE」という名称の米国仮特許出願第62/960,567号の優先権および利益を主張する。両米国仮特許出願は、全ての目的のためにそれらの全体が参照により本明細書に組み込まれる。
【0002】
本開示は、概して、データベースに問い合わせを行いかつデータベースをアップデートするためのシステムおよび方法に関する。より具体的には、本開示は、特定の問い合わせ要求を受け取ることに応答して適切なデータベースに問い合わせを行うためのシステムおよび方法に関する。
【背景技術】
【0003】
本セクションは、以下で説明および/または請求される本開示の様々な態様に関連する場合がある技術の様々な態様を読み手に紹介することを意図したものである。この考察は、本開示の様々な態様のより良い理解を促進するために読み手に背景情報を提供するのに役立つと考えられる。したがって、これらの記述は、この観点で読まれるべきであり、従来技術の承認として読まれるべきではないことが理解されるべきである。
【0004】
組織は、規模にかかわらず、継続的なオペレーションおよび成功のために情報技術(IT)およびデータおよびサービスへのアクセスに依存する。それぞれの組織のITインフラストラクチャは、関連したハードウェアリソース(例えば、コンピューティングデバイス、ロードバランサ、ファイアウォール、スイッチなど)およびソフトウェアリソース(例えば、生産性ソフトウェア、データベースアプリケーション、カスタムアプリケーションなど)を有する場合がある。これらのリソースは、異なるセッティングまたはバリューを有する1つまたは複数の異なるプロバイダによって提供およびプロビジョニングされる場合がある。
【0005】
様々なタイプのデータは、異なるタイプのコンピュータベースシステムに生成、記憶および維持されるデータベースにおいて組織化および記憶される場合がある。このようなデータベースの例は、行指向データベースおよび列指向データベースを含む。このようなデータベースは、個人情報からの範囲のデータまたは大規模の工業的、商業的、および政府の背景において開発されたデータを記憶するために使用される場合がある。したがって、このような記憶されたデータセットは、取るに足らない小さなサイズから、数千万の記録およびデータ点またはそれ以上を包含する場合があるものまでの範囲にわたる場合がある。しかしながら、データベース内の記録の数および規定されたフィールドの数は増加するので、所定のデータベースアーキテクチャの制限は、効率的に使用されるための所定のデータベースの能力に影響する場合がある。
【発明の概要】
【課題を解決するための手段】
【0006】
本明細書に開示される特定の実施形態の概要が以下に示される。これらの態様は、読み手にこれらの特定の実施形態の簡単な概要を提供するためにのみ提示されており、これらの態様は、本開示の範囲を限定することを意図したものではないことが理解されるべきである。実際、本開示は、以下に示されない場合がある様々な態様を包含する場合がある。
【0007】
1つの実施形態において、システムは、データエントリの第1のセットを含む行指向データベースと、データエントリの第2のセットを含む列指向データベースと、非一時的コンピュータ可読媒体に記憶されたコンピュータ実行可能命令を実行するように構成されたプロセッサを含むコンピューティングデバイスと、を含む。コンピュータ実行可能命令は、処理構成要素によって実行されたとき、処理構成要素に、データエントリの第1のセットまたはデータエントリの第2のセットにおける1つまたは複数のエントリを識別するように構成された問い合わせ要求を受け取らせ、問い合わせ要求が、1つまたは複数のエントリを識別するためのフィルタリング動作を行うことまたは1つまたは複数のエントリを識別するための分析動作を行うことを含むかどうかを決定させ、フィルタリング動作を含む問い合わせ要求に応答して行指向データベースに問い合わせさせ、分析動作を含む問い合わせ要求に応答して列指向データベースに問い合わせさせることを少なくとも含むアクションを行わせる。
【0008】
別の実施形態において、データエントリのセットを含む列指向データベースをアップデートする方法。この方法によれば、プロセッサを介して、データのセットに関連した1つまたは複数のエントリに対する修正の指示が受け取られる。プロセッサを介して、指示を受け取ることに応答してデータエントリのセットにおける1つまたは複数のエントリが識別される。プロセッサを介して、列指向データベースにおけるデータのセットの1つまたは複数のエントリが削除される。プロセッサを介して、列指向データベースの第1の保存セクションにおいて1つまたは複数のエントリを含む1つまたは複数の削除データ構造が形成される。プロセッサを介して、列指向データベースにおいてデータのセットの1つまたは複数のエントリの代わりに1つまたは複数のアップデートされたエントリが挿入される。プロセッサを介して、1つまたは複数の前に実行された問い合わせ要求に関連したエントリの追加的なセットと1つまたは複数の削除データ構造が接合される。プロセッサを介して、1つまたは複数の削除データ構造および第1の保存からのエントリの追加的なセットが削除される。プロセッサを介して、列指向データベースにおける第2の保存セクションにおいてデータエントリのセットの少なくとも部分に対する1つまたは複数の追加的な修正に関連した1つまたは複数の追加的な削除データ構造が生成され、第2の保存セクションは第1の保存セクションとは異なる。
【0009】
追加的な実施形態において、コンピュータ実行可能命令を含む非一時的コンピュータ可読媒体が提供される。コンピュータ実行可能命令は、処理構成要素によって実行されたとき、処理構成要素に、列指向データベースに向けられた問い合わせ要求を受け取らせ、問い合わせ要求が、問い合わせ要求の所定のリストのうちの1つに対応するかどうかを決定させ、問い合わせ要求の所定のリストのうちの1つに対応する問い合わせ要求に応答して問い合わせ要求に基づいて行指向データベースに問い合わせさせることを少なくとも含むアクションを行わせる。
【0010】
上述の特徴の様々な改良が、本開示の様々な態様に関連して存在する場合がある。さらなる特徴が、これらの様々な態様に組み込まれる場合もある。これらの改良および追加的な特徴は、個別にまたはあらゆる組合せにおいて存在する場合がある。例えば、示された実施形態のうちの1つまたは複数に関連して以下で考察される様々な特徴は、単独でまたはあらゆる組合せにおいて本開示の上述の態様のいずれかに組み込まれる場合がある。上記で提供した簡単な概要は、請求項に記載の対象への制限なく本開示の実施形態のある態様および状況を読み手に普及させることだけを意図したものである。
【0011】
本開示の様々な態様は、以下の詳細な説明を読みかつ図面を参照することによってより良く理解される場合がある。
【図面の簡単な説明】
【0012】
図1】本開示の実施形態が動作する場合があるクラウドアーキテクチャの実施形態のブロック図である。
図2】本開示の態様による、図1に存在する場合があるコンピューティングシステムにおいて利用されるコンピューティングデバイスのブロック図である。
図3】本開示の態様による、問い合わせ要求を行うためのデータベースエンジンを決定するために使用されるプロセスのフローチャートである。
図4】本開示の態様による、列指向データベースをアップデートするために使用されるプロセスのフローチャートである。
図5】本開示の態様による、問い合わせ要求の妥当性を評価するために使用されるプロセスのフローチャートである。
【発明を実施するための形態】
【0013】
1つまたは複数の具体的な実施形態を以下に説明する。これらの実施形態の簡潔な説明を提供するための努力において、実際の実装の全ての特徴が明細書において説明されるわけではない。あらゆるこのような実際の実装の開発において、あらゆるエンジニアリングまたは設計プロジェクトにおけるように、1つの実装ごとに変化する場合がある、システム関連および企業関連の制約とのコンプライアンスなどの、開発者の特定の目標を達成するために、多くの実装特定の決定がなされなければならないことが認められるべきである。さらに、このような開発努力は複雑かつ時間のかかるものであり得るが、それにもかかわらず本開示の利益を有する当業者のための設計、製造および生産のルーティン事業であることが認められるべきである。
【0014】
本明細書において使用される場合、「コンピューティングシステム」という用語は、1つのコンピュータ、仮想マシン、仮想コンテナ、ホスト、サーバ、ラップトップおよび/またはモバイルデバイスなどの、しかしながらこれらに限定されない電子コンピューティングデバイス、もしくはコンピューティングシステム上でまたはコンピューティングシステムによって行われるものとして説明された機能を行うために協働する複数の電子コンピューティングデバイスを意味する。本明細書において使用される場合、「媒体」という用語は、そこに記憶されるものとして説明される内容を一緒に記憶する1つまたは複数の非一時的コンピュータ可読物理的媒体を意味する。実施形態は、不揮発性セカンダリストレージ、読み出し専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)を含む場合がある。本明細書において使用される場合、「アプリケーション」という用語は、1つまたは複数のコンピューティングモジュール、プログラム、プロセス、作業負荷、スレッドおよび/またはコンピューティングシステムによって実行されるコンピューティング命令のセットを意味する。アプリケーションの例示的な実施形態は、ソフトウェアモジュール、ソフトウェアオブジェクト、ソフトウェアインスタンスおよび/またはその他のタイプの実行可能なコードを含む。
【0015】
以下でより詳細に考察するように、本明細書に説明された本実施形態は、データベースにおいて問い合わせを行う際の効率を改善する。データの量が増大していることにより、問い合わせ要求の実行および問い合わせ要求に対する応答の時間および複雑さが増大し続けている。その結果、問い合わせ要求を適切なデータベースエンジンへ向けることは、問い合わせ要求に対する応答時間における効率性を提供する場合があり、かつより有用な分析的使用ケースを提供する場合がある。1つの例において、行指向データベースおよび列指向データベースの両方が、データエントリのセットを含む場合がある。問い合わせ要求が受け取られた後、プロセッサは、問い合わせ要求が分析動作を含むかどうかを決定する場合がある。問い合わせ要求が分析動作を含む場合、プロセッサは、列指向データベースが、問い合わせ要求に関連したデータエントリを有するかどうかを決定する場合がある。列指向データベースが実際に、問い合わせ要求に関連したデータエントリを含んでいる場合、プロセッサは、問い合わせ要求を、問い合わせのために列指向データベースへ送る場合がある。列指向データベースが、問い合わせ要求に関連したデータエントリを含んでいない場合、プロセッサが問い合わせ要求を列指向データベースへ送る前に、レプリケータ構成要素が、関連するデータエントリを行指向データベースから列指向データベースへコピーする場合がある。他方で、問い合わせ要求が分析動作を含んでいない場合、プロセッサは、問い合わせ要求を行指向データベースへ送る場合がある。
【0016】
分析動作を含んでいない問い合わせ要求は、どのようにデータが行指向データベースのメモリ構成要素(例えば、メモリブロック)に記憶されているかにより、行指向データベースへ送られる場合がある。行指向データベースのメモリ構成要素に記憶されたデータブロックは、1つの特定のエンティティのための列に関して複数のタイプのデータを含む。このことに留意すると、行指向データベースからのデータブロックに対するアップデートは、列指向データベースと比較して実装するのが比較的容易である。他方、どのようにデータが列指向データベースのメモリ構成要素に記憶されるかにより、プロセッサは、行指向データベースと比較して列指向データベースにおいてより効率的に分析動作を行う場合がある。列指向データベースのメモリ構成要素に記憶されたデータブロックは、複数のエンティティのための複数の値を含み、これにより、複数の値が同じデータタイプに関連させられる。その結果、各列のデータタイプが類似である場合があるので、各列に記憶されたデータについて特定のアルゴリズムを実行することを伴う特定の列または問い合わせ内にデータを集めるなどの分析動作を行うことは、異なる行に記憶されたデータにおいて同じアルゴリズムを行うことと比較して、より効率的に行われる場合がある。
【0017】
このことに留意して、列指向データベースにおけるデータエントリをアップデートすることは、行指向データベースと比較して比較的より困難である場合がある。例えば、行指向セルとして受け取られる場合があるアップデートを行う場合、プロセッサは、アップデートを行うために、行指向データベースにおける特定の数の行を読む場合がある。しかしながら、その列指向性質により、列指向データベースにおいて同じアップデートを行うためには、行指向データベースにおいて行われるのと同じ行指向アップデートを行う場合より前に、最小限の数の行と比較して、より大きな量の列を読む場合がある。したがって、列指向データベースをアップデートすることは、列指向データベースが大量のデータエントリを含む場合、特に時間がかかる場合がある。列指向データベースをアップデートする問題に対応するために、アップデートされるデータエントリを有する行は、データエントリに対する修正が受け取られたという指示を受け取った後、削除される場合がある。削除された行の代わりに、アップデートされたデータエントリを有する新たな行が挿入される場合がある。行を削除することは、削除された行に前に記憶されていたデータを有する別個の削除データ構造を形成する。列指向データベースの第1の保存セクション内において、これらの別個の削除データ構造は、前に実行された問い合わせ要求(例えば、アップデート、修正)に関連したデータエントリと接合される。第1の保存セクションの別個の削除データ構造は、周期ベース(例えば、毎日、毎月)で永久に削除される場合があり、これにより、第1の保存セクションは、削除動作が行われた後、別個の削除データ構造をもはや含まない。別個の削除データ構造が削除された後、新たな問い合わせ要求が、列指向データベースの第2の保存セクションへ向けられる場合がある。これにより、別個の削除データ構造は、列指向データベースの保存セクションが効率的に利用され、列指向データベースの追加的なセクションがデータ記憶および問い合わせ動作のために利用可能であるように、維持される。
【0018】
前記のことに留意して、以下の図面は、マルチインスタンスフレームワークにおいて組織にサービスを提供するために利用される場合がありかつそこで本アプローチが利用される場合がある様々なタイプの一般化されたシステムアーキテクチャまたは構成に関する。対応して、これらのシステムおよびプラットフォームの例は、本明細書において考察された技術が実装またはさもなければ利用される場合があるシステムおよびプラットフォームにも関する場合がある。ここで図1を参照すると、本開示の実施形態が動作する場合があるクラウドコンピューティングシステム10の実施形態の概略図が示されている。クラウドコンピューティングシステム10は、クライアントネットワーク12、ネットワーク14(例えば、インターネット)およびクラウドベースのプラットフォーム16を含む場合がある。幾つかの実装において、クラウドベースのプラットフォーム16は、設定管理データベース(CMDB)プラットフォームである場合がある。1つの実施形態において、クライアントネットワーク12は、スイッチ、サーバおよびルータを含むがこれらに限定されない様々なネットワークデバイスを有するローカルエリアネットワーク(LAN)などのローカルプライベートネットワークである場合がある。別の実施形態では、クライアントネットワーク12は、1つまたは複数のLAN、仮想ネットワーク、データセンター18および/またはその他のリモートネットワークを含むことができる企業ネットワークを表す。図1に示したように、クライアントネットワーク12は、クライアントデバイスが互いにかつ/またはプラットフォーム16をホストするネットワークと通信することができるように1つまたは複数のクライアントデバイス20A、20Bおよび20Cに接続することができる。クライアントデバイス20は、コンピューティングシステムおよび/または一般的にInternet of Things(IoT)デバイスと呼ばれるその他のタイプのコンピューティングデバイスである場合があり、これらは、例えばウェブブラウザアプリケーションを介してまたはクライアントデバイス20とプラットフォーム16との間のゲートウェイとして作用する場合があるエッジデバイス22を介して、クラウドコンピューティングサービスにアクセスする。図1は、プラットフォーム16をホストするネットワークと、その他の外部アプリケーションと、データソースと、サービスと、クライアントネットワーク12との間のデータの通信を容易にするmanagement,instrumentation,and discovery(MID)サーバ24などの、アドミニストレーションまたは管理者デバイス、エージェントまたはサーバを含む。図1には具体的に示されていないが、クライアントネットワーク12は、接続ネットワークデバイス(例えば、ゲートウェイまたはルータ)もしくはカスタマーファイアウォールまたは侵入保護システムを実装するデバイスの組合せを含む場合もある。
【0019】
例示した実施形態について、図1は、クライアントネットワーク12がネットワーク14に結合されていることを示している。ネットワーク14は、クライアントデバイス20とプラットフォーム16をホストするネットワークとの間でデータを送信するために、その他のLAN、wide area network(WAN)、インターネットおよび/またはその他のリモートネットワークなどの1つまたは複数のコンピューティングネットワークを含む場合がある。ネットワーク14内の各コンピューティングネットワークは、電気的および/または光学的ドメインにおいて動作する有線および/または無線プログラマブルデバイスを含む場合がある。例えば、ネットワーク14は、セルラーネットワーク(例えば、Global System for Mobile Communications(GSM)ベースのセルラーネットワーク)、IEEE802.11ネットワークおよび/またはその他の適切な無線ベースネットワークなどの、無線ネットワークを含む場合がある。ネットワーク14は、Transmission Control Protocol(TCP)およびInternet Protocol(IP)などの、あらゆる数のネットワーク通信プロトコルを利用する場合もある。図1には明示的に示されていないが、ネットワーク14は、ネットワーク14上でデータを搬送するように構成された、サーバ、ルータ、ネットワークスイッチおよび/またはその他のネットワークハードウェアデバイスなどの様々なネットワークデバイスを含む場合がある。
【0020】
図1において、プラットフォーム16をホストするネットワークは、クライアントネットワーク12およびネットワーク14を介してクライアントデバイス20と通信することができるリモートネットワーク(例えば、クラウドネットワーク)である場合がある。プラットフォーム16をホストするネットワークは、クライアントデバイス20および/またはクライアントネットワーク12に追加的なコンピューティングリソースを提供する。例えば、プラットフォーム16をホストするネットワークを利用することによって、クライアントデバイス20のユーザは、様々な企業、ITおよび/またはその他の組織関連機能のためのアプリケーションを構築および実行することができる。1つの実施形態において、プラットフォーム16をホストするネットワークは1つまたは複数のデータセンター18において実装されており、各データセンター18は異なる地理学的位置に対応することができる。各データセンター18は、複数の仮想サーバ26(本明細書では、アプリケーションノード、アプリケーションサーバ、仮想サーバインスタンス、アプリケーションインスタンスまたはアプリケーションサーバインスタンスとも呼ばれる)を含み、各仮想サーバ26は、1つの電子コンピューティングデバイス(例えば、1つの物理的ハードウェアサーバ)などの物理的コンピューティングシステム上でまたは複数のコンピューティングデバイス(例えば、複数の物理的ハードウェアサーバ)にわたって実装することができる。仮想サーバ26の例は、ウェブサーバ(例えば、統一されたApache実装)、アプリケーションサーバ(例えば、統一されたJAVA仮想マシン)および/またはデータベースサーバ(例えば、統一されたrelational database management system(RDBMS)カタログ)を含むが、これらに限定されない。
【0021】
プラットフォーム16内でコンピューティングリソースを利用するために、ネットワークオペレータは、様々なコンピューティングインフラストラクチャを使用してデータセンター18を構成するように選択する場合がある。1つの実施形態において、データセンター18のうちの1つまたは複数は、サーバインスタンス26のうちの1つが複数のカスタマーからのリクエストをハンドリングしかつ複数のカスタマーにサービスするように、マルチテナントクラウドアーキテクチャを使用して構成される。マルチテナントクラウドアーキテクチャを有するデータセンター18は、複数のカスタマーからのデータを混合および記憶し、複数のカスタマーインスタンスは仮想サーバ26のうちの1つに割り当てられる。マルチテナントクラウドアーキテクチャにおいて、特定の仮想サーバ26は、様々なカスタマーからのデータおよびその他の情報を区別し、分離する。例えば、マルチテナントクラウドアーキテクチャは、各カスタマーからのデータを識別および分離するために、各カスタマーのために特定の識別子を割り当てることができる。一般に、マルチテナントクラウドアーキテクチャを実装することは、特定のサーバインスタンスに割り当てられた全てのカスタマーのためのアウテージを生じるサーバインスタンス26のうちの特定の1つの障害などの、様々な欠点を生じる場合がある。
【0022】
別の実施形態において、データセンター18のうちの1つまたは複数は、全てのカスタマーに1つまたは複数の自己の固有のカスタマーインスタンスを提供するようにマルチインスタンスクラウドアーキテクチャを使用して構成される。例えば、マルチインスタンスクラウドアーキテクチャは、各カスタマーインスタンスにその自己の専用のアプリケーションサーバおよび専用のデータベースサーバを提供することができる。その他の例では、マルチインスタンスクラウドアーキテクチャは、各カスタマーインスタンスのために、1つまたは複数の専用のウェブサーバ、1つまたは複数の専用のアプリケーションサーバおよび1つまたは複数のデータベースサーバなどの、1つの物理的または仮想サーバ26、および/または、物理的および/または仮想サーバ26のその他の組合せを展開することができる。マルチインスタンスクラウドアーキテクチャにおいて、複数のカスタマーインスタンスを1つまたは複数のそれぞれのハードウェアサーバにインストールすることができ、各カスタマーインスタンスは、コンピューティングメモリ、ストレージおよび処理電力などの、物理的サーバリソースのある部分を割り当てられる。そうすることによって、各カスタマーインスタンスは、データアイソレーション、カスタマーがプラットフォーム16にアクセスするための比較的少ないダウンタイム、およびカスタマードリブンアップグレードスケジュールの利益を提供する自己の固有のソフトウェアスタックを有する。
【0023】
図1は、クラウドコンピューティングシステム10の特定の実施形態を示しているが、開示は、図1に示された特定の実施形態に限定されない。例えば、図1は、プラットフォーム16がデータセンターを使用して実装されることを示しているが、プラットフォーム16のその他の実施形態は、データセンターに限定されず、その他のタイプのリモートネットワークインフラストラクチャを利用することができる。図1の使用および考察は、説明および詳説の容易さを促進するための例でしかなく、図1に示された特定の例に開示を限定することを意図したものではない。
【0024】
認められる場合があるように、図1に関して考察されたそれぞれのアーキテクチャおよびフレームワークは、全体を通じて様々なタイプのコンピューティングシステム(例えば、サーバ、ワークステーション、クライアントデバイス、ラップトップ、タブレットコンピュータ、携帯電話など)を組み込む。完全性のために、このようなシステムにおいて典型的にみられる構成要素の簡単でハイレベルな概説が提供される。認められる場合があるように、本概説は、このようなコンピューティングシステムにおいて典型的な構成要素のハイレベルで一般化された見解を単に提供することを意図したものであり、考察されるまたは考察から省略される構成要素の観点から限定するものとみなされるべきではない。
【0025】
背景によって、本アプローチが、図2に示されたような1つまたは複数のプロセッサベースのシステムを使用して実装される場合があることが認められる場合がある。同様に、本アプローチにおいて利用されるアプリケーションおよび/またはデータベースは、このようなプロセッサベースのシステムにおいて記憶、利用および/または維持される場合がある。認められる場合があるように、図2に示されたこのようなシステムは、分散されたコンピューティング環境、ネットワーク環境もしくはその他のマルチコンピュータプラットフォームまたはアーキテクチャに存在する場合がある。同様に、図2に示されたようなシステムは、本アプローチが実装される場合がある1つまたは複数の仮想環境または計算インスタンスをサポートするかまたはこれらと通信する際に使用される場合がある。
【0026】
このことに留意して、例示的なコンピュータシステムは、図2に示されたコンピュータ構成要素のうちの幾つかまたは全てを含む場合がある。図2は、概して、コンピューティングシステム200の例示的な構成要素および1つまたは複数のバスなどに沿ったそれらの潜在的な相互接続または通信経路のブロック図を示している。示したように、コンピューティングシステム200は、1つまたは複数のプロセッサ202、1つまたは複数のバス204、メモリ206、入力デバイス208、電源210、ネットワークインターフェース212、ユーザインターフェース214、および/または本明細書に説明された機能を行う際に役立つその他のコンピュータ構成要素などの、しかしながらこれらに限定されない様々なハードウェア構成要素を含む場合がある。
【0027】
1つまたは複数のプロセッサ202は、メモリ206に記憶された命令を行うことができる1つまたは複数のマイクロプロセッサを含む場合がある。幾つかの実施形態において、命令は、メモリ206における各プロセスの実行スタックからパイプラインされる場合があり、より迅速かつ効率的に処理されるために1つまたは複数のプロセッサ202の命令キャッシュに記憶される場合がある。追加的にまたは代替的に、1つまたは複数のプロセッサ202は、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)および/またはメモリ206からの命令をコールすることなく本明細書において考察された機能のうちの幾つかまたは全てを行うように設計されたその他のデバイスを含む場合がある。
【0028】
その他の構成要素に関して、1つまたは複数のバス204は、コンピューティングシステム200の様々な構成要素の間にデータおよび/または電力を提供するための適切な電気チャネルを含む。メモリ206は、あらゆる有形の、非一時的な、コンピュータ可読ストレージ媒体を含む場合がある。図1に1つのブロックとして示されているが、メモリ206は、1つまたは複数の物理的位置において同じまたは異なるタイプの複数の物理的ユニットを使用して実装することができる。入力デバイス208は、1つまたは複数のプロセッサ202にデータおよび/またはコマンドを入力するための構造に対応する。例えば、入力デバイス208は、マウス、タッチパッド、タッチスクリーン、キーボードなどを含む場合がある。電源210は、ライン電力および/またはバッテリソースなどの、コンピューティングデバイス200の様々な構成要素の電力のためのあらゆる適切なソースであることができる。ネットワークインターフェース212は、1つまたは複数のネットワーク(例えば、通信チャネル)上で他のデバイスと通信することができる1つまたは複数のトランシーバを含む。ネットワークインターフェース212は、有線ネットワークインターフェースまたは無線ネットワークインターフェースを提供する場合がある。ユーザインターフェース214は、1つまたは複数のプロセッサ202から伝送されるテキストまたはイメージを表示するように構成されたディスプレイを含む場合がある。ディスプレイに加えておよび/またはディスプレイの代わりに、ユーザインターフェース214は、ライト(例えば、LED)、スピーカなどの、ユーザとインターフェースするためのその他のデバイスを含む場合がある。
【0029】
このことに留意して、問い合わせ要求に応答する際の効率を改善するために、図2において考察したようなコンピューティングシステム200は、問い合わせ要求によって行われる動作のタイプに基づいて特定のデータベースにおいて問い合わせ要求を行う場合がある。したがって、図3は、コンピューティングシステム200が、問い合わせ要求を行うための特定のデータベースを選択する場合があるプロセス300のフローチャートである。進む前に、プロセス300は、問い合わせ要求によって行われる動作のタイプに基づいて問い合わせ要求をルーティングすることに関連した非制限的な例として機能することに留意すべきである。すなわち、プロセス300は、最適なデータベースにおいて問い合わせ要求を行うことに関連した制限された知識が利用可能である場合のデフォルトルーティング方法の一例である場合がある。周期ベースにおいて、コンピューティングシステム200がプロセス300に基づいて特定のデータベース(例えば、行指向データベース)において問い合わせ要求を行った後、コンピューティングシステム200は、2つ以上のデータベースエンジンにおいて問い合わせ要求を行うことについての情報を得るために代替的なデータベース(例えば、列指向データベース)において同じ問い合わせ要求を行う場合がある。異なるデータベースエンジンにおいて問い合わせ要求を行うことに関する情報を分析することに基づいて、コンピューティングシステム200は、問い合わせ要求を行うための最適なデータベース(例えば、時間効率、最速結果、計算的効率)を決定することに基づいて特定のデータベースにおいて後続の問い合わせ要求を行う場合がある。
【0030】
プロセス300は、コンピューティングシステム200がクライアントサーバから問い合わせ要求を受け取るところから開始する(ブロック302)。問い合わせ要求の動作は、複雑さおよび応答時間(すなわち、問い合わせ要求が行われるためにかかる時間の量)が変化する場合がある。問い合わせのための応答時間は、データベースの異なるタイプに応じても変化する場合がある。例示的な問い合わせ要求は、データを表形式で集めること、レポートをレンダリングするためにデータを分析すること、またはデータエントリおよび対応するラインを識別するためにアドホック形式でデータをフィルタリングすることを含む場合があるが、これらに限定されない。問い合わせ要求は、クライアントサーバまたはあらゆるその他の適切なコンピューティングデバイスから周期的に受け取られる場合がある。
【0031】
問い合わせ要求がコンピューティングシステム200によって受け取られると、コンピューティングシステム200は、問い合わせ要求の動作のタイプを決定する場合がある。例えば、ブロック304において、コンピューティングシステム200は、問い合わせ要求がフィルタリング動作を含むかどうかを決定する場合がある(ブロック304)。問い合わせ要求がフィルタリング動作を含む場合、コンピューティングシステム200は、ブロック306へ進み、データエントリが行フォーマットで組織化および記憶されている行指向データベースへ問い合わせ要求を送る場合がある(ブロック306)。幾つかの実施形態では、行指向データベースは、隣接するメモリブロックにおける各行に従ってデータを記憶する場合がある。その結果、読み出しおよび書込み動作は、メモリブロックに記憶されたデータに対応するデータの組織により、行指向データベースに記憶された記録のために効率的に行われる場合がある。例えば、行指向データベースは、フィルタリング動作を行うために使用される場合があり、これにより、特定の条件に一致する記録またはデータエントリを識別することができる。1つの実施形態では、フィルタリング動作は、行指向データベースにおける特定のデータエントリに関連した値を識別するために行を通じて読むことを含む場合がある。別の実施形態では、フィルタリング動作は、データエントリの値を別の値と置き換えることを含む場合がある。
【0032】
再びブロック304を参照すると、問い合わせ要求がフィルタリング動作でない場合、コンピューティングシステム200は、ブロック308へ進む場合がある。ブロック308において、コンピューティングシステム200は、問い合わせ要求が分析動作を含むかどうかを決定する場合がある。問い合わせ要求が分析動作を含む場合、コンピューティングシステム200は、ブロック310へ進む場合がある。ブロック310において、コンピューティングシステム200は、列指向データベースが問い合わせ要求に関連したデータを含むかどうかを決定する場合がある。列指向データベースがリクエストされたデータを含む場合、コンピューティングシステム200は、ブロック312において、問い合わせ要求によって示された動作を行うために列指向データベースに問い合わせ要求を送る場合がある。列指向データベースは、列フォーマットに組織化および記憶されたデータエントリを含む場合がある。幾つかの実施形態では、列指向データベースは、隣接するメモリブロックにおける列におけるそれらの配置または順序に従って記憶データを組織化する場合がある。したがって、特定のタイプの分析プロセシングは、行指向データベースを使用することと比較して、より効率的に行われる場合がある。読み出しおよび書込み動作は、行指向データベースと比較して、列指向データベースにおいてより遅い場合があるが、列指向データベースは、分析動作などの、データセット全体に適用可能な動作を行うために十分に適している場合がある。例えば、分析動作は、多数の行および列にわたる集合を伴う場合がある。分析動作の例は、データエントリをリスト、表、またはグループに集め、データエントリおよびラインからレポートをレンダリングすることを含む場合がある。
【0033】
再びブロック310を参照すると、列指向データベースが問い合わせ要求に関連したデータを含まない場合、コンピューティングシステム200は、ブロック314へ進み、問い合わせ要求をレプリケータ構成要素へ送る場合がある。幾つかの実施形態では、レプリケータ構成要素は、列指向データベースが展開されている同じサーバにおけるサービスとして展開される場合がある。レプリケータ構成要素は、初期データベースへのソースクレデンシャルおよびターゲットデータベースへのターゲットクレデンシャルを介したアクセスを有する場合がある。1つの実施形態において、初期データベースは行指向データベースである場合があるのに対し、ターゲットデータベースは列指向データベースである場合がある。例えば、レプリケータ構成要素は、問い合わせ要求およびデータエントリを初期データベースから読み出しかつデータエントリをターゲットデータベースに列指向フォーマットでコピーするための許可を有する場合がある。問い合わせ要求に関連した関連するデータエントリが、初期データベースからターゲットデータベースへコピーされた後、問い合わせ要求がターゲットデータベース(例えば、列指向データベース)へ送られる場合がある。
【0034】
上記で考察したように、コンピューティングシステム200が問い合わせ要求を受け取った後、コンピューティングシステム200は、問い合わせ要求の動作のタイプを決定する場合がある。問い合わせ要求が、列指向データベースをアップデートすることを伴う場合、コンピューティングシステム200はプロセス400を行う。プロセス400のフローチャートである図4は、どのようにコンピューティングシステム200が列指向データベースをアップデートするかをより詳細に示している。プロセス400は、列指向データベースの1つまたは複数のデータエントリに対する修正の指示を受け取るときに開始する(ブロック402)。修正は、列指向データベースの1つまたは複数のデータエントリへの値またはラインにおけるアップデートまたは変更を伴う場合がある。1つまたは複数のデータエントリの値に対する修正の指示に基づいて、コンピューティングシステム200は、アップデートされる列指向データベースの特定のデータエントリを識別する場合がある(ブロック404)。幾つかの実施形態において、修正は、1つまたは複数のデータエントリにおいて行われる挿入、削除またはアップデート動作に関連する場合がある。修正の例は、異なる表に対するアップデートを生じること、アップデートされるデータエントリのための値またはラインを自動的に生成または変形させること、またはアラートを発行するなどのタスクを行うための機能を呼び出すことを含む場合がある。
【0035】
アップデートされる1つまたは複数のデータエントリが識別された後、コンピューティングシステム200は、データエントリに対する修正が受け取られたことの指示を受け取った後、バッチ処理を介して、アップデートされるデータエントリを有する行を削除する場合がある(ブロック406)。バッチ処理は、各データエントリを一度に1つずつ処理するのではなく、データのしきい値量が蓄積されたとき、スケジュールされた時間に処理するためにデータを収集および記憶することを含むプロセスを含む場合がある。1つの実施形態において、一連の問い合わせ要求またはジョブは、バッチ処理技術の結果として最小限の手動での介入とともにコンピュータ上で実行される場合がある。加えて、バッチ処理は、データベースが所定の期間に処理することが予想されるジョブの平均量と比較して、コンピューティングリソースがより少ない頻度で使用されるかまたは処理するための少量のジョブを有することが予想される場合、問い合わせ要求またはジョブがスケジュールされた時間に処理されることを可能にする場合がある。例えば、バッチ処理は、レポート生成およびデータフォーマット変換を伴う場合がある。
【0036】
上述のように、列指向データベースは、読み出しおよび書込み動作を効率的に行わない場合がある。しかしながら、その列指向性質により、読み出しまたは書込み動作を行うために、列指向データベース、コンピューティングシステム200は、同等の行指向アップデートを行う場合がある前に多数のメモリブロックを通じて読み出す場合がある。このプロセスは、列指向データベースが大量のデータエントリを含む場合、特に時間がかかる可能性がある。その代わり、アップデートをより効率的に実装するために、コンピューティングシステム200は、メモリブロックからアップデートされるデータエントリに関連したメモリブロックの行を削除する場合があり、コンピューティングシステム200は、ブロック406において、メモリブロックを、アップデートされたデータエントリから成る新たな行と置き換える場合がある。
【0037】
アップデートされるデータエントリを有する行を削除するための削除動作を行った後、コンピューティングシステム200は、1つまたは複数の別個の削除データ構造を形成する場合がある(ブロック408)。これらの別個の削除データ構造は、削除された行に前もって記憶されていたデータを表す場合があり、列指向データベースのメモリ構成要素(例えば、メモリブロック)の第1の保存セクションに位置させられる場合がある。削除された行の代わりに、コンピューティングシステム200は、アップデートされたデータエントリまたはバッチ処理を介して値が変化させられたデータエントリを有する新たな行を挿入する場合がある(ブロック410)。その後、第1の保存セクション内で、コンピューティングシステム200は、前に実行された問い合わせ要求(例えば、アップデート、修正)に関連したデータエントリとともに別個の削除データ構造を接合する場合がある(ブロック412)。
【0038】
ブロック414において、コンピューティングシステム200は、周期ベース(例えば、毎月、毎日)で第1の保存セクションの別個の削除データ構造を永久に削除する場合があり、これにより、第1の保存セクションは、削除動作が行われた後、別個の削除データ構造をもはや含まない。別個の削除データ構造が削除された後、コンピューティングシステム200は、問い合わせ要求を列指向データベースの第2の保存セクションへ向ける場合がある(ブロック416)。これ以降、コンピューティングシステム200は、新たな問い合わせ要求のデータエントリを第2の保存セクションへ向ける場合があるのに対し、コンピューティングシステム200は、第1の保存セクションをメモリ構成要素から永久に除去する(ブロック418)。これにより、列指向データベースの保存セクションが効率的に利用されかつ列指向データベースの追加的なセクションがデータ記憶および問い合わせ動作のために利用可能であるように、別個の削除データ構造が維持される。
【0039】
上述のように、分析動作を含む問い合わせ要求は、列指向データベースに向けられる場合がある。しかしながら、幾つかの例において、列指向データベースに向けられた問い合わせ要求は、行指向データベースに再ルーティングされる場合があるかまたはブラックリストに入れられる場合がある。問い合わせ要求が、ブラックリスト要求の所定のリストの部分である場合、問い合わせ要求は、行指向データベースへ送られる場合がある。ブラックリスト要求の所定のリストが、日付トレンド要求、時間トレンド要求、ポイントクエリ、大フィールドプロジェクション、またはそれらのあらゆる組合せを含む場合がある。行指向データベースにおける問い合わせ要求の応答時間が、時間のしきい値量Xよりも小さくない場合、問い合わせは、列指向データベースにおいて行われる場合がある。しかしながら、シンタックスエラーまたはタイムアウトなどの問題により問い合わせが列指向データベースにおいて不合格(fail)である場合、ブラックリストに入れられるかまたは行指向データベースに再ルーティングされる場合がある。問い合わせ要求をブラックリストに入れるかまたは問い合わせ要求を行指向データベースへ再ルーティングすることは、列指向データベースにおいて行われる問い合わせ要求の応答時間が時間のしきい値量Yよりも大きいことを決定することを伴う場合もある。問い合わせ要求をブラックリストに入れるかまたは問い合わせ要求を行指向データベースへ再ルーティングすることの別の例は、列指向データベースにおいて行われる問い合わせ要求の応答時間と、時間のしきい値量Zとの合計が、行指向データベースにおいて行われる問い合わせ要求の応答時間よりも大きいことを伴う場合がある。ブラックリストに入れられた問い合わせ要求は、周期的に再び再評価される場合もある。ブラックリスト化が無効である場合、ブラックリストに入れられた問い合わせ要求は、ブラックリストから外される場合がある。
【0040】
コンピューティングシステム200が、列指向データベースにおいて行われることが意図された問い合わせ要求をブラックリストに入れる場合があるプロセスは、図5に示されている。例えば、図5は、列指向問い合わせ要求がブラックリストに入れられ、したがって、無視されるかまたは行指向データベースへ再ルーティングされる場合があるかどうかを決定するためにコンピューティングシステム200が利用する場合があるプロセス500のフローチャートである。プロセス500は、コンピューティングシステム200が列指向問い合わせ要求を受け取るところから開始する(ブロック502)。図3において言及したように、列指向問い合わせ要求は、データを集めるまたはグループ化することを伴う場合がある分析動作を含む場合がある。
【0041】
コンピューティングシステム200は、問い合わせ要求が行指向データベースへ送信されるかどうかを決定し(ブロック516)かつ問い合わせ要求がブラックリストに入れられるかどうかを決定する(ブロック518)ためにプロセス530内のステップをたどる場合がある。ブラックリスト化は、どの要素(例えば、問い合わせ要求)がコンピューティングエンティティ(例えば、データベース)へのアクセスを許容されるかを制御する機構である。例えば、コンピューティングシステム200がブラックリストに入れようとみなす特定の問い合わせ要求は、特定のデータベースへのアクセスを拒否される場合がある。ブロック504において、コンピューティングシステム200は、問い合わせ要求がブラックリスト要求の所定のリストの部分であるかどうかを決定する場合がある(ブロック504)。ブラックリスト要求の所定のリストは、日付トレンド要求、時間トレンド要求、ポイントクエリ、大フィールドプロジェクション、またはそれらのあらゆる組合せを含む場合がある。1つの実施形態において、ポイントクエリを行うことは、データベースにおいて1つのデータエントリのための分析を提供する場合があるのに対し、大フィールドプロジェクションは、データベースのどのフィールドが問い合わせ要求に応答して表示される場合があるかを制御する場合がある。問い合わせ要求が、ブラックリスト要求の所定のリストの部分である場合、コンピューティングシステム200は、問い合わせ要求を行指向データベースに送る場合があり(ブロック516)、これは、所定のリストの部分である動作のためにより適している場合がある。
【0042】
問い合わせ要求が所定のリストの部分でない場合、コンピューティングシステム200は、行指向データベースにおいて問い合わせ要求を行うための応答時間が、時間のしきい値量Xよりも小さいかどうかを決定する場合がある(ブロック506)。幾つかの実施形態において、時間のしきい値量Xは、構成可能である場合があり、100ミリ秒、1秒、10秒、またはあらゆる適切な時間期間に設定される場合がある。行指向データベースにおいて問い合わせ要求を行うための応答時間が、時間のしきい値量Xよりも大きいと予想される場合、コンピューティングシステム200は、時間のしきい値量Xよりも小さい予想応答時間に応答して問い合わせ要求を含むように問い合わせ要求の所定のリストをアップデートすることによって問い合わせ要求をブラックリストに入れる場合がある(ブロック518)。別の例において、コンピューティングシステム200は、時間のしきい値量Xよりも小さい問い合わせ要求の予想応答時間に基づいて行指向データベースに問い合わせる場合がある(ブロック516)。
【0043】
さもなければ、行指向データベースにおいて問い合わせ要求を行うための応答時間が、時間のしきい値量Xよりも小さいと予想される場合、コンピューティングシステム200は、ブロック508へ進み、列指向データベースにおいて問い合わせ要求を行う場合がある。その結果、コンピューティングシステム200は、問い合わせ要求が列指向データベースにおいて不合格であるかどうかをチェックする場合がある(ブロック510)。問い合わせ要求が実際に列指向データベースにおいて不合格である場合、コンピューティングシステム200は、列指向データベースにおいて不合格の問い合わせ要求に応答して問い合わせ要求を含むように問い合わせ要求の所定のリストをアップデートすることによって問い合わせ要求をブラックリストに入れる場合がある(ブロック518)。別の実施形態において、コンピューティングシステム200は、列指向データベースにおいて不合格の問い合わせ要求に基づいて行指向データベースに問い合わせる場合がある(ブロック516)。1つの実施形態において、問い合わせ要求は、シンタックスエラーまたはタイムアウトにより列指向データベースにおいて不合格である場合がある。例えば、動作において文字を誤って配置することは、シンタックスエラーを生じる場合があり、これにより、問い合わせ要求を実行することを妨げる。別の例において、サーバは、問い合わせ要求を実行するために待つことをタイムアウトする場合がある。
【0044】
ブロック510において、問い合わせ要求が列指向データベースにおいて不合格でない場合、コンピューティングシステム200は、問い合わせ要求がブロック512およびブロック514の条件を満たすかどうかを決定する場合がある。ブロック512において、列指向データベースにおける問い合わせ要求の予想応答時間が、時間のしきい値量Yよりも大きいならば、コンピューティングシステム200は、時間のしきい値量Yよりも大きい問い合わせ要求の予想応答時間に応答して問い合わせ要求を含むために問い合わせ要求の所定のリストをアップデートすることによって問い合わせ要求をブラックリストに入れる場合がある(ブロック518)。例えば、コンピューティングシステム200は、時間のしきい値量Yよりも大きい問い合わせ要求の予想応答時間に基づいて行指向データベースに問い合わせる場合がある(ブロック516)。
【0045】
列指向データベースにおける問い合わせ要求の予想応答時間が、時間のしきい値量Yよりも小さい場合、コンピューティングシステム200は、ブロック514へ進む。ブロック514において、列指向データベースにおける問い合わせ要求の予想応答時間が、時間のしきい値量Zだけ行指向データベースにおける問い合わせ要求の応答時間よりも大きい場合、コンピューティングシステム200は、行指向データベースにおける問い合わせ要求の応答時間よりも大きい、予想応答時間と時間のしきい値量Zとの合計に応答して、問い合わせ要求を含むように問い合わせ要求の所定のリストをアップデートすることによって問い合わせ要求をブラックリストに入れる(ブロック518)。別の例では、コンピューティングシステム200は、行指向データベースにおける問い合わせ要求の応答時間よりも大きい、予想応答時間と時間のしきい値量Zとの合計に基づいて、行指向データベースに問い合わせる場合がある(ブロック516)。
【0046】
両時間のしきい値量YおよびZは、構成可能である場合があり、2秒、5秒、またはあらゆる適切な時間期間に設定される場合がある。列指向データベースにおける問い合わせ要求の予想応答時間は、列指向データベースにおいて実装される問い合わせ要求のモデルまたはシミュレーションに基づいて計算される場合がある。シミュレーションに基づいて計算された平均応答時間は、予想応答時間として設定される場合がある。同様に、行指向データベースにおける問い合わせ要求の予想応答時間は、行指向データベースにおいて実装される問い合わせ要求のモデルまたはシミュレーションに基づいて計算される場合がある。
【0047】
1つの例において、コンピューティングシステム200が行指向データベースにおいて問い合わせ要求を実行しなかった場合、プロセッサは、行指向データベースにおいて行われた問い合わせ要求に関連したデータを欠き、問い合わせ要求はブラックリストに入れられる場合がある。その後、コンピューティングシステム200は、プロセス530を行う前に関連するデータを検索するために、ここでブラックリストに入れられた問い合わせ要求を行指向データベースへ送る場合がある。
【0048】
さもなければ、列指向データベースにおける問い合わせ要求の予想応答時間が、時間のしきい値量Zだけ、行指向データベースにおける問い合わせ要求の応答時間よりも小さい場合、コンピューティングシステム200は、時間のしきい値量Wだけ待機する場合がある(ブロック520)。時間のしきい値量Wは、構成可能であり、24時間またはあらゆる適切な時間期間に設定される場合がある。時間のしきい値量Wを待機した後、コンピューティングシステム200は、ブラックリストに入れられた問い合わせ要求を再評価するために、ブラックリストに入れられた問い合わせ要求を検索する場合がある(ブロック522)。幾つかの例において、コンピューティングシステム200は、再評価するために、最近ブラックリストに入れられた問い合わせ要求を検索する場合がある。別の例において、コンピューティングシステム200は、再評価するために2回または少なくとも2回以上ブラックリストに入れられた問い合わせ要求を検索する場合がある。コンピューティングシステム200は、最近ブラックリストに入れられたことと、2回以上ブラックリストに入れられたこととの組合せである問い合わせ要求を検索する場合さえある。コンピューティングシステム200は、プロセス530内のステップに基づいて、ブラックリストに入れられた問い合わせ要求を再評価する場合がある(ブロック524)。ブロック526において、コンピューティングシステム200は、問い合わせ要求をブラックリストに入れるための決定が有効であるかどうかを決定する。ブラックリスト化が無効である場合、ブラックリストに入れられた問い合わせ要求は、ブラックリストから外される場合がある(ブロック528)。さもなければ、ブラックリスト化が有効である場合、ブラックリストに入れられた問い合わせ要求は、無視され、ブラックリストに入れられたままである場合がある(ブロック518)。幾つかの例において、コンピューティングシステム200のバックエンドにおけるブリップ、エラーまたはバグが、意図しないブラックリスト化を生じる場合、コンピューティングシステム200は、ブラックリストに入れられた問い合わせ要求をブラックリストから外す場合がある。
【0049】
上記で説明した特定の実施形態は、例として示されており、これらの実施形態は、様々な修正および代替的な形態を生じる場合があることを理解すべきである。請求項は、開示された特定の形態に限定されることを意図したものではなく、本開示の思想および範囲に含まれるすべての修正、均等物および代替物をカバーすることが意図されている。
【0050】
本明細書において提供されかつ請求された技術は、当該技術分野を実証可能に改良する実用的性質の材料物体および具体的例に参照および適用され、したがって、要約、無形、または純粋に理論的ではない。さらに本明細書の最後に添付されたあらゆる請求項が、「[ある機能]を[行う]ための手段」または「[ある機能]を[行う]ためのステップ」として指定された1つまたは複数の要素を含む場合、このような要素は、35U.S.C.112(f)の下で解釈されるべきであることが意図されている。しかしながら、あらゆる他の形式で指定された要素を含むあらゆる請求項の場合、このような要素は35U.S.C.112(f)の下で解釈されるべきでないことが意図されている。
図1
図2
図3
図4
図5