JP2014013561A - ログ無し極小データ移動 - Google Patents

ログ無し極小データ移動 Download PDF

Info

Publication number
JP2014013561A
JP2014013561A JP2013093552A JP2013093552A JP2014013561A JP 2014013561 A JP2014013561 A JP 2014013561A JP 2013093552 A JP2013093552 A JP 2013093552A JP 2013093552 A JP2013093552 A JP 2013093552A JP 2014013561 A JP2014013561 A JP 2014013561A
Authority
JP
Japan
Prior art keywords
data
level
level storage
storage structure
architecture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2013093552A
Other languages
English (en)
Other versions
JP6109634B2 (ja
Inventor
Franz Faerber
フランツ・フェーバー
Juchang Lee
ジュチャン・リー
Schreter Ivan
イヴァン・シュレーター
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
SAP SE
Original Assignee
SAP SE
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by SAP SE filed Critical SAP SE
Publication of JP2014013561A publication Critical patent/JP2014013561A/ja
Application granted granted Critical
Publication of JP6109634B2 publication Critical patent/JP6109634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2365Ensuring data consistency and integrity
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • G06F16/162Delete operations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/28Databases characterised by their database models, e.g. relational or object models
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0604Improving or facilitating administration, e.g. storage management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0602Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
    • G06F3/0614Improving the reliability of storage systems
    • G06F3/0619Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/0644Management of space entities, e.g. partitions, extents, pools
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0647Migration mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/065Replication mechanisms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0646Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
    • G06F3/0652Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0673Single storage device
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0668Interfaces specially adapted for storage systems adopting a particular infrastructure
    • G06F3/0671In-line storage system
    • G06F3/0683Plurality of storage devices

Abstract

【課題】ログ無し極小データ移動のシステムおよび方法を提供すること。
【解決手段】マルチレベルストレージアーキテクチャ内で、データを第1のレベルのストレージ構造から第2のレベルのストレージ構造にマージするための内部トランザクションが開始される。内部トランザクションによって指定された、確定されたデータが前記マルチレベルストレージアーキテクチャの第1のレベルのストレージ構造から読み取られる。確定されたデータは、バルク挿入プロセスで、第1のレベルのストレージ構造から第2のレベルのストレージ構造内に挿入され、その確定されたデータは、第1のレベルのストレージから削除されているとしてマーキングされる。その確定されたデータが第2のレベルのストレージ構造内に挿入されているとき、次いで、マルチレベルストレージアーキテクチャに対して内部トランザクションが確定される。
【選択図】図1

Description

関連出願の相互参照
本出願は、その開示が参照により本明細書に組み込まれているFIXED STRING DICTIONARYという表題の、2012年4月30日に出願した米国仮出願第61/640,689号、およびUNIFIED TABLE USING MULTI-LEVEL STORAGE ARCHITECTUREという表題の、2012年5月11日に出願した米国仮出願第61/646,162号の米国特許法第119条による優先権を主張するものである。
本明細書で開示される主題は、マルチレベルストレージを有する統合テーブルアーキテクチャ(unified table architecture)を使用したインメモリデータベースのデータ管理に関し、より詳細には、統合テーブルアーキテクチャの上位レベルストレージ構造から記録を削除するためのシステムおよび方法に関する。
現代のビジネスアプリケーションにおけるデータ管理は、今日のソフトウェア業界において最も困難な課題のうちの1つである。データは今日のビジネスを促進しているだけでなく、新規性のあるビジネスアイディアまたはビジネスケースを構築するための土台も提供する。データ管理は、あらゆる異なる特色の点で、すべての組織にとって主要な資産になっている。また、データ管理は、現在のビジネスを促進および発展させるための主要手段として、上級経営管理層でかなりの注目を集めている。システムの側面で、データ管理シナリオは、管理するには極めて複合的かつ複雑なものになった。効果的で、柔軟、頑強、かつ費用効率が高いデータ管理層は、今日のビジネス環境において、いくつかの異なるアプリケーションシナリオのコアである。
当初、典型的な企業資源計画(enterprise resource planning: ERP)システムは、そのようなアプリケーションシナリオに対処する情報処理バックボーンとして実施された。データベースシステムの観点から、ERPシステムのオンライントランザクション処理(online transaction processing: OLTP)作業量は、通常、数千人の同時ユーザと、高い更新負荷および非常に選択的なポイントクエリを伴うトランザクションとに対処することを必要とする。他方で、通常、OLTPの相対物と見なされるデータウェアハウスシステムは、膨大な量のデータに関して集約クエリを実行するか、またはデータベース内に格納されたアーティファクトを解析するための統計モデルを計算する。残念ながら、データストリーム内の異常またはETLタスク/情報統合タスクを識別するためのリアルタイム解析などのアプリケーションは、現代のビジネスアプリケーションの文脈で、非常に多様な様々な、場合によっては、絶対的に困難な要件をデータ管理層に加える。
従来のデータベース管理システムは、もはや、様々な異なる要件に関して全体的な回答を表すことができないと主張している人もいる。特定の問題に関する特化システムが出現するであろう。現在、大規模なデータ管理ソリューションは、異なるアプリケーションシナリオ用の異なる機能を備えた異なるシステムの混在であると通常見なされる。例えば、典型的な行ストア(row-stores)が依然としてOLTP領域を支配している。記録内の論理エンティティと物理表現との間に1:1関係を維持することは、エンティティベースの相互作用モデルの場合、明らかなように思われる。列編成データ構造(Column-organized data structures)は、問い合わされた列の投影を回避して、かなり良好なデータ圧縮率を利用するために、解析領域でますます多くの注目を集めた。キーバリューストア(Key-value stores)は、「大きなデータ」量に対処するためだけでなく、手順コードに関するプラットフォームが並列で行われることを実現するためにも、商用データ管理ソリューションに影響を及ぼし始めている。加えて、安価なストレージ機構と、クラウドのような弾性のための柔軟な並列性とを提供する分散型ファイルシステムは、キーバリューストアをデータ管理アリーナの第一級市民にした。システム過多は、トリプルストア(triple stores)によって完成され、スキーマフレキシブルデータ(schema-flexible data)とグラフベースの編成とに対処する。スキーマはデータが伴うため、システムは、エンティティ間の明示的にモデル化された関係を利用し、解析的なグラフアルゴリズムを実行し、一般に、弱く型付けされた(weakly-typed)エンティティ用のリポジトリを示すための効率的な手段を提供する。
特化システムは、パフォーマンスに焦点を当てる最初の試みでは賢明な戦略と見なされるが、システム過多は、異なるシステムをリンクするため、データの複製作業および伝搬作業を実行するため、または複数のシステムを介してクエリシナリオを編成するためには途方もない複雑さを生み出す。加えて、そのような環境をセットアップして、維持することは、複雑、かつエラーを起こし易いだけでなく、かなり高い総所有コスト(total cost of ownership: TCO)ももたらす。ハイレベルな観点から、現在の状況の根本的な誘因を以下のように観察することができる。
使用観点:SQLは、もはや、現代のビジネスアプリケーションに関する唯一の適切な相互作用モデルとは見なされていない。ユーザは、アプリケーション層によって完全に遮蔽されているか、または自らのデータベースと直接的に相互作用することを望む。第1の事例では、密結合機構を用いてアプリケーション層を最適にサポートする必要がある。第2の事例では、特定のアプリケーション領域に関する内蔵型データベース特徴を備えたスクリプト言語が必要である。包括的なサポート領域特定言語および所有権を主張できるクエリ言語、ならびにユーザがプログラミングの観点から並列性に直接対処するのを可能にするための機構に対する大きな需要も必要とされている。
コスト意識:異なるタイプの作業量および使用パターンに関して統合されたソリューションを提供することによって、ハードウェアからセットアップに至るまでのコストから、運営および保守コストに及ぶ、完全なデータ管理スタックに関するより低いTCOソリューションを提供することに対する明らかな需要が存在する。
パフォーマンス:パフォーマンスは、特化システムを使用するための主な理由と識別され続けている。課題は、可能なとき、および必要なときはいつでも、特化演算子またはデータ構造を使用するための能力を備えた柔軟なソリューションを提供することである。
様々な作業量特性は特化システムの混在を使用することを十分に正当化しない。ビジネスアプリケーションに対処する当発明者らの過去の経験は、特化演算子群の必要性に関する仮説を支持させるに至った。別個のライフサイクルおよび管理セットアップを備えた個々のシステムに対する偏見が存在する。しかし、単一の閉鎖型システムを提供することはあまりにも限界があり、代わりに、一般的なサービスプリミティブ(service primitives)を備えた、柔軟なデータ管理プラットフォームが好ましい。
主に解析DWH作業量の読取りをサポートすることによる大量のトランザクション処理から、ストリーム処理領域の高い更新シナリオに及ぶ様々な作業量特性は、特化システムの混在を選択することを十分に正当化しない。ビジネスアプリケーションに対処する経験は、特化演算子群を必要とさせる。
純粋なデータ処理パフォーマンスに加えて、アプリケーション層とデータ管理層との間に適切な結合機構が欠如していることは、最新システムの主な欠点のうちの1つと識別されている。さらに、別個のライフサイクルと管理セットアップとを備えた個々のシステムは、セットアップと管理とがより困難であるのに対して、単一の閉鎖型システムは一般にあまりにも限界がある。必要とされるのは、一方で、一般的なサービスプリミティブを備え、他方で、個々のクエリ実行ランタイム環境を備えた、柔軟なデータ管理プラットフォームである。
本書は、インメモリデータベースプラットフォームを説明し、異なるトランザクション作業量に対処するデータ管理のいくつかの特定の態様の詳細を説明する。
一態様では、インメモリコンピューティングシステムの統合テーブルアーキテクチャを提供するステップを含むシステムおよび方法が提供される。統合テーブルアーキテクチャは、着信データ要求をデータ記録として論理行フォーマットで格納するための第1のレベルのストレージ構造と、データ記録を論理列フォーマットで符号化および格納するための第2のレベルのストレージ構造と、長期的に格納するために、符号化されたデータ記録を圧縮および格納するためのメインストアとを有するマルチレベルストレージアーキテクチャを含む。
このシステムは、ログ無し極小データ移動(log-less atomic data movement)の方法を実行する。いくつかの態様では、この方法は、マルチレベルストレージアーキテクチャ内で、データを第1のレベルのストレージ構造から第2のレベルのストレージ構造にマージするための内部トランザクションを開始するステップを含む。この方法は、内部トランザクションによって指定された、確定されたデータ(committed data)を第1のレベルのストレージ構造から読み取るステップと、その確定されたデータを、バルク挿入プロセスで、第1のレベルのストレージ構造からの第2のレベルのストレージ構造内に挿入するステップと、その確定されたデータを第1のレベルのストレージから削除されているとしてマーキングするステップとをさらに含む。この方法は、その確定されたデータが第2のレベルのストレージ構造内に挿入されているとき、マルチレベルストレージアーキテクチャに対して内部トランザクションを確定するステップをさらに含む。
本主題の実装形態は、説明される1つまたは複数の特徴を含むシステムおよび方法、ならびに1つまたは複数の機械(例えば、コンピュータなど)に本明細書で説明される動作を結果的に引き起こさせるように動作可能な有形に実施された機械可読媒体を備える物品を含むことが可能であるが、これらに限定されない。同様に、1つまたは複数のプロセッサと、1つまたは複数のプロセッサに結合された1つまたは複数のメモリとを含むことが可能なコンピュータシステムも説明される。コンピュータ可読記憶媒体を含みうるメモリは、1つまたは複数のプロセッサに本明細書で説明される動作のうちの1つまたは複数を実行させる、1つまたは複数のプログラムを含むこと、符号化すること、格納することなどが可能である。本主題の1つまたは複数の実装形態と一致するコンピュータ実施方法は、単一のコンピューティングシステム内または複数のコンピューティングシステム内に常駐する1つもしくは複数のデータプロセッサによって実施可能である。そのような複数のコンピューティングシステムは、接続可能であり、ネットワーク(例えば、インターネット、ワイヤレス広域ネットワーク、ローカルエリアネットワーク、広域ネットワーク、有線ネットワークなど)を介した接続、複数のコンピューティングシステムのうちの1つもしくは複数同士の間の直接接続を経由した接続などを含むが、これらに限定されない、1つもしくは複数の接続を介して、データおよび/またはコマンド、あるいはその他の命令などを交換することが可能である。
本明細書で説明される主題の1つまたは複数の変形形態の詳細が添付の図面および下の説明に記載される。本明細書で説明される主題のその他の特徴および利点は、説明および図面から、かつ請求項から明らかになるであろう。現在開示されている主題のいくつかの特徴は企業リソースソフトウェアシステムまたはその他のビジネスソフトウェアソリューションもしくはビジネスソフトウェアアーキテクチャに関して例示のために説明されるが、そのような特徴は限定的であることが意図されない点を容易に理解されたい。この開示に続く請求項は、保護される主題の範囲を規定することが意図される。
本明細書内に組み込まれ、本明細書の一部を構成する添付の図面は、本明細書で開示される主題のいくつかの態様を示し、明細書と共に、開示される実装形態に関連する原理のうちのいくつかを説明するのに役立つ。
本主題の実装形態と一致する特徴を示すシステムの態様を例示する概略図である。 本主題の実装形態によるシステムと共に使用するためのデータベース階層アーキテクチャを例示する図である。 計算モデルグラフを例示する図である。 統合テーブルストレージアーキテクチャを例示する図である。 統合テーブルの永続性機構およびセーブポイント(savepoint)機構の概要を示す図である。 統合テーブルを使用したデルタマージプロセスを例示する図である。 統合テーブルを使用した別のマージ動作を例示する図である。 再順序付けとのマージを例示する図である。 部分的マージ動作を例示する図である。 統合テーブルの能動メインメモリおよび受動メインメモリに関する範囲クエリ実行を例示する図である。 本主題の実装形態によるデータベース記録ライフサイクルを例示する図である。 L2メモリ内またはメインメモリ内のデータに関する削除動作を例示する図である。 第1のレベルのデータストレージから第2のレベルのデータストレージへのデータ移動を例示する図である。
可能な限り、類似の参照番号は、類似の構造、特徴、または要素を示す。
図1は、(以下で、時として、ある例として交換可能に使用される)SAPのHANAデータベースなど、インメモリデータベースシステム(in-memory database system: IMDS)102を有する、データベースシステム100を示す。IMDS102は、インメモリデータベース104と、十分に構造化されたリレーショナルデータから、不規則に構造化されたデータグラフ、非構造化テキストデータに至るまで様々な構造度のデータをサポートする様々なデータ抽象化を提供するマルチエンジンクエリ処理環境とを含む。処理エンジンのこの完全なスペクトルは、様々なタイプのデータの相互運用性および結合を可能にするための基礎的な物理データ表現など、共通テーブル抽象化に基づく。例示的な実装形態では、インメモリデータベースシステム102は、それぞれ、ビジネススイート設計環境120と、ビジネスウェアハウス設計環境122と、第三者設計環境124とインターフェースを取ることが可能なリアルタイム複製サービス108およびデータサービス110をさらに含む。
IMDS102は、(OLAPキューブおよび領域特定機能ライブラリなど)特定用途向けビジネスオブジェクト112ならびに論理の表現をデータベースエンジン内で直接サポートする。これは、アプリケーションセマンティックスと、クエリ表現性を増大させ、個々のアプリケーションとデータベースとの間の往復数を削減し、データベース104とアプリケーション114、116との間で転送されるデータの量を削減するために利用されうる基礎的なデータ管理プラットフォームとの交換を可能にする。
IMDS102は、一方で、所有権を主張できるアプリケーションサーバとの共有メモリ通信を提供し、他方で、データタイプをデータ管理層内でネイティブに(natively)直接的にサポートすることによって、データベースとアプリケーション層(すなわち、所有権を主張できるアプリケーション114、第三者アプリケーション116、およびビジネスウェアハウスアプリケーション118)との間で効率的に通信することができる。加えて、アプリケーションサーバ技術は、データベースシステムクラスタインフラストラクチャ内に直接的に統合されて、アプリケーション論理およびデータベース管理機能性の複雑な実行を可能にする。
データベースシステム100は、高度に最適化された列指向データ表現を活用して、同じ物理データベース上でトランザクション作業量と解析作業量の両方の効率的な処理もサポートする。これは、洗練されたマルチステップ記録ライフサイクル管理手法によって達成される。
IMDS102は、データ解析シナリオに関して準備が整ったパッケージを生み出すために、様々なコンポーネントを備えたアプライアンスモデルからなる。いくつかの実装形態では、IMDS102は、ビジネスウェアハウス(BW)システム122にネイティブサポートを提供して、クエリシナリオと変換シナリオとをかなり加速させるが、個々の実現化ステップを完全に省くことも可能にする。この機能を提供するために、IMDS102は、IMDS102を行き来する複雑なデータフローを生み出して、それらを維持するための、データローディングツールおよび変換ツールにモデリングスタジオ106を加えたものを有する。データベースシステム102は、効率的かつ柔軟なデータ格納シナリオとデータ問合せシナリオとを提供する。
データベースシステム102は、図2に例示される厳密に階層化されたアーキテクチャに従う。典型的なシステムと同様に、データベースシステム102は、データベース要求のコンパイル時間202とランタイム204とを区別する。また、図2に示されないが、トランザクションマネージャ、許可マネージャ、メタデータマネージャなど、その他のコンポーネントがアーキテクチャ全体を補完することができる。
図2に見られるように、様々なクエリ言語206は、外界とのすべてのインフラストラクチャタスクを実行する(JDBCコネクタ、ODBCコネクタなど)共通の接続およびセッション管理層208を経由してシステムに入ることができる。第1のステップで、クエリ文字列は、言語解決エンジン210によって、すべての領域特定言語にとって局所的な(抽象構文木に類似した)内部最適化表現に変換される。第2のステップで、クエリ表現は、計算グラフマッピングエンジン212によって、その構造および動作が下でさらに詳細に説明される、1つまたは複数のカスタマ特定インメモリデータベース218を含めて、IMDSに関する分散型実行フレームワーク216の一部として論理クエリ処理フレームワークの核心を形成する計算グラフ214にマッピングされる。
計算グラフモデル
計算グラフモデルは、典型的なデータフローグラフ原理に大まかに従う。ソースノードは永続性テーブル構造またはその他の計算グラフの結果を表している。内部ノードは、1つまたは複数の着信データフローを消費する論理演算子を反映し、何らかの任意数の発信データフローを生み出す。さらに、計算グラフ演算子のセットは、2つのグループの演算子タイプに分割可能である。一方で、計算モードは、例えば、集約、投影、結合、合併など、固有演算子のセットを規定する。SQLは、例えば、このクラスの演算子に完全にマッピングされうる。他方で、計算モデルは、通貨換算またはカレンダー機能性などの主要ビジネスアルゴリズムを実施する演算子を提供する。最終的に、計算モデルは、以下のタイプの演算子をサポートする。
SQLノード:計算モデル演算子は、着信データフローに関して完全なSQLステートメントを実行することができる。このステートメントは、パラメータであってよく、計算グラフのランタイムにコンパイルおよび実行可能であり、結果として、「入れ子状の計算」モデル形態をもたらす。
カスタムノード:カスタムノードは、パフォーマンスのために、領域特定演算子をC++で実施するために使用可能である。例えば、FOXなど、SAP所有権を主張できる言語を有する計画シナリオは、財政計画状況をネイティブにサポートするために、特別な「集約解除」演算子を利用することができる。その他の例は、所有権を主張できるWIPEグラフ言語によるデータグラフ内のグラフ探索およびグラフ解析のための最適化された動作である。
Rノード:Rノードは、着信データセットをR実行環境に転送するために使用可能である。次いで、パラメータとして与えられるRスクリプトが、データベースシステムの外部で実行されることになり、結果はさらなる処理のために計算グラフに戻される。
Lノード:言語Lは、データベースシステムの内部ランタイム言語を表す。Lは、C言語の安全なサブセットとして設計され、通常、エンドユーザまたはアプリケーションデザイナにとって直接アクセス可能でない。それよりむしろ、Lは、データフローグラフに直接的にマッピング可能でない領域特定言語のすべての構造体、すなわち、あらゆる種類の命令型制御論理用の目標言語である。
機能演算子のセットに加えて、計算モデルは、アプリケーション規定データ並列化を可能にするための基本構造体としてデータフローのパーティションを動的に規定して、再分布するために、「分離」演算子と「結合」演算子とを提供する。異なる領域特定言語の個々のコンパイラは、所与のクエリスクリプトから計算グラフへのマッピングの最適化を試みる。SQLの場合、このマッピングは、クエリ表現の明確に規定された論理表現に基づく。一般的な事例では、このマッピングは、入力データの推定サイズなどに応じて、発見的問題解決ベースであってよく、またはコストベースであってもよい。例えば、コンパイラは、ループを正規データフローグラフに展開する(unroll)こと、または特定表現に関してLコードを生成することを決定できる。間違いなく最大かつ最も複雑な部分であり、SAPのP*Time1システムなどのメインメモリ行指向リレーショナルデータベースシステムから得られる正規SQLの場合、内部表現は、SQLステートメントの意図を捕捉するために事前規定されたセマンティックスを備えた演算子だけを表す計算グラフに直接的にマッピングされる。
サンプルの計算モデルグラフ300が図3に示される。計算モデルは、個々の領域特定言語のコンパイラを経由して間接的に作成されるか、またはデータベーススタジオ内で視覚的にモデル化されて、データベースシステムのメタデータリポジトリ内に計算ビューとして登録されうる。このプロセスの裏にある全体的な発想は、実際のクエリ言語とは無関係に、複数のデータベースシナリオにおいて微調整されて、再使用されうる複合ビジネスロジックシナリオの特定の断片をカスタマイズすること、すなわち、計算モデルが仮想テーブルの形で任意の領域特定言語スタックから消費されうることである。計算モデルの収集物は、データベースシステムコンテンツとも呼ばれ、別個の製品ライフサイクルプロセスをたどる。図3に示される計算モデルグラフ300は、リレーショナルデータベースシステム内の正規クエリプランに関する差異のうちのいくつかを概説する。例えば、演算子の結果は、複数の消費者にアプリケーションの観点からすでに共有される共通部分式に関して最適化させることができる。第2に、「スクリプト」とラベル付けされたノードは、計算モデルデザイナまたは領域特定クエリコンパイラによって生成されたシステムから入る命令型言語スニペットをラップする(wraps)。加えて、ノード「conv」は、特定用途向け変換ルーチン、例えば、通貨換算または単位換算を実行するための内蔵型ビジネス機能の使用を示す。
計算グラフのコンパイルおよび実行
ユーザ規定クエリ表現、またはユーザ規定クエリスクリプトが計算モデル内のデータフローグラフにマッピングされると、オプティマイザは、典型的な規則およびコストベースの最適化手順を実行して、論理的プランを、次いで分散型実行フレームワークによって実行可能な物理的プランに再構成および変換する。
実行フレームワークは、実際のデータフローと、物理演算子の分散型実行とを編成する。最適化の間に、論理データフローグラフの断片は、「エンジン層」によって提供される物理演算子にマッピングされる。エンジン層自体は、グローバルプランの断片を実際の物理演算子の詳細に適合するための何らかの局所的最適化論理を備えた異なる物理演算子の収集物からなる。詳細には、データベースシステムは、演算子の以下のセットを提供する。
関係演算子:関係演算子の収集物は、典型的な関係クエリグラフ処理に対処する。より詳細に説明されるように、関係演算子は、異なる特徴を示し、例えば、等結合(equi-join)などの演算子のうちのいくつかは、統合テーブルの既存の辞書を直接活用する。
OLAP演算子:OLAP演算子は、ファクトテーブルとディメンションテーブルとを用いたスタージョイン(star join)シナリオ用に最適化される。オプティマイザがこのタイプのシナリオを認識すると、対応するコスト推定を有する実行可能な物理プランとして、対応するクエリプラン断片のOLAP演算子に対するマッピングがエニュメレートされる(enumelated)。
Lランタイム:内部言語L用のランタイムは、所与の計算グラフのLノード内に表されるLコードを実行するための構成単位を反映する。「分割および結合」演算子ペアを使用して、Lランタイムは事前規定されたパーティションに関する並列作業の際に起動可能である。
テキスト演算子:テキスト検索解析演算子のセットは、SAP Enterprise Search製品など、いくつかの製品においてすでに利用可能な、類似性測定からエンティティ解決機能に及ぶ包括的なテキスト解析特徴を実現するための機能性のセットを備える。
グラフ演算子:グラフ演算子は、複合リソース計画シナリオまたはソーシャルネットワーク解析タスクを効率的に実施するためのグラフベースのアルゴリズムに関するサポートを提供する。
データフローグラフは、(通常、異なる物理ノード上で実行する)複数のサーバインスタンス間だけでなく、異なるタイプの演算子間でも分布されるため、このシステムは、最適なデータ転送および交換フォーマット用のツールのセットを提供する。すべての演算子は標準データ転送プロトコルを実施することが必要とされるが、異なる「収集物」内の演算子または異なる「収集物」を超えた個々の演算子は、高度に特殊化された通信プロトコルを有する場合がある。例えば、関係演算子およびOLAP演算子は、高度に圧縮された、所有権を主張できるフォーマットでデータを交換している。また、Rノードは、R内部データフレームフォーマットに対するマッピングを提供する。
異なる物理演算子間の「水平」通信に加えて、これらの演算子は、統合テーブル層に対する共通インターフェースも利用する。以下の項でより詳細に概説されるように、データベースシステムは、異なる演算子に関する様々なアクセス方法を有する抽象表形式ビューを提供する。共通表形式構造は、データエンティティの完全なライフサイクルを実施し、基本的に、最近の修正動作の効果を捕捉するための行ストアと列ストアの結合からなる。データベースシステム内のテーブルは「履歴」とマーキング可能であるため、テーブル層は、アクティブなエンティティの過去の値を捕捉する履歴テーブルの実装形態も提供し、タイムトラベルクエリに関するアクセス方法も提供する。
いくつかの実装形態では、データベースシステムは、メインメモリ内に捕捉されたデータベース状態が損失した場合、回復可能性を提供するために永続層に依存する。永続層は、可変サイズのページを用いた仮想ファイル概念に基づく。永続層は、非常に低いリソースオーバヘッドを有する、一貫したスナップショットを提供するために頻繁なセーブポイントに依存する。これらの特徴は、下でさらに詳細に説明される。
典型的なシステムと対照的に、本明細書に一致する実装形態によるデータベースシステムは、複数の(所有権を主張できる)領域特定言語をサポートするための柔軟なプラットフォームである。柔軟なデータフローモデル(計算グラフモデル)は、システムの概念的なコアを提供する。一方で、クエリ表現、またはクエリスクリプトはモデルのインスタンスにマッピングされる。他方で、すべての異なる物理演算子は、個々の記録に関して完全なライフサイクル管理を実施する同じテーブル層インターフェースを使用している。ログエリアおよびデータエリアは、永続ストレージ内のメインメモリデータベースのトランザクション上一貫した複写を維持するために使用される。
図4に示されるように、統合テーブル構造400は、すべての適用可能な物理演算子に関するデータアクセスを提供する。統合テーブル構造400は、個々のデータベース記録に関するライフサイクル管理を提供する。統合テーブルの技法は、走査ベースの集約クエリに関してだけでなく、非常に選択的なポイントクエリに関しても優れたパフォーマンスを提供するための鍵である。これは、従来の行ベースのデータベースアーキテクチャに主な区別要因(differentiator)を提供する。記録は、概念的に、その存続期間を通して、更新準備が整ったスタイルの(update-in-place-style)データベースシステム内に同じ位置に留まるのに対して、統合テーブル構造400は、物理表現の様々な段階を通じて記録を伝搬する。一般概念として設計されているが、最も一般的なセットアップは、下で説明されるように、正規テーブル内の記録に関する3段階からなる。
図4に示されるように、統合テーブル構造400はL1デルタ構造402を含む。「ホットデルタ」(または、短くL1デルタ)とも呼ばれるL1デルタ構造402は、すべての着信データ要求を受け入れて、それらを書込み最適化様式で記録する。すなわち、L1デルタ構造402は、記録の論理行フォーマットを保存し、高速の挿入および削除、フィールド更新、ならびに記録投影のために最適化される。さらに、L1デルタ構造402は、データ圧縮を実行することができる。経験則として、L1デルタ構造402は、作業量特性および利用可能なメモリの量に応じて、単一のテーブルごとに10,000個から100,000個の行を保持することができる。
統合テーブル構造400は、L2デルタ構造404をさらに含む。「コールドデルタ」(または、短くL2デルタ)とも呼ばれるL2デルタ構造404は、記録ライフサイクルの第2の段階を表し、列ストアフォーマットで組織化される。L1デルタ構造402と対照的に、L2デルタ構造404は、より良好なメモリ使用を達成するために辞書符号化を用いる。しかし、パフォーマンスのために、この辞書は、ポイントクエリアクセスパターン、例えば、一意制約チェックの高速実行を最適にサポートするための、ソートされていない必要二次索引構造である。L2デルタ構造404は、最高で1,000万個まで、またはそれ以上の行を格納するのに大変適している。
統合テーブル構造400は、メインストア406をさらに含む。メインストア406は、最高圧縮率を有するコアデータフォーマットを表し、様々な異なる圧縮方式を利用する。デフォルト設定で、列内のすべての値は、ソートされた辞書内の位置によって表され、個々の値を密にパックできるようにビットパックされた(bit-packed)様式で格納される。辞書は様々なプレフィックス符号化方式を使用して常に圧縮されるものの、メインストアメモリフットプリントをさらに削減するために、単純なランレングス符号化方式からより複雑な圧縮技法に及ぶ様々な圧縮技法の組合せが適用される。
統合テーブル構造400を用いるデータベースシステムは、複雑な大量のローディングシナリオを有するOLAP多用事例に関して設計され、このシステムは、L1デルタを迂回して、L2デルタに直接入ることができる効率的なバルク挿入に関する特殊処理を提供する。エントリーの場所とは無関係に、システムに入るときに、任意の着信記録に関するRowIdが生成されることになる。また、ロギングは、行の第1の出現時に、正規の更新動作/挿入動作/削除動作の場合、L1デルタ内に、またはバルクロード動作の場合、L2デルタ内に発生する。
統合テーブルアクセス
異なるデータ構造は、共通データタイプを共有する。このアクセスは、両方とも、オプションで辞書ベースの行および列のイテレータ(iterator)との共通抽象インターフェースを介して公開される。
さらに、物理演算子のうちのいくつかは、パイプライン動作を可能にして、中間結果に関するメモリ要件を可能な限り削減するために従来のONCプロトコルに続いて、記録ごとに、またはベクトル化された様式で(すなわち、ブロックごとに)プルすることができる。その他の物理演算子は、「すべて実現化」戦略を実施して、クエリ実行の間の演算子切替えコストを回避する。オプティマイザは、論理計算モデルに応じて、異なるタイプの演算子の混合物を決定し、すなわち、異なるタイプの演算子は最終的なクエリ実行プラン内で継ぎ目なしに統合される。
ソートされた辞書を活用する演算子の場合、統合テーブルアクセスインターフェースは、グローバルにソートされた辞書によってテーブルコンテンツも公開する。2つのデルタ構造の辞書が(L1デルタだけに関して)計算され、(L1デルタとL2デルタの両方に関して)ソートされ、主要な辞書とオンザフライでマージされる。一意制約の効率的な妥当性確認を実施するために、統合テーブルは、デルタ構造と主要構造とに関して逆索引を提供する。
記録ライフサイクルは、システムのトランザクション領域(sphere)内で現在実行しているデータベース動作の制御に干渉せずに、システムを通じて個々の記録を非同期的に伝搬するような形で組織化される。現在のデータベースシステムは、「マージステップ」と呼ばれる2つの変換を実現する。
L1デルタからL2デルタへのマージ:L1デルタからL2デルタへの変換は、行組織から列組織へのピボットステップ(pivoting step)を意味する。L1デルタの行は、その対応する列値に分割されて、列単位でL2デルタ構造内に挿入される。受信サイドで、システムは、辞書構造内で潜在的に欠けている値を識別するためのルックアップを実行し、オプションで、辞書の終端に新しいエントリーを挿入して、辞書内の任意の主な再構成動作を回避する。第2のステップで、辞書符号化(添付専用(append-only)構造)を使用して、対応する列値が値ベクトルに加えられる。ステップは両方とも並列で実行可能であるが、これは、移動されるべきタプルの数が事前に知られており、符号化を実際に挿入する前に、新しい辞書内に符号化を確保することを可能にするためである。第3のステップで、伝搬されたエントリーはL1デルタから除去される。すべての実行中の動作は、完全なL1デルタと古いデルタ終端の境界に遭遇するか、またはL2デルタの拡張バージョンと共にL1デルタ構造のトランケートされたバージョンに遭遇する。設計によって、L1デルタからL2デルタへの遷移は本質的に増分的であり、すなわち、記録の遷移は、目標構造のデータを再組織化することに関して何の影響も有さない。
L2デルタからメインへのマージ:L2デルタおよび既存のメインから新しい主要構造が生み出される。L1デルタからL2デルタへのマージは、実行しているトランザクションに関して最小限に侵襲的であるが、L2デルタからメインへのマージはリソース集約的なタスクであり、これは慎重にスケジュールされて、物理レベルで高度に最適化されなければならない。L2デルタからメインへのマージが開始するとすぐに、現行のL2デルタは更新のために閉鎖され、新しい空のL2デルタ構造が生み出されて、L1デルタからL2デルタへのマージに関する新しい目標として機能する。マージが失敗した場合、システムは、依然として、新しいL2デルタを用いて動作し、L2デルタおよびメインの前のバージョンとのマージを再度試みる。コアアルゴリズム、ならびに列単位のマージまたは部分的マージなど、異なる最適化技法の詳細が下でさらに説明される。
上で説明された両方のマージ動作は、テーブル内に含まれたデータに影響を及ぼさないが、テーブルは再組織化される。しかし、マージ動作は、再起動またはバックアップのログ再生に依存しない。
永続性マッピング
データベースシステムはメインメモリ中心データベースシステムであるが、その完全なACIDサポートは、耐久性を保証すると同様に、極小性と、正規の停止またはシステム障害の後に、システムが再起動する場合、回復とを保証する。データベースシステムの永続性は、複数の永続性概念に基づきうる。図5に見られるように、永続性500は、一時的な再実行ログ502と、短期回復または長期バックアップのためのセーブポイントデータエリア504内のセーブポインティングの組合せに基づく。
再実行のためのロギングは、新しいデータがシステムの、L1デルタ内か、またはバルク挿入の場合はL2デルタ内に入るときに一度だけ実行される。記録の新しいバージョンは、L1デルタに入るとき、ロギングされる。L1デルタからL2デルタへの増分的な伝搬の間に発生する変更は、再実行ロギングの対象ではない。それよりむしろ、辞書内、ならびに値索引内の変更は個々のデータページ内に常駐するデータ構造内に加えられ、これらは最終的に次のセーブポイント内の永続ストレージに移される。メインのより長いデルタの古いバージョンは、マージがセーブポイントを通して存続して(persisted)いない場合、再起動時に使用可能である。マージは再組織化であるため、再起動後に、一貫したデータベースの起動を確実にするために、テーブルのコンテンツは依然として同じままである。
図6は、永続性マッピングの動作を例示する。辞書と値索引は両方とも基礎となるストレージサブシステムによって管理されたページ化ストレージレイアウト(paged storage layout)に基づく。ダーティなページ、すなわち、追加のエントリーを有する既存のページ、または新しいページは、セーブポインティングインフラストラクチャの制御の下でストレージサブシステムによって流し出される(flushed out)。L2デルタ構造は列ごとに組織化されるが、システムは、メモリ消費用に最適化するために、単一のページ内に複数のL2デルタ列の断片を格納することができる。特に、小さいが広範なテーブルの場合、同じページ内に複数のL2デルタ列を格納することは非常に合理的でありうる。セーブポイントの後に、再実行ログはトランケート可能である。回復の間、システムはL2デルタの最後のスナップショット(セーブポイント)を再ロードし、関連するセーブポイント以来書き込まれた再実行ログエントリーを適用する。
同様に、メインの新しいバージョンは、安定したストレージ上に存続することになり、統合テーブルのメインストアを再ロードするために使用されうる。要約すると、前のバージョンの画像が依然として存在するため、L2デルタのトランケーションもメインの変更もログ内に記録されない。典型的なロギング方式は、L1デルタに関して、およびL2デルタ内へのバルクロードに関してだけ用いられる。
要約すると、データベースシステム内のテーブルの物理表現は、3つのレベル、すなわち、着信挿入を効率的に捕捉すると同様に、要求を更新および削除するための行ストア(L1デルタ)と、読取り最適化ストアから書込み最適化を結合解除する列フォーマット内の中間構造(L2デルタ)と、メインストア構造とからなる。この第3の構造は、OLAPのようなクエリに非常に適しているが、同時に、逆索引構造を使用することによって、ポイントクエリに効率的に応答するようにうまく調整されている。存続期間の間、記録はストレージ構造を通じて非同期的に伝搬されて、初めに、最も更新効率の高いストア内に入り、その存続期間の残りの間、最も読取り効率の高いストア内に留まることになる。
マージ最適化
上で説明された統合テーブル手法の主な発想は、両極端を結合解除するために、L2デルタ索引を用いて、書込み最適化ストレージ構造から読取り最適化ストレージ構造に透過的な記録伝搬を行うためである。L1デルタからL2デルタへの遷移は既存のデータ構造の大部分を乱すことなしに実行可能であるが、L2デルタおよびメインのマージは、テーブルのコンテンツの主な再組織化を必要とする。
典型的なマージ
典型的なマージ動作の第1のステップで、L2デルタの辞書エントリーは、メイン辞書内で辞書編集的にコンパイルされて、特定の列に関してソートされた新しいメイン辞書を生み出す。新しい辞書は、新しいメイン構造の有効エントリーだけを含み、すべての削除または修正された記録のエントリーを廃棄する。辞書のソート順序は、最適圧縮に関する必須要件を提供するだけでなく、辞書符号化された列に直接作用する特化演算子用の基礎でもある。
図7は、マージステップの主な段階を示す。ソートされていない辞書を有するL2デルタと、ソートされた辞書を有する古いメインとに基づいて、第1の段階は、新しくソートされた辞書を生成して、(明示的に格納されていないことが明らかな)新しい位置、ならびにメイン内およびL2デルタ内の古い位置からマッピング情報を保存する。図7に見られるように、一部のエントリーは、両方の辞書内の位置(例えば、「Los Gatos」)を示すか、または一部のエントリーは、メイン辞書内もしくはL2デルタ辞書内だけに出現する(例えば、辞書位置マッピングテーブルのデルタ内の値4、メイン側に値-1を有する「Campbell」)。第2の段階で、既存のエントリーおよび新しく追加されたエントリーに関する新しい辞書を指す位置を備えた新しいメイン索引が構成される。例えば、再び図7を参照すると、「Daly City」に関するエントリーは、新しい位置値4を有する新しいメインに転送される。同様に、「Los Gatos」に関するエントリーも、L2デルタ内の位置1、および古いメイン構造内の位置5から新しい位置(このとき6)にマッピングされる。新しいメイン(辞書および値索引)がディスクに書き込まれて、古いデータ構造が解放される。いずれの場合も、依然として古いバージョンを指すオープントランザクションのすべてのデータベース動作がその実行を終えるまで、システムは、列の古いバージョンおよび新しいバージョン(辞書およびメイン索引)をメインメモリ内に維持しなければならない。
マージの基本的なバージョンは非常にリソース集約的であるため、データベースシステムはいくつかの異なる最適化を実施する。例えば、L2デルタの辞書がメイン辞書のサブセットである場合、辞書生成の第1の段階は省略され、結果として、メインエントリーの安定位置をもたらす。L2デルタ辞書の値がメイン辞書内の値を超える場合、例えば、タイムスタンプの増大が存在する場合、もう1つの特別事例が存在する。この状況において、辞書値を符号化するためのビット数が基数の拡張に対処するために十分である場合、L2デルタの辞書はメイン辞書に直接追加されうる。より複雑な最適化を再ソートマージ戦略および部分的マージ戦略の直交技法に見ることができる。これらの技法は両方とも下でより詳細に概説される。
再ソートマージ
L2デルタとメインの間のマージの典型的なバージョンは、辞書エントリーの前の位置を新しい辞書の新しい位置にマッピングすることを必要とする。これらの位置は、次いで、ビットパックされた値索引内の実値を符号化し、すなわち、列の別個の値の数としてCを用いて、システムは、それらの位置を符号化するために[log2(C)]、すなわち多くのビットを費やす。このマージは、古いメイン値を(同じ数のビットまたは増大した数のビットを有する)新しい辞書位置にマッピングして、L2デルタのエントリーを新しい値索引の終端に追加する。
マージの拡張バージョンは、全テーブルのコンテンツを再組織化して、すべての列のデータ分布に関してより高い圧縮可能性を提供するデータレイアウトを生み出すことを目的とする。データベースシステム列ストアは位置アドレス指定方式を利用するため、第k番目の記録の値はすべての列内の第k番目の位置になければならない。最適な圧縮方式を得るために1つの列を再ソートすることは、したがって、テーブル内のすべての他の列の圧縮可能性に直接影響を及ぼす。システムは、新しいメインを作成する前に、メイン構造およびL2デルタ構造からの統計に基づいて、列の「最善の」ソート順序を計算する。
図8は、必要なデータ構造を示す。古い辞書位置を新しい辞書内の位置に変換するための辞書用マッピングテーブルに加えて、再ソートマージのバージョンは、個々の列をマージおよび再ソートした後に、行を再構成することができるように行位置のマッピングテーブルをさらに作成する。図8は、マージプロセスの前とマージプロセス中の同じテーブルの列を示し、この場合、列「都市」および「Prod」はすでにマージされており、残りの列(例えば、「時間」など)は、マージの前の状態を依然として反映している。したがって、メインの古いバージョンのエントリーは、古い辞書内の位置に対応し、例えば、「都市」列のエントリー「Los Gatos」は古い辞書の値5と、マージの後のバージョン内の6とを用いて符号化される。したがって、一般に、マージを「都市」列に適用した後で、新しいメイン索引は、新しい辞書の辞書位置、ならびに行の再ソートを示す。
例示されるように、第7番目の行を、このとき第2の位置に見出すことができる。「Prod」列も、新しい辞書を構築せずに、マージされており、例えば、辞書位置値が保存される。しかし、「時間」列はまだマージされておらず、依然として、古い辞書と古いソート順序とを指す。すでにマージされた列を有する行構築が必要とされる場合、まだマージされていない列に対するいずれのアクセスも、行位置マッピングテーブルを通して追加の間接ステップを取ることが必要とされる。行位置マッピングテーブルは、すべての列のマージが完了した後で除去されうる。システムは、行位置マッピングテーブルを「積み重ねる」ことによって、アクセスされる頻度が低い列のマージを概念的に遅延させることができるが、システムは、新しいマージ生成を開始する前に、常に、全テーブルに関するマージ動作を完全に完了する。再ソートマージを適用することは、したがって、すべての列に関するマージの間に、列アクセスに関する追加の位置マッピングのオーバヘッドと、結果として生じるより高い圧縮率の可能性との平衡を保つためのコストベースの決定である。個々の列にマージを適用するためのソート基準は、複数の要因、例えば、ポイントアクセスと範囲アクセスの比率、圧縮可能性の改善にも依存する。
部分的マージ
典型的なマージまたは再ソートマージの主な欠点は、メインの新しいバージョンを作成するためのオーバヘッド全体である。大きなテーブルまたはパーティションの場合、新しい辞書を計算して、メイン索引を再度生成することは、利用可能なCPUリソースとディスクリソースに悪影響を及ぼす。部分的マージは、前のアルゴリズムを一般化することによって、この問題の緩和を試みる。部分的マージ戦略は、飽和列に関して、すなわち、辞書内の新しいエントリーの数が少ない状況で、最善の可能性を示す。
部分的マージは、メインを2つの(または、2つを超える)独立メイン構造に分割するように構成される。
受動メイン:受動メインは、一般に、マージプロセスの一部ではない、メインストアの安定部分を反映する。
能動メイン:能動メインは、動的に伸縮し、L2デルタを用いたマージプロセスに加わる列の一部である。
いくつかの実装形態では、部分的マージ戦略内のマージ間隔は、空の能動メインから始まる。受動メインは、ソートされた辞書と対応する値索引とを備えた正規メイン構造を反映する。マージ動作がスケジュールされるときはいつでも、L2デルタは(依然として空の)能動メインとマージし、受動メインはそのままの状態に留まる。完全マージと比較して、部分的マージは1つの小さな例外を示す。能動メインの辞書は、n+1の辞書位置値から始まり、式中、nは、受動メイン辞書の基数である。システムは、このとき、局所的にソートされた辞書を備えた2つのメイン構造を有するが、個々のメイン値索引構造の符号化は重複していない。能動メインの辞書は、受動メインの辞書内にまだ存在しない新しい値だけを保持する。
図10は、部分的マージの後の受動メインおよび能動メインのサンプル状況を示す。能動メインの辞書コードは、受動メインの符号化方式が続くように、符号化値n+1=6から始まる。受動メインの対応する値索引構造は受動メイン辞書内のエントリーに対する参照だけを保持するのに対して、能動メインの値索引は受動メインの符号化値を示すことも可能であり、能動メイン辞書を受動メイン辞書に依存させる。
ポイントアクセスは、受動的辞書内で解決される。要求される値が見出された場合、受動メイン値索引と能動メイン値索引の両方に関する符号化値として、対応する位置が使用される。並列走査は対応するエントリーを見出すために実行される。しかし、要求された値が見出されない場合、能動メインの辞書が閲覧される。値が存在する場合、結果として生じる行位置を識別するために、能動メイン値索引だけが走査される。範囲アクセスの場合、これらの範囲は両方の辞書内で解決され、両方の構造に関して範囲走査が実行される。能動メインの場合、走査は、一方は受動的辞書の符号化範囲値に関し、もう一方は能動メイン辞書の符号化範囲に関する、2つの部分範囲に分割される。図10は、C%とL%との間の値を用いた範囲クエリに関してこの動きを例示する。トランザクションの一貫性を保証するために、クエリ処理は、LIデルタおよびL2デルタとの類似のマージをさらに必要とする。
システムが動作している間、能動メインは、完全マージがスケジュールされるまで、動的に伸縮することができる。この概念の主な利点は、低い処理負荷を伴う状況まで完全マージを遅延させて、L2の(能動)メインへのマージのコストを削減することである。また、能動メインの最大サイズを0に設定して、すべてのステップで(典型的な)完全マージを余儀なくすることによって、典型的なマージ方式として最適化戦略を展開することが可能である。この手順は、局所辞書の依存性に関して論理チェーンを形成する複数の受動メイン構造に拡張可能である。この構成は、ゆっくり変化する辞書または安定な辞書を有する列(例えば、「カスタマ」テーブル内の「国」列)に適している。しかし、列の大部分に関して、このシステムは、1つの受動メインだけを保持することになる。
部分的マージ最適化戦略は、データベースシステム統合テーブル概念の一般的な記録ライフサイクル内で追加のステップを実施する。パイプラインの終端に近ければ近いほど、ますます複雑で、ますます時間とリソースを消費する再組織化が記録に適用され、最終的に、従来の列ストアの高度に圧縮されて、読取り最適化されたフォーマットで終わる。加えて、データベースシステムは、記録の前のバージョンを別個のテーブル構造体に透過的に移すために履歴テーブルの概念を提供する。しかし、テーブルは、作成時間の間に「履歴」タイプのものと規定されなければならない。さらに、アプリケーションの観点から、最近のデータセットをより安定したデータセットから分離するために、パーティションで区切る機能性が使用されうる。
上で説明されたように、データベースシステムは、トランザクション作業量および解析作業量に効率的なアクセスを提供するために、記録ライフサイクル管理の発想を利用する。図11は、議論されたストレージフォーマットおよび伝搬ステップの様々な特性を明らかにする。L1デルタは、更新集約的な作業量に関して最適化されて、増分的かつ頻繁に、L2デルタ構造にマージされうる。L2デルタ構造は、読取り動作に関してすでに良好に調整されているが、高度に読取り最適化されたメイン構造と比較して、より大きなメモリフットプリントを必要とする。しかし、L2デルタは、L1デルタ行またはバルク挿入の目標として特に良好に機能する。すでに議論されたように、オプションで能動部分と受動部分とに分割されたメインは、最高の圧縮率を示し、走査ベースのクエリパターン用に最適化される。リソース集約的な再組織化タスクにより、能動メインへのマージ、特に、新しいメイン構造を作成するための完全マージは非常に低い頻度でスケジュールされる。L1デルタからL2デルタへのマージは、対照的に、データをL2デルタ辞書と値索引とに添付することによって、増分的に実行可能である。
図12は、インメモリコンピューティングシステムの統合テーブルアーキテクチャのL2デルタメモリ604内またはメインメモリ606内のデータに関する動作600を例示する。上で議論されたように、統合テーブルアーキテクチャは、共通クエリ実行エンジン601からの着信データ要求をデータ記録として論理行フォーマットで格納する第1のレベルのストレージ602(L1デルタストレージ)構造を含むマルチレベルストレージアーキテクチャを有する。統合テーブルアーキテクチャは、データ記録を論理列フォーマットで符号化および格納する第2のレベルのストレージ604(L2デルタストレージ)構造と、長期的に格納するために、符号化されたデータ記録を圧縮および格納するためのメインストア606とをさらに含む。
データ記録は行IDによって規定される。データ記録の削除動作は、その行IDを使用して、テーブル内のデータ記録に関するルックアップを実行するステップを含む。ルックアップは、まずL1デルタ内で実行される。文書識別子がL1デルタストレージ内に見出されない場合、ルックアップはL2デルタストレージ内で実行される。文書識別子がL2デルタ内に見出されない場合、ルックアップはメインストア内で実行される。行の位置が判断されていないとき、L1デルタ、L2デルタ、またはメインストレージに関するそれぞれの可視性情報は、削除されたとして行をマーキングするような形で修正される。テーブルの様々な部分は、可視行のビットマップおよびトランザクション特定のデルタビットマップのセット、または記録ごとの削除タイムスタンプなど、異なる可視性情報構造を使用することができる。可視性情報が適切に修正された後で、再実行ログエントリーがデータベースの再実行ログ内に書き込まれて、取消ログエントリーがトランザクションの取消ログ内に書き込まれる。トランザクションが確定する(commits)場合、削除された行を潜在的に読み取る一貫性のあるビューが存在しないとき、その取消エントリーは廃棄されて、削除された行のデータスペースはマージ動作の間に取り戻される。トランザクションが中断される場合、その変更を可視性情報にロールバックするための取消動作が実行される。
データ記録の更新は、記録の新しいバージョンの挿入と記録の現在のバージョンの削除の組合せによって実現されうる。これは、記録がL2デルタ内またはメインストア内にすでに位置している場合である。記録がL1デルタストア内に位置する場合、記録は、まずその記録を追加のバージョンスペース内で実現し、次いで、バージョンスペースからのバージョンをL1デルタストアに戻して統合することによってその場で更新可能である。圧縮されていないことに加えて、これはL1デルタの主な利点のうちの1つである。更新はその場で行われるため、非キー更新のために二次索引を更新する必要はない。
この場合、記録の行IDは、更新動作を通じて変更してよく、または変更しなくてもよい。L2デルタ内およびメイン内の更新は、更新された記録に関して新しいRowIDを常に生成する。新しいバージョンはL1デルタ内に配置される。この場合も、再実行ログエントリーはデータベースの再実行ログに書き込まれ、取消ログエントリーはトランザクションの取消ログ内に書き込まれる。この場合、トランザクションのロールバック(取消動作を実行すること)は、新しい行バージョンおよび古い行バージョンの可視性情報を単に適切にマーキングすること(L2デルタ内またはメイン内の更新)になるか、または、新しいバージョンをバージョンスペースから除去すること(L1デルタの更新)になる。
図13は、第1のレベルのデータストレージ702、すなわちL1デルタから、第2のレベルのデータストレージ704、すなわちL2デルタへのデータ移動を例示する。
本明細書で説明された主題の1つもしくは複数の態様または特徴は、デジタル電子回路、集積回路、特別に設計された特定用途向け集積回路(application specific integrated circuit: ASIC)、フィールドプログラマブルゲートアレイ(field programmable gate array: FPGA)、コンピュータハードウェア、ファームウェア、ソフトウェア、および/またはそれらの組合せの形で実現されうる。これらの様々な態様または特徴は、ストレージシステム、少なくとも1つの入力デバイス、および少なくとも1つの出力デバイスからデータならびに命令を受信して、それらにデータならびに命令を送信するために結合された、特殊であってよく、または汎用であってもよい、少なくとも1つのプログラマブルプロセッサを含めて、プログラマブルシステム上で実行可能なかつ/あるいは解釈可能な1つもしくは複数のコンピュータプログラムの形での実装形態を含むことが可能である。プログラマブルシステムまたはコンピューティングシステムは、クライアントとサーバとを含むことが可能である。クライアントおよびサーバは、一般に、互いから遠隔であり、通常、通信ネットワークを介して相互作用する。クライアントとサーバの関係は、それぞれのコンピュータ上で実行しており、互いに対してクライアント‐サーバ関係を有するコンピュータプログラムにより生じる。
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリケーション、コンポーネント、またはコードと呼ばれる場合もあるこれらのコンピュータプログラムは、プログラマブルプロセッサ用の機械命令を含み、高級手続き型言語および/もしくはオブジェクト指向プログラミング言語で、かつ/またはアセンブリ言語/機械語で実施可能である。本明細書で使用される場合、「機械可読媒体」という用語は、例えば、機械可読信号として機械命令を受信する機械可読媒体を含めて、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される、磁気ディスク、光ディスク、メモリ、およびプログラマブル論理デバイス(programmable logic device: PLD)など、任意のコンピュータプログラム製品、装置、ならびに/またはデバイスを指す。「機械可読信号」という用語は、機械命令および/またはデータをプログラマブルプロセッサに提供するために使用される任意の信号を指す。機械可読媒体は、例えば、非一次固体メモリ、もしくは磁気ハードドライブ、または任意の等価記憶媒体が行うように、そのような機械命令を非一時的に格納することが可能である。機械可読媒体は、別法として、または加えて、例えば、1つもしくは複数の物理プロセッサコアと関連付けられたプロセッサキャッシュまたはその他のランダムアクセスメモリが行うように、そのような機械命令を一時的な形で格納することが可能である。
ユーザとの相互作用を実現するために、本明細書で開示された主題の1つもしくは複数の態様または特徴は、ユーザに情報を表示するための、例えば、陰極線管(cathode ray tube: CRT)、もしくは液晶ディスプレイ(liquid crystal display: LCD)、または発光ダイオード(light emitting diode: LED)モニタなどのディスプレイデバイスと、それによって、ユーザがコンピュータに入力を提供できる、キーボード、および、例えば、マウスまたはトラックボールなどのポインティングデバイスとを有するコンピュータ上で実施可能である。ユーザとの相互作用を提供するために、その他の種類のデバイスが同様に使用されうる。例えば、ユーザに提供されるフィードバックは、例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバックなど、任意の形の感覚フィードバックであってよく、ユーザからの入力は、音響入力、音声入力、または触覚入力を含むが、これらに限定されない、任意の形で受信可能である。その他の考えられる入力デバイスは、タッチスクリーン、あるいは、シングルポイント抵抗式トラックパッドもしくはマルチポイント抵抗式トラックパッド、またはシングルポイント容量式トラックパッドもしくはマルチポイント容量式トラックパッド、音声認識ハードウェアおよび音声認識ソフトウェア、光学式スキャナ、光学式ポインタ、デジタル画像捕捉デバイス、ならびに関連する解釈ソフトウェアなど、その他のタッチ感応デバイスを含むが、これらに限定されない。
本明細書で説明された主題は、所望される構成に応じて、システム、装置、方法、および/または物品の形で実施可能である。前述の説明に記載された実装形態は、本明細書で説明された主題に一致するすべての実装形態を表していない。それよりはむしろ、これらの実装形態は、説明された主題に関する態様に一致するいくつかの単なる例である。少数の変形形態が上で詳細に説明されているが、その他の修正形態または追加が可能である。詳細には、さらなる特徴および/または変形形態が、本明細書に記載される特徴ならびに変形形態に加えて提供可能である。例えば、上で説明された実装形態は、開示された特徴の様々な組合せおよびサブコンビネーション、ならびに/または上で開示された、いくつかのさらなる特徴の組合せおよびサブコンビネーションに関する場合がある。加えて、添付の図面で示され、かつ/または本明細書で説明された論理フローは、所望される結果を達成するために、示された特定の順序、または連続的な順序を必要とするとは限らない。その他の実装形態は以下の請求項の範囲内でありうる。
100 データベースシステム
102 インメモリデータベースシステム(IMDS)
データベースシステム
104 インメモリデータベース
データベース
106 モデリングスタジオ
108 リアルタイム複製サービス
110 データサービス
112 特定用途向けビジネスオブジェクト
114 アプリケーション
所有権を主張できるアプリケーション
116 アプリケーション
第三者アプリケーション
118 ビジネスウェアハウスアプリケーション
120 ビジネススイート設計環境
122 ビジネスウェアハウス設計環境
ビジネスウェアハウスシステム
124 第三者設計環境

Claims (10)

  1. マルチレベルストレージアーキテクチャを有するインメモリコンピューティングシステムの統合テーブルアーキテクチャ内で、前記ストレージアーキテクチャが、着信データ要求をデータ記録として論理行フォーマットで格納するための第1のレベルのストレージ構造、前記データ記録を論理列フォーマットで符号化および格納するための第2のレベルのストレージ構造、および長期的に格納するために、前記符号化されたデータ記録を圧縮および格納するためのメインストアを有する、ログ無し極小データ移動の方法であって、
    前記マルチレベルストレージアーキテクチャ内で、データを前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造にマージするための内部トランザクションを開始するステップと、
    前記内部トランザクションによって指定された、確定されたデータを前記第1のレベルのストレージ構造から読み取るステップと、
    前記確定されたデータを、バルク挿入プロセスで、前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造内に挿入するステップと、
    前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングするステップと、
    前記確定されたデータが前記第2のレベルのストレージ構造内に挿入されているとき、前記マルチレベルストレージアーキテクチャに対して前記内部トランザクションを確定するステップと
    を含む方法。
  2. 前記バルク挿入プロセスが、
    前記確定されたデータに関するページ識別子を生成するステップと、
    前記ページ識別子に関する取消ログを作成するステップと
    を含む、請求項1に記載の方法。
  3. 前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングする前記ステップが、前記確定されたデータのページ削除バージョンを前記第1のレベルのストレージに追加するステップをさらに含む、請求項1に記載の方法。
  4. インメモリコンピューティングシステムの統合テーブルアーキテクチャを提供するステップであって、前記統合テーブルアーキテクチャがマルチレベルストレージアーキテクチャを有し、前記ストレージアーキテクチャが、着信データ要求をデータ記録として論理行フォーマットで格納するための第1のレベルのストレージ構造、前記データ記録を論理列フォーマットで符号化および格納するための第2のレベルのストレージ構造、および長期的に格納するために、前記符号化されたデータ記録を圧縮および格納するためのメインストアを有する、提供するステップと、
    前記マルチレベルストレージアーキテクチャ内で、データを前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造にマージするための内部トランザクションを開始するステップと、
    前記内部トランザクションによって指定された、確定されたデータを前記第1のレベルのストレージ構造から読み取るステップと、
    前記確定されたデータを、バルク挿入プロセスで、前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造内に挿入するステップと、
    前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングするステップと、
    前記確定されたデータが前記第2のレベルのストレージ構造内に挿入されているとき、前記マルチレベルストレージアーキテクチャに対して前記内部トランザクションを確定するステップと
    を含む方法。
  5. 前記バルク挿入プロセスが、
    前記確定されたデータに関するページ識別子を生成するステップと、
    前記ページ識別子に関する取消ログを作成するステップと
    を含む、請求項4に記載のコンピュータ実施方法。
  6. 前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングする前記ステップが、前記確定されたデータのページ削除バージョンを前記第1のレベルのストレージに追加するステップをさらに含む、請求項4に記載のコンピュータ実施方法。
  7. 前記開始するステップ、前記読み取るステップ、前記挿入するステップ、前記マーキングするステップ、および前記確定するステップが、1つまたは複数のプロセッサによって実行される、請求項4に記載のコンピュータ実施方法。
  8. 少なくとも1つのプログラマブルプロセッサ、
    着信データ要求をデータ記録として論理行フォーマットで格納するための第1のレベルのストレージ構造、前記データ記録を論理列フォーマットで符号化および格納するための第2のレベルのストレージ構造、および長期的に格納するために、前記符号化されたデータ記録を圧縮および格納するためのメインストア、ログ無し極小データ移動の方法を有する、マルチレベルストレージアーキテクチャ、ならびに
    前記少なくとも1つのプログラマブルプロセッサによって実行されたとき、前記少なくとも1つのプログラマブルプロセッサに、
    前記マルチレベルストレージアーキテクチャ内で、データを前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造にマージするための内部トランザクションを開始するステップと、
    前記内部トランザクションによって指定された、確定されたデータを前記第1のレベルのストレージ構造から読み取るステップと、
    前記確定されたデータを、バルク挿入プロセスで、前記第1のレベルのストレージ構造から前記第2のレベルのストレージ構造内に挿入するステップと、
    前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングするステップと、
    前記確定されたデータが前記第2のレベルのストレージ構造内に挿入されているとき、前記マルチレベルストレージアーキテクチャに対して前記内部トランザクションを確定するステップと
    を含む動作を実行させる命令を格納した機械可読記録媒体
    を備えたシステム。
  9. 前記バルク挿入プロセスが、
    前記確定されたデータに関するページ識別子を生成するステップと、
    前記ページ識別子に関する取消ログを作成するステップと
    を含む、請求項8に記載のシステム。
  10. 前記確定されたデータを前記第1のレベルのストレージから削除されているとしてマーキングする前記ステップが、前記確定されたデータのページ削除バージョンを前記第1のレベルのストレージに追加するステップをさらに含む、請求項8にシステム。
JP2013093552A 2012-04-30 2013-04-26 ログ無し極小データ移動 Active JP6109634B2 (ja)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
US201261640689P 2012-04-30 2012-04-30
US61/640,689 2012-04-30
US201261646162P 2012-05-11 2012-05-11
US61/646,162 2012-05-11
US13/843,986 2013-03-15
US13/843,986 US9165010B2 (en) 2012-04-30 2013-03-15 Logless atomic data movement

Publications (2)

Publication Number Publication Date
JP2014013561A true JP2014013561A (ja) 2014-01-23
JP6109634B2 JP6109634B2 (ja) 2017-04-05

Family

ID=48226920

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013093552A Active JP6109634B2 (ja) 2012-04-30 2013-04-26 ログ無し極小データ移動

Country Status (4)

Country Link
US (3) US9165010B2 (ja)
EP (1) EP2660733A1 (ja)
JP (1) JP6109634B2 (ja)
CN (1) CN103425722B (ja)

Families Citing this family (48)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9465844B2 (en) 2012-04-30 2016-10-11 Sap Se Unified table query processing
US9165010B2 (en) 2012-04-30 2015-10-20 Sap Se Logless atomic data movement
US11010415B2 (en) 2012-04-30 2021-05-18 Sap Se Fixed string dictionary
US9465829B2 (en) 2012-04-30 2016-10-11 Sap Se Partial merge
US9171020B2 (en) 2012-04-30 2015-10-27 Sap Se Deleting records in a multi-level storage architecture
US10162766B2 (en) 2012-04-30 2018-12-25 Sap Se Deleting records in a multi-level storage architecture without record locks
US9417974B2 (en) * 2013-03-28 2016-08-16 Microsoft Technology Licensing, Llc. Transaction processing for database in persistent system
US9449032B2 (en) * 2013-04-22 2016-09-20 Sap Se Multi-buffering system supporting read/write access to different data source type
WO2015016949A1 (en) * 2013-08-02 2015-02-05 Schneider Electric Usa Inc. Systems and methods for measurement equivalency
US9507810B2 (en) 2013-12-10 2016-11-29 Sap Se Updating database schemas in a zero-downtime environment
JP6158361B2 (ja) * 2014-02-07 2017-07-05 株式会社東芝 情報処理装置及び方法
US10558571B2 (en) 2014-03-20 2020-02-11 Sybase, Inc. Second level database file cache for row instantiation
US9870382B2 (en) 2014-03-25 2018-01-16 Sap Se Data encoding and corresponding data structure
JP6287441B2 (ja) * 2014-03-26 2018-03-07 日本電気株式会社 データベース装置
US10929395B2 (en) * 2014-08-18 2021-02-23 Sap Se Data modification in hypothetical planning
US9916187B2 (en) * 2014-10-27 2018-03-13 Oracle International Corporation Graph database system that dynamically compiles and executes custom graph analytic programs written in high-level, imperative programming language
US10747737B2 (en) * 2014-11-25 2020-08-18 Sap Se Altering data type of a column in a database
WO2016160035A1 (en) 2015-04-03 2016-10-06 Hewlett Packard Enterprise Development Lp Persistent memory versioning and merging
US9959306B2 (en) 2015-06-12 2018-05-01 International Business Machines Corporation Partition-based index management in hadoop-like data stores
US10169439B2 (en) 2015-06-19 2019-01-01 Sap Se Multi-source asynchronous table replication
US10268743B2 (en) 2015-06-19 2019-04-23 Sap Se Distributed database transaction protocol
US10795881B2 (en) 2015-12-18 2020-10-06 Sap Se Table replication in a database environment
US10235440B2 (en) 2015-12-21 2019-03-19 Sap Se Decentralized transaction commit protocol
US10572510B2 (en) 2015-12-21 2020-02-25 Sap Se Distributed database transaction protocol
US10552413B2 (en) 2016-05-09 2020-02-04 Sap Se Database workload capture and replay
US10506016B2 (en) 2016-05-19 2019-12-10 Oracle International Corporation Graph analytic engine that implements efficient transparent remote access over representational state transfer
US10298702B2 (en) 2016-07-05 2019-05-21 Sap Se Parallelized replay of captured database workload
US10853364B2 (en) * 2016-09-28 2020-12-01 Microsoft Technology Licensing, Llc Direct table association in in-memory databases
US10162710B2 (en) * 2016-11-28 2018-12-25 Sap Se Version space reconstruction during database initialization
US10949310B2 (en) * 2016-11-28 2021-03-16 Sap Se Physio-logical logging for in-memory row-oriented database system
US10761946B2 (en) 2017-02-10 2020-09-01 Sap Se Transaction commit protocol with recoverable commit identifier
US10592528B2 (en) 2017-02-27 2020-03-17 Sap Se Workload capture and replay for replicated database systems
CN107038231A (zh) * 2017-04-11 2017-08-11 南京南瑞集团公司 一种数据库高并发事务合并方法
US10585873B2 (en) 2017-05-08 2020-03-10 Sap Se Atomic processing of compound database transactions that modify a metadata entity
US11573947B2 (en) 2017-05-08 2023-02-07 Sap Se Adaptive query routing in a replicated database environment
US10936578B2 (en) 2017-06-01 2021-03-02 Sap Se Client-driven commit of distributed write transactions in a database environment
US10977227B2 (en) 2017-06-06 2021-04-13 Sap Se Dynamic snapshot isolation protocol selection
US10698892B2 (en) 2018-04-10 2020-06-30 Sap Se Order-independent multi-record hash generation and data filtering
GB201807877D0 (en) * 2018-05-15 2018-06-27 Palantir Technologies Inc Data storage system and method
US11347705B2 (en) 2019-04-02 2022-05-31 Sap Se Supporting scalable distributed secondary index using replication engine for high-performance distributed database systems
US11080257B2 (en) * 2019-05-13 2021-08-03 Snowflake Inc. Journaled tables in database systems
US11709752B2 (en) 2020-04-02 2023-07-25 Sap Se Pause and resume in database system workload capture and replay
US11615012B2 (en) 2020-04-03 2023-03-28 Sap Se Preprocessing in database system workload capture and replay
US11403274B1 (en) 2021-01-22 2022-08-02 Microsoft Technology Licensing, Llc Efficient creation and/or restatement of database tables
EP4113314A1 (en) * 2021-06-30 2023-01-04 Sap Se Computer-implemented method for database management, computer program product and database system
CN113721863B (zh) * 2021-11-02 2021-12-31 支付宝(杭州)信息技术有限公司 管理数据的方法及装置
US11734282B1 (en) * 2022-03-30 2023-08-22 Microsoft Technology Licensing, Llc Methods and systems for performing a vectorized delete in a distributed database system
US20230315712A1 (en) * 2022-03-31 2023-10-05 Unisys Corporation Method of making a file containing a secondary index recoverable during processing

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032148A (en) * 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
WO2006131978A1 (ja) * 2005-06-10 2006-12-14 Fujitsu Limited Hsm制御プログラム、装置及び方法
JP2010539616A (ja) * 2007-09-21 2010-12-16 ハッソ−プラトナー−インスティテュート フュア ソフトバレシステムテヒニク ゲゼルシャフト ミット ベシュレンクテル ハフツング Oltpデータをレポートするための、重複がないetlレスシステム及びその方法
JP2011090526A (ja) * 2009-10-22 2011-05-06 Fujitsu Ltd 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置
US20120072656A1 (en) * 2010-06-11 2012-03-22 Shrikar Archak Multi-tier caching

Family Cites Families (34)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5204958A (en) 1991-06-27 1993-04-20 Digital Equipment Corporation System and method for efficiently indexing and storing a large database with high data insertion frequency
US5416857A (en) 1992-10-21 1995-05-16 International Business Machines Corporation Apparatus and method for compressing data while retaining image integrity
AU2551495A (en) * 1994-05-16 1995-12-05 Apple Computer, Inc. Method and apparatus for associating and storing arbitrary data with graphical user interface elements
US6305804B1 (en) * 1999-03-25 2001-10-23 Fovioptics, Inc. Non-invasive measurement of blood component using retinal imaging
US6629264B1 (en) 2000-03-30 2003-09-30 Hewlett-Packard Development Company, L.P. Controller-based remote copy system with logical unit grouping
CA2354447C (en) * 2000-07-31 2014-01-21 Motient Communications Inc. Communication system with wireless electronic mail or messaging integrated and/or associated with application program residing on remote computing device
US6845375B1 (en) 2001-10-20 2005-01-18 Ncr Corporation Multi-level partitioned database system
CN1203433C (zh) * 2002-06-26 2005-05-25 联想(北京)有限公司 嵌入式系统的数据存放及其查找组合方法
CN1186939C (zh) * 2003-08-01 2005-01-26 中国科学院计算技术研究所 一种基于多级流水线结构的实时1/4插值方法
US7269606B2 (en) 2004-02-26 2007-09-11 Sap Ag Automatic reduction of table memory footprint using column cardinality information
WO2005093607A1 (en) 2004-02-27 2005-10-06 Ebay Inc. Method and system to monitor a diverse heterogeneous application environment
US20060155915A1 (en) * 2004-12-30 2006-07-13 Pereira Jose P Database query processor
US7499917B2 (en) 2005-01-28 2009-03-03 International Business Machines Corporation Processing cross-table non-Boolean term conditions in database queries
US7882086B1 (en) * 2005-12-21 2011-02-01 Network Appliance, Inc. Method and system for portset data management
US20080059496A1 (en) * 2006-04-07 2008-03-06 Bell Blaine A Thin-client and distributed development using data programming
US7672981B1 (en) * 2007-02-28 2010-03-02 Emc Corporation Object classification and indexing of very large name spaces using grid technology
US7769729B2 (en) 2007-05-21 2010-08-03 Sap Ag Block compression of tables with repeated values
US20100223237A1 (en) 2007-11-05 2010-09-02 University Of Florida Research Foundation, Inc. Lossless data compression and real-time decompression
US8150850B2 (en) * 2008-01-07 2012-04-03 Akiban Technologies, Inc. Multiple dimensioned database architecture
US8595248B2 (en) * 2008-05-21 2013-11-26 Oracle International Corporation Querying a cascading index that avoids disk accesses
US8244716B2 (en) 2008-06-13 2012-08-14 Oracle International Corporation Data pattern for storing information, including associated version and audit information for use in data management
US8108361B2 (en) 2008-07-31 2012-01-31 Microsoft Corporation Efficient column based data encoding for large-scale data storage
JP5341184B2 (ja) 2009-02-20 2013-11-13 株式会社日立製作所 ストレージシステム及びストレージシステムの運用方法
US7868789B1 (en) 2009-06-28 2011-01-11 Sap Ag Dictionary-based order-preserving string compression for main memory column stores
US8700674B2 (en) 2009-07-14 2014-04-15 Hewlett-Packard Development Company, L.P. Database storage architecture
US8359316B2 (en) 2010-03-01 2013-01-22 International Business Machines Corporation Database table look-up
JP5499825B2 (ja) 2010-03-29 2014-05-21 日本電気株式会社 データベース管理方法、データベースシステム、プログラム及びデータベースのデータ構造
US8559512B2 (en) 2010-05-05 2013-10-15 Ceva D.S.P. Ltd. Device, system, and method for predicting residual data for intra and inter frame encoding of image or video data
GB2480599A (en) 2010-05-17 2011-11-30 Tech Universit T Muenchen Hybrid OLTP and OLAP database
US8412690B2 (en) * 2011-04-11 2013-04-02 Sap Ag In-memory processing for a data warehouse
TWI433135B (zh) * 2011-10-04 2014-04-01 Wistron Corp 顯示調整裝置及顯示調整方法
US9171020B2 (en) 2012-04-30 2015-10-27 Sap Se Deleting records in a multi-level storage architecture
US9165010B2 (en) 2012-04-30 2015-10-20 Sap Se Logless atomic data movement

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6032148A (en) * 1997-09-15 2000-02-29 Hewlett-Packard Company Multilevel storage system with hybrid data compression
WO2006131978A1 (ja) * 2005-06-10 2006-12-14 Fujitsu Limited Hsm制御プログラム、装置及び方法
JP2010539616A (ja) * 2007-09-21 2010-12-16 ハッソ−プラトナー−インスティテュート フュア ソフトバレシステムテヒニク ゲゼルシャフト ミット ベシュレンクテル ハフツング Oltpデータをレポートするための、重複がないetlレスシステム及びその方法
JP2011090526A (ja) * 2009-10-22 2011-05-06 Fujitsu Ltd 圧縮プログラム、方法及び装置、並びに解凍プログラム、方法及び装置
US20120072656A1 (en) * 2010-06-11 2012-03-22 Shrikar Archak Multi-tier caching

Also Published As

Publication number Publication date
US20160042028A1 (en) 2016-02-11
JP6109634B2 (ja) 2017-04-05
US9594799B2 (en) 2017-03-14
US10853351B2 (en) 2020-12-01
US9165010B2 (en) 2015-10-20
US20170185642A1 (en) 2017-06-29
EP2660733A1 (en) 2013-11-06
US20130290282A1 (en) 2013-10-31
CN103425722B (zh) 2017-08-15
CN103425722A (zh) 2013-12-04

Similar Documents

Publication Publication Date Title
JP6109634B2 (ja) ログ無し極小データ移動
JP6210714B2 (ja) 部分的マージ
US11567942B2 (en) Unified table query processing
JP6275395B2 (ja) マルチレベルストレージアーキテクチャ内の記録の削除
JP5968828B2 (ja) レコードロックなしでのマルチレベルストレージアーキテクチャ内の記録の削除
Sikka et al. Efficient transaction processing in SAP HANA database: the end of a column store myth
Plattner Sanssoucidb: An in-memory database for processing enterprise workloads
D'silva Join Index Implementation in a Distributed Partitioned Columnar Relational Database Management System

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150417

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160222

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160318

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160601

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161107

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20170130

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: 20170206

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170308

R150 Certificate of patent or registration of utility model

Ref document number: 6109634

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250