JP2017534986A - オンライン・スキームおよびデーター変換 - Google Patents

オンライン・スキームおよびデーター変換 Download PDF

Info

Publication number
JP2017534986A
JP2017534986A JP2017523269A JP2017523269A JP2017534986A JP 2017534986 A JP2017534986 A JP 2017534986A JP 2017523269 A JP2017523269 A JP 2017523269A JP 2017523269 A JP2017523269 A JP 2017523269A JP 2017534986 A JP2017534986 A JP 2017534986A
Authority
JP
Japan
Prior art keywords
database
copy
item
computer
old
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.)
Pending
Application number
JP2017523269A
Other languages
English (en)
Inventor
アントノポウロス,パナヨティス
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.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2017534986A publication Critical patent/JP2017534986A/ja
Pending legal-status Critical Current

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/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/21Design, administration or maintenance of databases
    • G06F16/214Database migration support
    • 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/21Design, administration or maintenance of databases
    • G06F16/219Managing data history or versioning
    • 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/24Querying
    • G06F16/245Query processing
    • G06F16/2453Query optimisation
    • G06F16/24534Query rewriting; Transformation
    • G06F16/24542Plan optimisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Operations Research (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

データーベースを変換しつつ、このデーターベースの変換の間、データーベース内のデーターをデーターベース・ユーザーに利用可能にする。方法は、データーベース項目の古いコピーに対して新バージョンのメタデーターを作成するステップを含む。更に、この方法は、新バージョンのメタデーターにしたがってデーターベース項目の古いコピーからデーターベースの新しいコピーにデーターを移す間、変換をデーターに適用しながら、データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップを含む。更に、この方法は、データーベース項目の古いコピーからデーターベース項目の新しいコピーにデーターを移す間、データーベースにおけるデーター項目を変換する間データーベースがオンラインに留まることを可能にするためにデーターベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップを含む。【選択図】図3

Description

[0001] データーベース・ユーザーがスキーム(例えば、列の形式を変更する)またはデーターの修正(modification)(例えば、名称列を名前および名字という2つの列に分割する)を行わなければならないことは頻繁にあるが、これは大量のデーター更新を必要とする。これは、別のアプリケーション・アップグレードの一部であることもあり、またはスキームの元の設計における何らかの欠陥によることもある。このような処理は、データーベースのテーブルにおける各行上で更新を必要とする場合もある。現在、これらの処理は、オフラインでしか実行できず、アプリケーションに膨大な量の休止時間が発生する。修正が発生している間、データーベース・テーブルはアクセスできないままの状態が続き、いくつかの大きなテーブルが長時間にわたって利用できない事態に発展するおそれがある。
[0002] 更に、これらの変更(change)がアプリケーション・アップグレードの一部であるとき、大抵の場合、新たなアプリケーションを展開できるようになる前に、複数のスキームまたはデーターの変換を行わなければならない。例えば、アプリケーションV1はデーターベース・スキームV1を必要とするが、アプリケーションV2はスキームV2を必要とする。
[0003] 本願において特許請求する主題は、あらゆる欠点を解決する実施形態にも、以上で説明したような環境においてのみ動作する実施形態にも限定されない。むしろ、この背景は、本明細書において説明するいくつかの実施形態を実施することができる1つの例証的な技術エリアを示すために設けられたに過ぎない。
[0004] 本明細書において例示する一実施形態は、コンピューティング環境において実施することができる方法を含む。この方法は、データーベースを変換しつつ、このデーターベースの変換中に、データーベース内のデーターをデーターベース・ユーザーに利用可能にするステップを含む。この方法は、データーベースのデーターベース項目の古いコピーをデーターベース項目の新しいコピーに変換してデーターベース項目の古いコピーにおける項目を変換するために、データーベースのデーターベース項目の古いコピーに対して、新バージョンのメタデーターを作成するステップを含む。この方法は、更に、データーベース項目の古いコピーにおけるデーター項目を変換するためにデーターベース項目の古いコピーからデーターベース項目の新しいコピーにデーターを移動する間、データーベース項目の古いコピーにおいて変換すべきデーター項目に変換を適用しつつ、データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップも含む。更に、この方法は、データーベース項目の古いコピーからデーターベース項目の新しいコピーにデーターを移す間、データーベースにおいてデーター項目を変換する間データーベースがオンラインに留まることを可能にするために、データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップも含む。
[0005] この摘要は、詳細な説明において以下で更に説明する概念から選択したものを、簡略化した形態で紹介するために設けられている。この摘要は、特許請求する主題の主要な特徴や必須の特徴を特定することを意図するのではなく、特許請求する主題の範囲を判断するときに補助として使用されることを意図するのでもない。
[0006] 更に他の特徴および利点は、以下に続く説明において明記され、部分的にはその説明から自明であり、または本明細書における教示の実施によって習得することができる。本発明の特徴および利点は、添付する特許請求の範囲において特定的に指摘される手段(instruments)および組み合わせによって、実現および修得することができる。本発明の特徴は、以下の説明および添付する特許請求の範囲から、更に十分明白になり、以下に明記する発明の実施によって習得することができる。
[0007] 以上で列挙した利点および特徴ならびにその他の利点および特徴を得ることができる方法を説明するために、以上で端的に説明した本主題の更に特定的な説明を、添付図面に図示された具体的な実施形態を参照しながら行う。これらの図面は典型的な実施形態を図示するに過ぎず、したがって範囲を限定するように解釈してはならないことを理解した上で、添付図面の使用により、更に具体的および詳細に、実施形態について説明する(described and explained)。図面において、
図1は、データー項目の新しいコピーおよびデーター項目の古いコピーを含むデーターベースを示す。 図2は、データーベースを変換する処理(operation)を示す。 図3は、データーベースを変換する方法を示す。
[0011] 以下の例は、ワシントン州、RedmondのMicrosoft Corporationから入手可能なSQL Server(登録商標)のコンテキストで例示する。つまり、例示される特定のデーターベース・ステートメントは、この実施態様に特定である。しかしながら、他の実施形態が他のデーターベース製品およびそれらの対応するステートメントを使用してもよいことは認められてしかるべきである。これより図1を参照すると、データーベース例102が示されている。本明細書におけるある実施形態は、旧バージョン104のデーターベース・スキームと、新バージョンのデーターベース・スキームのデーターベース項目の新しいコピーとを実装する(implement)ことができる。更に、実施形態は、旧バージョン104のデーターベース・スキームにしたがってデーターベース項目の古いコピー108を維持し、更に新バージョンのデーターベース・スキームのデーター項目の新しいコピーにしたがってデーターベース項目の新しいコピー110を維持することができる。データーベース102がユーザーに利用可能である(即ち、データーベース102がオンラインになっている)間にスキームおよびデーター型変更処理を実行することによって、アプリケーション112は、データーベース102において必要とされる変更が全て完了し終えるまで、旧バージョン104のスキームに対して処理することができる。次いで、データーベース・アドミニストレーター114はこのスキームを新バージョンのデーターベース項目の新コピーに切り替えることができ、全く停止時間なく(または非常に短い最小限の停止時間で)アプリケーション112をアップグレードすることもできる。本明細書における実施形態は、アドミニストレーター114からのこのような処理を実行するための実行ロジック(implementation logic)の全てを抽象化することができる。アドミニストレーター114は、単に、必要とされる変換を記述するだけでよく、テーブルのようなデーターベース項目の種々のコピーの保守は、システムによって内部で処理される(handled)。
[0012] 例えば、図2を参照すると、ある実施形態では、データー型を古いデーター型から新しいデーター型に変換しつつ、データーを古い列の型から新しい列の型に移すことができる。具体的には、図2は、スキーム変更を示し、もっと大きい数値を列に含ませることを可能にするために、型「int」の列を型「big int」の列に変更する。古い列におけるint列内のエントリーは、bigintデーター型に変換され、新しい列に移動される。実施形態はデーターの2つのコピー108および110を維持することができる。古いコピー108における元のデーターを移している背景スレッド116は、データーが新しいコピー110にコピーされていく(get copied)に連れて、この特定の列に合わせてデーター型を変換するために修正される(modified)。同時更新では、データーの新しいコピー110を維持するクエリー・プランの一部が、ここで、Microsoft, CorporationからのSQL Server(登録商標)における「CONVERT」演算子18のようなデーター型変換演算子、またはデーターを新しいデーター型に変換する他の製品における他のデーター型変換演算子のような、データー型変換演算子を注入するために修正される。これはデーター型変換だけを実行しているが、このロジックは、任意のユーザー定義式によってデーターを変換する(transform)ように拡張することができ、アプリケーション・アップグレードによって必要とされる更に一層複雑なシナリオ(名前を2つの列に分割するような)にも対処する。
[0013] 実施形態は、データーベースがオンラインにありユーザーに利用可能である間にデーターベースを移すために以下のフェーズを実行することができる。
[0014] ・準備フェーズ:このフェーズは、新バージョンのテーブルをメタデーターに追加し、新しい行セット(rowset)を作成し、バージョニングがデーターのスナップショット・スキャンを実行することを可能にする。
[0015] ・構築フェーズ:構築フェーズは、テーブルの新しいコピー110に入力する(populate)ために、Washington州、RedmondのMicrosoft CorporationからのSQL Server(登録商標)におけるINSERT...SELECTのような、データーベースにおけるデーターをコピーするステートメントを実行する。データーベース・クエリー・オプティマイザー120は、これが「特殊な」データー操作言語であることを知り、データーを旧バージョン108から新バージョン110にコピーするプランを生成する。図2に示すように、単にデーターベースからデーターを選択する処理が、旧バージョン108にアクセスすることができる。データーを挿入、更新、または削除する処理は、旧バージョン108および新バージョン110双方にアクセスする。
[0016] ・最終フェーズ:最終フェーズでは、メタデーターを更新するために、非常に短い時間量だけ、テーブルが排他的にロックされ(SQL Server(登録商標)におけるSCH−Mロックのようなスキーム修正ロックのように)、旧バージョン108のテーブルを削除する。スキーム修正ロックは、テーブルの同時アクセスを禁止する。これが意味するのは、スキーム修正ロックは、ロックが解除されるまで、全ての外部処理を阻止するということである。
[0017] オンライン・スキームおよび/またはデーター変換の間、同時選択処理が旧バージョン108のテーブルにアクセスするが、データー操作処理(挿入、更新、および削除のような)は旧バージョン108および新バージョン110の双方を維持しなければならない。メタデーターが、これは「オンライン」テーブルであり、したがって、図2に示すようにこれを適正に維持するために、特殊なクエリー・プランが生成されることを、クエリー・オプティマイザーに知らせる。
[0018] このプロセスは、データーベースがオンラインにある間広い範囲の処理をサポートするために再利用することができる。新バージョン110のテーブルは、ユーザーによって指定されたデーターベース項目の新しいスキームの新しいコピーを用いて作成される。
[0019] これを行うために、新バージョン110のテーブルの維持を適正に行うことができるように、関連メタデーター(relational metadata)をバージョニングし(versioned)、必要な変換を適用する。更に、ストレージ・エンジン122における新しいコピー110内の新しい行セットは、新バージョンのスキームのデーターベース項目によって作成される。加えて、テーブル・ビルダー124によって実行される、SQL Server(登録商標)におけるINSERT...SELECTステートメントのような、データーを挿入および選択するステートメントが、データーを変換しつつ、それを新バージョン110のテーブルにコピーする。クエリー・オプティマイザー120は、2つのバージョンのテーブルを確認し、データーをコピーしつつ変換を適用するために、しかるべきクエリー実行プランを生成する。同時データー操作言語処理は、2つのバージョンのスキーム/データーをメタデーターから確認することができ、クエリー・オプティマイザー120は、必要とされる変換を適用しつつ、新バージョン110のデーターを維持するために特殊なプランを生成する。
[0020] 他の実施態様は、テーブル構築プロセスを使用し、同時更新処理が新バージョン/コピーのデーターを維持する必要はないが、背景タスクが更新のデルタを処理し(process)、それを新バージョン110のデーターにコピーしながら、必要とされる変換を適用する。デルタが非常に小さくなったとき、背景タスクがデーターの最後の部分をコピーしこの処理を終わらせる(finalize)ことができるように、テーブルがロックされる。デルタは、例えば、数百から数千程度の処理し(process)なければならない行とすることができる。しかしながら、ある実施形態では、デルタは、移行が速くなり数ミリ秒しか要さないように、十分に小さくしなければならない場合もある。
[0021] 以上の手法は、より包括的であり、SQL Server(登録商標)のALTER COLUMN処理のように、殆どの列変更(altering)、追加、または削除処理をカバーすることができるが、これに加えて、実施形態は、圧縮列上における特定型変更を、メタデーター専用処理として扱うことができる。これが可能なのは、元の列の型を有する任意の行のフォーマットおよびコンテンツが、新しい列の型による行フォーマットおよびコンテンツと同一である場合である。この場合、実施形態は、行に対する更新は全く行わず、単に、関連エンジンおよびストレージ・エンジン・メタデーターを更新するだけで済ますことができる。現在、メタデーター専用処理として扱われる多くの列変更、追加、または削除処理がある。しかしながら、データー圧縮は、共通して使用され得る更に他の場合をサポートする機会を提供する。
[0022] データー圧縮が可能な行セットでは、全ての列がストレージ・エンジンに、可変長列として、そして実施形態が使用している圧縮アルゴリズムと組み合わせて格納され、例えば、以下の型変更に対して先の要件が有効である。
●・ smallint→int→bigint
●・smallmoney→money
●・ char(N)→char(M), ここで、N≦M
●・ char(N)→varchar(M) , ここで、N≦M
●・ binary(N)→binary(M), ここで、N≦M
●・ binary(N)→varbinary(M), ここで、N≦M
[0023] データー定義言語
[0024] データー定義言語は、スキームまたはデーター変換において使用される処理が「オンライン」処理として行われることをユーザーに指定させる追加のオプションを含むことができる。以下の例は、これは「オンライン」処理であることを示すパラメータを含む、SQL Server(登録商標)に含まれる、ALTER TABLE...ALTER COLUMNステートメントを示す。
Figure 2017534986
[0025] パラメータ [WITH ONLINE = ON/OFF]は、どのように処理を実行するか指定する能力を与える。
[0026] メタデーター
[0027] オンライン列変更(altering)用のデーター定義言語は、ある実施形態では、オフライン処理と同じロジックに従うことによって開始するが、排他的スキーム修正ロックの代わりに意図共有ロックだけを採用することが異なる。これによって、同時データー操作言語が続行することを可能にする。
[0028] メタデーター修正
[0029] メタデーター・チェックは意図共有ロック(即ち、共有ロックをこれら個々のリソース上に置くことによって、階層において低い方の一部の(しかし全部ではない)リソースを読み取るトランザクションの意図を示すロック。これは、他のトランザクションが排他的ロックを取得するのを防止する)の下で行うことができるが、メタデーター更新は特殊な処理(handling)を必要とする。何故なら、これらは通常テーブル上では排他的ロックを必要とするからである。この問題を解決するために、所定の場所で列メタデーターを更新する代わりに、
[0030] ・列の新しいコピーを、新しいプロパティ(型等)を用いて作成する。これが意味するのは、古い列情報がなおも入手可能であるということである。
[0031] ・新しい列はメモリー内でのみ作成され、システム・テーブルは更新されない。システム・テーブルが更新されると、実施形態は行ロックを解除するためにこれらを更新するトランザクションをコミットすることになる。これは、復元において問題を生ずる。
[0032] ・新しい列は、明示的に要求されなければ、同時クエリーによって見えるようにならないように、テーブルの列集合(column collection)には追加されない。これが意味するのは、アルジェブライザー(algebrizer)はなおも全ての列を通常通りにロードすることができ、「オンライン」列を処理する(handle)ために変更は必要ないということである。
[0033] ロールバックにおけるメタデーター復元
[0034] データー定義言語のロールバックを扱うために、特殊なロジックも実装される。一般に、メタデーターは、データー定義言語処理が排他的スキーム修正ロックをオブジェクト上に保持しており、他のエンティティは参照を保持できないと仮定しているので、障害の場合、実施形態はオブジェクト全体をメタデーター・キャッシュから単に削除するだけである。ディスク上の一貫性(on-disk consistency)は、トランザクション・ロールバックによって処理されるので、次の要求時に、実施形態は単にオブジェクトをディスクから再ロードするだけでよい。
[0035] これはオンライン処理であるので、実施形態はテーブル上に意図共有ロックだけを保持する(排他的スキーム変更ロックではない)。実施形態はロールバックにおいて更にロックをかけることができないので、他者がこのオブジェクトに対する参照を抑える(hold)おそれがあり、したがって実施形態は単純にこれをキャッシュから削除することはできない。
[0036] ロールバックにおいてメタデーターを浄化するために、実施形態は、オンライン列変更処理に特有の新しい仮想ログ・レコードと組み合わせて、参照カウント(ref counting)を使用する。仮想ログ・レコードは、これがロールバックしなければならないディスク上の変更を記述するのではなく、単にメモリー内の値をロールバックする何らかのロジックを実行するためにデーターベース・サーバー・コードへのコール・バックを行うプレースホルダ(placeholder)であるという意味で仮想である。ロールバックするとき、仮想ログ・レコードは、「オンライン」列に中断という印を付けるので、新しいクエリーはそれへの参照を得ることができない。列オブジェクト上に参照がない場合、それを削除する。それ以外の場合、その参照を削除し、参照を解除する最後のエンティティが実際にそれをメタデーター・キャッシュから削除することになる。
[0037] 同時処理の阻止
実施形態はメモリー内メタデーター変更を行うので、実施形態は2つの「オンライン」処理によって、同時アクセスを回避する。この理由のために、実施形態は、同じテーブル上において同時オンライン処理を防止するために特殊なロックを採用する。このロックは、処理全体の期間中保持される。
[0038] 同時クエリー
[0039] 以上で説明したように、新しい列は列集合体に追加されず、明示的に要求されなければ、見えるようにならない。これが意味するのは、アルジェブライザーは常に「古い」列メタデーターを使用し、クエリー・オプティマイザー120はこれに基づいてプランを生成するということである。
[0040] 図2に示すように、SQL Server(登録商標)におけるSELECTクエリーのようなデーター選択クエリーは、オンライン・テーブル再構築処理の間、データーベース項目の古いコピー108しか使用することができないので、これらは「古い」列を収容する行セットにアクセスしようとする。プラン生成に使用されるメタデーターは、SEにおけるデーターのフォーマットと一致するので、全てのデーター選択クエリーは正しく作用するはずである。
[0041] 実施形態は、列変更処理の間に行われる型変換によって生ずるエラーに関する機能を有することができる。例えば、ユーザーが、列c1が「bigint」であるテーブルにアクセスしているが、それが現在「int」に変更されているとき、挿入された値が「int」に収まることができない場合、ユーザーは、型「int」にオーバーフローがあったというエラーを受け取る。しかしながら、ユーザーの観点からは、列の型はまだ「bigint」であり、これは、システム・ビューが報告していることである。このため、ある実施形態では、エラーの原因に関して追加の詳細と共にユーザーに警告するために、追加の情報をこれらのエラー・メッセージに追加することができる。
[0042] 例えば、データー変換が所与の行では不可能であるために、列変更処理が取り消されたまたは失敗した場合、単にデーターベース項目の第2コピー(例えば、新しいコピー110)を破壊することによって、殆ど即座に、この処理のロールバックを行うことができる。
[0043] 実施形態は、一定の最適化を実施するために、種々の実施態様の特徴を利用することができる。例えば、実施形態はデーターの新しいコピー(例えば、データーベース項目の新しいコピー110)を作成するので、処理を高速化し必要なログ空間を縮小するために、最小ロギング(minimal logging)のような最適化を使用することができる。
[0044] これより、以下の論述において、実行することができる多数の方法および方法のステップについて触れる。方法のステップは、一定の順序で論じられるか、または特定の順序で行われるフロー・チャートにおいて示されることがあるが、具体的に述べられない限りまたは要求されない限り、特定の順序付けは必要でない。何故なら、ステップは、このステップが実行される前に完了する他のステップに依存するからである。
[0045] これより図3を参照すると、方法300が示されている。方法300は、コンピューティング環境において実施することができる。方法300は、データーベースを変換しつつ、データーベースの変換の間データーベース・ユーザーに、データーベース内のデーターを利用可能にさせるステップを含む。この方法は、データーベースのデーターベース項目の古いコピーをデーターベース項目の新しいコピーに変換してデーターベース項目の古いコピーにおける項目を変換するために、データーベースのデーターベース項目の古いコピーに対する新バージョンのメタデーターを作成するステップ(ステップ302)を含む。例えば、図1に示すように、データーベース・スキームの新バージョン106が、データーベース項目の既存のコピー108に対して作成される。
[0046] 更に、方法300は、データーをデーターベース項目の古いコピーからデーターベース項目の新しいコピーに移してデーターベース項目の古いコピーにおけるデーター項目を変換する間、データーベース項目の古いコピーにおいて変換すべきデーター項目に変換を適用しつつ、データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップ(ステップ304)を含む。これは、新バージョンのメタデーターにしたがって行われる。このように、例えば、データー項目の古いコピー108からのデーター項目は、新バージョン106のデーターベース・スキームにしたがって、データー項目の新しいコピー110にコピーされる。
[0047] 更に、方法330は、データーベース項目の古いコピーからデーターベース項目の新しいコピーにデーターを移す間、データーベースにおけるデーター項目を変換する間データーベースがオンラインに留まることを可能にするために、データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップ(ステップ306)を含む。つまり、図2に示すように、ユーザー126は種々のデーターベース・クエリーを送ることができ、これらのデーターベース・クエリーは、データーベース項目の古いコピー108によってサービスされる。
[0048] 方法300は、データーベース項目の古いデーターにおける変換すべきデーター項目のコピーを作成するステップが、データーベース項目の古いコピーのスナップショットを抜き出すステップを含む場合に、実施することができる。
[0049] 方法300は、データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップが、データーベース項目の新しいコピーおよびデーターベース項目の古いコピーからクエリーにサービスするステップを含み、ユーザー・クエリーがデーター更新を含むとき、サービスするステップがデーターベース項目の新しいコピーおよびデーターベース項目の古いコピーの双方を更新するステップを含む場合に実施することができる。更新は、既存のデーター項目に対する挿入処理、削除処理、変更処理の内少なくとも1つを含むことができる。図2はこれの例を示し、このような処理がユーザーによって要求されたときに、データー項目の古いコピー108およびデーター項目の新しいコピー110の双方に修正が行われる場合の挿入、更新、および削除処理の更新経路を示す。このような実施形態では、方法300は、更に、データーベース項目の古いコピーに対して指令される(directed)クエリー・プランを、データーベース項目の新しいコピーおよびデーターベース項目の古いコピー双方に対して指令されるクエリー・プランに変更するステップを含む場合もある。先に示した例では、これはクエリー・オプティマイザー120によって実行されてもよい。
[0050] 方法300は、データーベース項目の古いコピーに対するユーザー・クエリーにサービスするステップが、ユーザー・クエリーがデーターを引き出すことだけを含むとき、データーベース項目の新しいコピーではなく、データーベース項目の古いコピーのみからクエリーにサービスするステップを含む場合に実施することができる。例えば、図2に示すように、コマンドが、データーを修正も、挿入も、削除もしない選択コマンドであるとき、データーベース項目の古いコピー108からクエリーにサービスすることができる。
[0051] 方法300は、データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列を分割するステップを含む場合に実施することができる。例えば、氏名列が名字列と名前列に分割されるのでもよい。
[0052] 方法300は、 データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列に対するデーター・プロパティを変更するステップを含む場合に実施することができる。例えば、実施形態は列の型を変更するのでもよい。図2に示す例では、型がintからbigintに変更される。
[0053] 方法300は、データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、新しい列を追加するステップを含む場合に実施することができる。代わりにまたは加えて、方法300は、データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列を組み合わせるステップを含む場合に実施することができる。代わりにまたは加えて、方法300は、データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列を削除するステップを含む場合に実施することができる。
[0054] 更に、方法300は、例えば、データーベース障害を検出し、データーベース項目の新しいコピーを破棄無視し、データーベース項目の古いコピーを用いてデーターベース処理を継続することによってデーターベースをロールバックすることによってというようにして、データーベースを復元するステップも含むことができる。
[0055] データーベース項目の古いコピー108およびデーターベース項目の新しいコピー110双方の使用のために、方法300のある種の実施形態は、更に、データーベース項目の古いコピーおよびデーターベース項目の新しいコピーの双方を維持する結果実行する必要がなくなったログ処理を識別するステップも含むことができる。
[0056] 更に、以上の方法は、1つ以上のプロセッサーと、コンピューター・メモリーのようなコンピューター読み取り可能媒体とを含むコンピューター・システムによって実施することができる。具体的には、コンピューター・メモリーは、コンピューター実行可能命令を格納することができ、このコンピューター実行可能命令が1つ以上のプロセッサーによって実行されると、以上の実施形態において羅列したステップのような、種々の機能を実行させる。
[0057] 本発明の実施形態は、以下で更に詳しく論ずるような、コンピューター・ハードウェアを含む特殊目的または汎用コンピューターを含む、または利用することができる。また、本発明の範囲内の実施形態は、コンピューター実行可能命令および/またはデーター構造を搬送あるいは格納するために、物理および他のコンピューター読み取り可能媒体も含む。このようなコンピューター読み取り可能媒体は、汎用または特殊目的コンピューター・システムによってアクセスすることができる任意の入手可能な媒体とすることができる。コンピューター実行可能命令を格納するコンピューター読み取り可能媒体は物理記憶媒体である。コンピューター実行可能命令を搬送するコンピューター読み取り可能媒体は送信媒体である。つまり、一例として、そして限定ではなく、本発明の実施形態は、少なくとも2種類の全く異なる種類のコンピューター読み取り可能媒体、即ち、物理コンピューター読み取り可能記憶媒体および送信コンピューター読み取り可能媒体を含むことができる。
[0058] 物理コンピューター読み取り可能記憶媒体には、RAM、ROM、EEPROM、CD−ROMまたは他の光ディスク・ストレージ(CD、DVD等のような)、磁気ディスク記憶デバイスまたは他の磁気記憶デバイス、あるいは所望のプログラム・コード手段をコンピューター実行可能命令の形態で、またはデーター構造を格納するために使用することができ、更に汎用または特殊目的コンピューターによってアクセスすることができる任意の他の媒体が含まれる。
[0059] 「ネットワーク」とは、コンピューター・システムおよび/またはモジュールおよび/または他の電子デバイス間における電子データーの移送を可能にする1つ以上のデーター・リンクと定義される。情報がネットワークまたは他の通信接続(ハードワイヤ、ワイヤレス、またはハードワイヤおよびワイヤレスの組み合わせのいずれか)を介してコンピューターに転送または提供されるとき、コンピューターは正しくこの接続を送信媒体と見なす。送信媒体は、所望のプログラム・コード手段をコンピューター実行可能命令の形態で、またはデーター構造を搬送するために使用することができ、汎用または特殊目的コンピューターによってアクセスすることができるネットワークおよび/またはデーター・リンクを含むことができる。また、以上のものの組み合わせもコンピューター読み取り可能媒体の範囲に含まれる。
[0060] 更に、種々のコンピューター・システム・コンポーネントに達すると、コンピューター実行可能命令の形態であるプログラム・コード手段またはデーター構造を自動的に送信コンピューター読み取り可能媒体から、物理コンピューター読み取り可能記憶媒体に(またはその逆に)転送することができる。例えば、ネットワークまたはデーター・リンクを介して受信されたコンピューター実行可能命令またはデーター構造を、ネットワーク・インターフェース・モジュール(例えば、「NIC」)内部のRAMにバッファし、最終的にコンピューター・システムにおけるコンピューター・システムRAMおよび/またはそれよりも揮発性が低いコンピューター読み取り可能物理記憶媒体に転送することができる。つまり、コンピューター読み取り可能物理記憶媒体は、送信媒体も利用するコンピューター・システム・コンポーネントに(または主にこれを利用するコンピューター・システム・コンポーネントであっても)含めることができる。
[0061] コンピューター実行可能命令は、例えば、命令およびデーターを含み、汎用コンピューター、特殊目的コンピューター、または特殊目的処理デバイスに、一定の機能または一群の機能を実行させる。コンピューター実行可能命令は、例えば、バイナリー、アセンブリー言語のような中間フォーマット命令、またはソース・コードであってもよい。構造的特徴および/または方法のステップに特定の文言で本主題について説明したが、添付する特許請求の範囲において定められる主題は、以上で説明した特徴やステップに必ずしも限定されないことは理解されよう。逆に、以上で説明した特徴およびステップは、特許請求の範囲を実現する形態例として開示したまでである。
[0062] 尚、本発明は、多くのタイプのコンピューター・システム構成を有するネットワーク計算環境においても実現できることは当業者には認められよう。コンピューター・システム構成には、パーソナル・コンピューター、デスクトップ・コンピューター、ラップトップ・コンピューター、メッセージ・プロセッサー、ハンドヘルド・デバイス、マルチプロセッサー・システム、マイクロプロセッサー・ベースまたはプログラマブル消費者用電子機器、ネットワークPC、ミニコンピューター、メインフレーム・コンピューター、移動体電話機、PDA、ページャ、ルーター、スイッチ等が含まれる。また、本発明は分散型システム環境においても実施することができ、ネットワークを介して(ハードワイヤ接続データー・リンク、ワイヤレス・データー・リンク、またはハードワイヤ接続およびワイヤレス・データー・リンクの組み合わせのいずれかによって)リンクされたローカルおよびリモート・コンピューター・システムの双方がタスクを実行する。分散型システム環境では、プログラム・モジュールはローカルおよびリモート双方のメモリー記憶デバイス内に配置されてもよい。
[0063] あるいは、または加えて、本明細書において説明する機能を、少なくとも部分的に、1つ以上のハードウェア論理コンポーネントによって実行することもできる。例えば、そして限定でなく、使用することができる例示的なタイプのハードウェア論理コンポーネントには、フィールド・プログラマブル・ゲート・アレイ(FPGA)、特定用途集積回路(ASIC)、特定用途標準製品(ASSP)、システム・オン・チップ・システム(SoC)、複合プログラマブル論理デバイス(CPLD)等が含まれる。
[0064] 本発明は、その主旨や特性から逸脱することなく、他の具体的な形態でも具体化することができる。説明した実施形態は、あらゆる観点において、限定的ではなく例示的であると見なされるものとする。したがって、本発明の範囲は、以上の説明によってではなく、添付した特許請求の範囲によって示される。請求項の均等の意味および範囲に該当する全ての変更は、請求項の範囲内に包含されるものとする。

Claims (10)

  1. データーベースを変換しつつ、前記データーベースにおけるデーターを、前記データーベースの変換中に、データーベース・ユーザーに利用可能にさせるコンピューターで実行される方法であって、前記コンピューターで実行される方法が、当該コンピューターで実行される方法のためのコンピューター実行可能命令を実行する1つ以上のプロセッサーによって実行され、前記コンピューターで実行される方法が、
    前記データーベースのデーターベース項目の古いコピーをデーターベース項目の新しいコピーに変換して前記データーベース項目の古いコピーにおける項目を変換するために、前記データーベースのデーターベース項目の古いコピーに対する新バージョンのメタデーターを作成するステップと、
    前記新バージョンのメタデーターにしたがって前記データーベース項目の古いコピーにおけるデーター項目を変換するために前記データーベース項目の古いコピーから前記データーベース項目の新しいコピーにデーターを移す間、前記データーベース項目の古いコピーにおける変換すべきデーター項目に変換を適用しつつ、前記データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップと、
    前記データーベース項目の古いコピーから前記データーベース項目の新しいコピーにデーターを移す間、前記データーベースにおけるデーター項目を変換しつつ前記データーベースをオンラインに留まらせるために、前記データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップと、
    を含む、コンピューターで実行される方法。
  2. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップが、前記データーベース項目の古いコピーのスナップショットを抜き出すステップを含む、コンピューターで実行される方法。
  3. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップが、前記データーベース項目の新しいコピーおよび前記データーベース項目の古いコピーから前記クエリーにサービスするステップを含み、前記ユーザー・クエリーがデーター更新を含むとき、前記データーベース項目の新しいコピーおよび前記データーベース項目の古いコピーの双方を更新するステップを含む、コンピューターで実行される方法。
  4. 請求項3に記載のコンピューターで実行される方法であって、更に、前記データーベース項目の古いコピーに対するクエリー・プランを、前記データーベース項目の新しいコピーおよび前記データーベース項目の古いコピーに対するクエリー・プランに変更するステップを含む、コンピューターで実行される方法。
  5. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーに対するユーザー・クエリーにサービスするステップが、前記ユーザー・クエリーがデーターを引き出すことだけを含むとき、前記データーベース項目の古いコピーから前記クエリーにサービスするステップを含む、コンピューターで実行される方法。
  6. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列を分割するステップを含む、コンピューターで実行される方法。
  7. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、列に対するデーター・プロパティを変更するステップを含む、コンピューターで実行される方法。
  8. 請求項1に記載のコンピューターで実行される方法において、前記データーベース項目の古いコピーをデーターベース項目の新しいコピーに変換するステップが、新しい列を追加するステップを含む、コンピューターで実行される方法。
  9. 請求項1に記載のコンピューターで実行される方法において、前記コンピューターで実行される方法のための前記コンピューター実行可能命令が、1つ以上のコンピューター読み取り可能媒体上に収容される、コンピューターで実行される方法。
  10. データーベースを変換しつつ、前記データーベースにおけるデーターを、前記データーベースの変換中に、データーベース・ユーザーに利用可能にさせるためのコンピューティング・システムであって、前記コンピューティング・システムが、
    1つ以上のプロセッサーと、
    1つ以上のコンピューター読み取り可能媒体と、
    を含み、
    前記1つ以上のコンピューター読み取り可能媒体が、コンピューター実行可能命令を含み、前記コンピューター実行可能命令が、前記1つ以上のプロセッサーの内少なくとも1つによって実行されると、前記コンピューティング・システムに、
    前記データーベースのデーターベース項目の古いコピーをデーターベース項目の新しいコピーに変換して前記データーベース項目の古いコピーにおける項目を変換するために、前記データーベースのデーターベース項目の古いコピーに対する新バージョンのメタデーターを作成するステップと、
    前記新バージョンのメタデーターにしたがって前記データーベース項目の古いコピーにおけるデーター項目を変換するために前記データーベース項目の古いコピーから前記データーベース項目の新しいコピーにデーターを移す間、前記データーベース項目の古いコピーにおける変換すべきデーター項目に変換を適用しつつ、前記データーベース項目の古いコピーにおいて変換すべきデーター項目のコピーを作成するステップと、
    前記データーベース項目の古いコピーから前記データーベース項目の新しいコピーにデーターを移す間、前記データーベースにおけるデーター項目を変換しつつ前記データーベースをオンラインに留まらせるために、前記データーベース項目の古いコピーに対して行われるユーザー・クエリーにサービスするステップと、
    を実行するアーキテクチャを構成させる、 コンピューティング・システム。
JP2017523269A 2014-10-28 2015-10-26 オンライン・スキームおよびデーター変換 Pending JP2017534986A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/526,118 2014-10-28
US14/526,118 US11275760B2 (en) 2014-10-28 2014-10-28 Online schema and data transformations
PCT/US2015/057274 WO2016069422A1 (en) 2014-10-28 2015-10-26 Online schema and data transformations

Publications (1)

Publication Number Publication Date
JP2017534986A true JP2017534986A (ja) 2017-11-24

Family

ID=54427888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017523269A Pending JP2017534986A (ja) 2014-10-28 2015-10-26 オンライン・スキームおよびデーター変換

Country Status (7)

Country Link
US (1) US11275760B2 (ja)
EP (1) EP3213229A1 (ja)
JP (1) JP2017534986A (ja)
CN (1) CN107077491B (ja)
BR (1) BR112017005613A2 (ja)
RU (1) RU2017114700A (ja)
WO (1) WO2016069422A1 (ja)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10025822B2 (en) 2015-05-29 2018-07-17 Oracle International Corporation Optimizing execution plans for in-memory-aware joins
US10769134B2 (en) * 2016-10-28 2020-09-08 Microsoft Technology Licensing, Llc Resumable and online schema transformations
US9805071B1 (en) * 2016-11-10 2017-10-31 Palantir Technologies Inc. System and methods for live data migration
US10310955B2 (en) 2017-03-21 2019-06-04 Microsoft Technology Licensing, Llc Application service-level configuration of dataloss failover
US10871945B2 (en) 2018-04-13 2020-12-22 Microsoft Technology Licensing, Llc Resumable merge sort
US20190325045A1 (en) * 2018-04-20 2019-10-24 Hewlett-Packard Development Company, L.P. Schema data structure
US11593382B2 (en) * 2021-03-22 2023-02-28 International Business Machines Corporation Efficient storage of columns with inappropriate data types in relational databases
US11449487B1 (en) * 2021-03-22 2022-09-20 International Business Machines Corporation Efficient indexing of columns with inappropriate data types in relational databases

Family Cites Families (32)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6122644A (en) * 1998-07-01 2000-09-19 Microsoft Corporation System for halloween protection in a database system
US6718320B1 (en) 1998-11-02 2004-04-06 International Business Machines Corporation Schema mapping system and method
US7089260B2 (en) 2002-02-14 2006-08-08 International Business Machines Corporation Database optimization apparatus and method
US6996558B2 (en) 2002-02-26 2006-02-07 International Business Machines Corporation Application portability and extensibility through database schema and query abstraction
US7213014B2 (en) * 2003-03-27 2007-05-01 International Business Machines Corporation Apparatus and method for using a predefined database operation as a data source for a different database operation
US20050071359A1 (en) 2003-09-25 2005-03-31 Elandassery Deepak S. Method for automated database schema evolution
US20050114404A1 (en) * 2003-11-21 2005-05-26 Bmc Software, Inc. Database table version upload
US8041675B1 (en) 2004-08-02 2011-10-18 Symantec Operating Corporation Method for performing incremental backup of database files
US7634515B2 (en) 2005-05-13 2009-12-15 Microsoft Corporation Data model and schema evolution
JP4693540B2 (ja) 2005-08-04 2011-06-01 富士通株式会社 データベース再構成装置、およびデータベース再構成プログラム
US20070174317A1 (en) 2006-01-26 2007-07-26 International Business Machines Corporation System and method for modifying the structure and content of dissimilar databases
US20070214104A1 (en) * 2006-03-07 2007-09-13 Bingjie Miao Method and system for locking execution plan during database migration
US7991798B2 (en) * 2006-05-31 2011-08-02 Oracle International Corporation In place migration when changing datatype of column
US7418453B2 (en) 2006-06-15 2008-08-26 International Business Machines Corporation Updating a data warehouse schema based on changes in an observation model
US8521706B2 (en) * 2006-10-20 2013-08-27 Oracle International Corporation Low-downtime and zero-downtime upgrades of database-centric applications
US7797335B2 (en) 2007-01-18 2010-09-14 International Business Machines Corporation Creation and persistence of action metadata
US8027955B2 (en) 2007-03-19 2011-09-27 Microsoft Corporation Database management using a file to accumulate changes
US8364648B1 (en) 2007-04-09 2013-01-29 Quest Software, Inc. Recovering a database to any point-in-time in the past with guaranteed data consistency
US8768978B2 (en) 2007-07-30 2014-07-01 Hewlett-Packard Development Company, L.P. Single-operation on-line schema evolution
US7873672B2 (en) 2008-01-24 2011-01-18 Microsoft Corporation Efficient query processing of DML SQL statements
US8538985B2 (en) * 2008-03-11 2013-09-17 International Business Machines Corporation Efficient processing of queries in federated database systems
EP2350877A1 (en) * 2008-09-30 2011-08-03 Rainstor Limited System and method for data storage
US8229952B2 (en) 2009-05-11 2012-07-24 Business Objects Software Limited Generation of logical database schema representation based on symbolic business intelligence query
US8825601B2 (en) 2010-02-01 2014-09-02 Microsoft Corporation Logical data backup and rollback using incremental capture in a distributed database
EP2548134A1 (en) 2010-03-17 2013-01-23 Telefonaktiebolaget LM Ericsson (publ) Method for database storage of a table with plural schemas
US8244698B2 (en) * 2010-07-23 2012-08-14 Google Inc. Encoding a schema version in table names
US20120036166A1 (en) * 2010-08-06 2012-02-09 Oracle International Corporation Effective dating for table or relationship modifications
US10803028B2 (en) 2011-12-21 2020-10-13 Sybase, Inc. Multiphase approach to data availability
US9063971B2 (en) * 2012-12-03 2015-06-23 Red Hat Israel, Ltd. Schema and query abstraction for different LDAP service providers
US9471617B2 (en) * 2013-10-29 2016-10-18 Sap Ag Schema evolution via transition information
MX359824B (es) * 2014-02-11 2018-10-11 Wix Com Ltd Sistema para la sincronizacion de cambios en sitios web editados y aplicaciones interactivas.
US20170300521A1 (en) * 2016-04-18 2017-10-19 Sap Se Concurrent accessing and processing of data during upgrade

Also Published As

Publication number Publication date
WO2016069422A1 (en) 2016-05-06
US20160117375A1 (en) 2016-04-28
CN107077491A (zh) 2017-08-18
US11275760B2 (en) 2022-03-15
EP3213229A1 (en) 2017-09-06
RU2017114700A (ru) 2018-10-30
CN107077491B (zh) 2021-10-26
BR112017005613A2 (pt) 2017-12-12

Similar Documents

Publication Publication Date Title
US11609895B2 (en) Methods and systems for appending data to large data volumes in a multi-tenant store
CN107077491B (zh) 联机模式和数据变换
KR102307371B1 (ko) 데이터베이스 시스템 내의 데이터 복제 및 데이터 장애 조치
US11119997B2 (en) Lock-free hash indexing
US10853343B2 (en) Runtime data persistency for in-memory database systems
US9411866B2 (en) Replication mechanisms for database environments
US9146934B2 (en) Reduced disk space standby
US20160371355A1 (en) Techniques for resource description framework modeling within distributed database systems
US8886596B2 (en) Method for reorganizing or moving a database table
US9916313B2 (en) Mapping of extensible datasets to relational database schemas
EP2746965B1 (en) Systems and methods for in-memory database processing
EP3026579A1 (en) Forced ordering of a dictionary storing row identifier values
US10528341B2 (en) User-configurable database artifacts
CN107835983A (zh) 使用一致的数据库快照在分布式数据库中进行备份和还原
US9965535B2 (en) Client-side handling of transient duplicates for row-level replication
US20230394024A1 (en) Data processing method and apparatus, electronic device, storage medium, and program product
US11991272B2 (en) Handling pre-existing containers under group-level encryption
US11593338B2 (en) Computer-implemented method for database management, computer program product and database system
US20230195747A1 (en) Performant dropping of snapshots by linking converter streams
US11467926B2 (en) Enhanced database recovery by maintaining original page savepoint versions
US20230126702A1 (en) Transport of master data dependent customizations
US11907162B2 (en) Minimizing data volume growth under encryption changes
US11657046B1 (en) Performant dropping of snapshots by converter branch pruning