(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6208385
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】関係データをトランスポートする方法
(51)【国際特許分類】
G06F 17/30 20060101AFI20170925BHJP
G06F 12/00 20060101ALI20170925BHJP
【FI】
G06F17/30 180D
G06F12/00 512
G06F12/00 545A
【請求項の数】8
【全頁数】15
(21)【出願番号】特願2016-576079(P2016-576079)
(86)(22)【出願日】2015年2月26日
(65)【公表番号】特表2017-521782(P2017-521782A)
(43)【公表日】2017年8月3日
(86)【国際出願番号】US2015017763
(87)【国際公開番号】WO2015178985
(87)【国際公開日】20151126
【審査請求日】2017年1月10日
(31)【優先権主張番号】14/282,387
(32)【優先日】2014年5月20日
(33)【優先権主張国】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】516348212
【氏名又は名称】イフウィザード コーポレイション
【氏名又は名称原語表記】IFWIZARD CORPORATION
(74)【代理人】
【識別番号】100147485
【弁理士】
【氏名又は名称】杉村 憲司
(74)【代理人】
【識別番号】100164471
【弁理士】
【氏名又は名称】岡野 大和
(74)【代理人】
【識別番号】100192924
【弁理士】
【氏名又は名称】石井 裕充
(72)【発明者】
【氏名】ドミニク セラース ブレイズ
【審査官】
月野 洋一郎
(56)【参考文献】
【文献】
国際公開第2013/174452(WO,A1)
【文献】
米国特許出願公開第2014/0006342(US,A1)
【文献】
米国特許出願公開第2013/0191650(US,A1)
【文献】
米国特許第06968456(US,B1)
【文献】
米国特許第07548898(US,B1)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 12/00
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
コンピュータ実施方法であって、該方法は、
ソースリレーショナルデータベース管理システム(RDBMS)内のデータテーブルにアクセスするステップと、
前記テーブルの行を選択するステップであって、前記行がカラムデータを含む、ステップと、
前記行をエクスポートのためにエンコードするステップであって、
前記行で参照される依存データを決定するステップと、
ポータブルな代替行識別子を生成するステップと、
前記行データと前記行で参照された前記依存データとを収集して、除外のため指定されたテーブル内に格納された依存データを除いて、エクスポートデータを形成するステップ
とを含む、エンコードするステップと、
元の識別子の代わりに前記ポータブルな代替行識別子を活用して、前記エクスポートデータを再構築可能なシーケンスに配列するステップと、
前記再構築可能なシーケンスに基づいて前記エクスポートデータをターゲットデータベース内へとインポートするステップ
とを含む、方法であって、
前記行をエクスポートのためにエンコードするステップは、
前記エクスポートデータ内の前記元の識別子に対応する前記ポータブルな代替行識別子についての一意なセキュアリスティングを生成するステップと、
ソースクライアントから、初期行識別子とエクスポートすべきテーブルとを含むパラメータを、受信するステップと、
前記初期行をエクスポートのためにエンコードするステップと、
エクスポートを要する行がなくなるまで、即ち参照される側のもの及び参照する側のものがボトムアウトするまで、追加の行をエクスポートすることを反復するステップ、
エクスポートされた前記行を、順次的再構築のための前記再構築可能なシーケンスによるリストに配列するステップと、
前記行のリストを、外部格納フォーマットに変換するステップ
とを含み、
各行をエンコードするステップは、
エクスポートパラメータがそれに対応するテーブルを無視すべきと示す場合にその行のエクスポートを省略するステップと、
一意であり、かつ、前記テーブル及び前記元の行識別子へとトレース可能な、エンコードされた行識別子を作成するステップと、
前記エンコードされた行識別子が用いられる場合には前記行のエクスポートを省略するステップと、
前記エクスポートする行の前記カラムデータを、前記ソースデータベースからフェッチするステップと、
前記カラムデータを処理して内部表現にするステップと、
前記エクスポートする行に向かう関係及び前記エクスポートする行から発する関係を決定するステップと、
前記エクスポートする行によって参照された行の各々を分析するステップであって、各参照された行に関して、
参照された行が無視されたテーブルに属する場合、インポート時における後の検出のために前記内部表現内にダミー値を格納し、
その余の場合、前記行をエクスポートし、及び、対応する前記エンコードされた行識別子を前記内部表現内に格納する、ステップと、
前記エクスポートする行を参照する行の各々を分析するステップと、
そのような参照を行う行の各々をエクスポートするステップ
とを含む、
方法。
【請求項2】
エクスポートする依存データを決定するステップをさらに含む請求項1に記載の方法であって、各エクスポートする行に関して前記決定するステップは、
前記エクスポートする行のテーブル名をパラメータとして受信するステップと、
前記ソースデータベースのメタデータにアクセスして前記エクスポートする行のテーブルによって参照される全てのテーブルのカラムを検索するステップと、
前記参照されたテーブルカラムを分析して、
前記テーブルが前記エクスポートする行のそれと同じである場合には前記カラムを省略して、
その余の場合には前記依存データのうちに前記カラムを含める、ステップ
とを含む、請求項1に記載の方法。
【請求項3】
前記ソースデータベースのメタデータにアクセスして、前記エクスポートする行のテーブルを参照する全てのテーブルの選択されたカラムを検索するステップと、
各参照するテーブルカラムについて、前記参照するテーブルカラムを分析して、
前記テーブルが前記エクスポートする行のそれと同じである場合には前記カラムを省略して、
その余の場合には前記依存データのうちに前記カラムを含める、ステップ
とをさらに含む、請求項2に記載の方法。
【請求項4】
前記ポータブルな代替行識別子を生成するステップは、
エンコーディングキーを生成するステップと、
前記エンコーディングキーを、エクスポート段階に際しての全ての行のエクスポート中においては、持続的な状態に維持するステップと、
セキュリティのために前記エンコーディングキーを前記エクスポートされたファイルから除外するステップ
とを含む、請求項1に記載の方法。
【請求項5】
前記エンコーディングキーは疑似乱数生成器を用いて生成される、請求項4に記載の方法。
【請求項6】
前記エンコーディングキーは疑似乱数生成器と現在タイムスタンプとを用いて生成される、請求項4に記載の方法。
【請求項7】
行をエクスポートのためにエンコードするステップは、
前記エクスポート行のテーブル名、エンコーディングキー及び行識別子を組み合わせて、テキスト文字列を形成するステップと、
前記テキスト文字列をメッセージダイジェストプロセスへの入力として活用してバイナリメッセージダイジェストを作成するステップと、
前記エンコーディングキーの生成を完了するためにバイナリからテキストへとエンコードするエンコーダを用いて、前記バイナリメッセージダイジェストをASCIIテキスト形式に変換するステップ
とを含む、請求項4に記載の方法。
【請求項8】
前記ターゲットデータベース内で前記エンコードされたデータの行を再構築するステップをさらに含む、請求項2に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願
本願は、2014年5月20に出願された米国特許出願第14/282,387号の優先権を主張し、該出願の全体が参照により取り込まれる。
【0002】
著作権表示
(c) 2015 IFWIZARD CORPORTION. 本特許文献の開示の一部は著作権保護を受ける客体を含む。著作権者は、特許商標庁のファイル又は記録において表れる態様での、特許文献又は特許開示の、何人による、複写的複製について何ら異議を持たないが、その余の場合に関してはあらゆる著作権を全て留保している、37 CFR § 1.71 (d)。
【背景技術】
【0003】
データベース管理システム(DBMS、database management system)は、集中型の構造化情報サービスをクライアントプログラムに提供する。DBMS内のデータは、データモデルと称される特定の基本的格納パターンに準拠して、定義、格納、及び、検索される。例えば、階層データモデルを用いるDBMSでは、内部のデータエンティティはツリー状の構造を介して関係づけられのであり、各エンティティは、単一の「親」エンティティと任意の個数の「子」エンティティとを有する(「ルート」エンティティの場合は親を持たない)。この階層データモデルは、人気のあるXMLデータフォーマット及びXMLデータベースに用いられている。
【0004】
複雑なコンピュータ化情報に関しての最も一般的なDBMSデータモデルは関係データモデルであり、これはリレーショナルデータベース管理システム(RDBMS、relational database management system)で用いられている。関係データは、2次元的テーブルの集合として理解することができ、行(ロウ)がデータエンティティを表し、縦列(カラム)がエンティティ特性を表している。典型的には、行は、各々の行又はエンティティを一意的に識別するキーカラムを有している。これらのキーは、殆どの場合は正の整数であり、後に挿入される行毎にインクリメントされるものである。テーブルの行はそれらのキーのみで識別されることができるため、テーブルBからのキーを有するカラムを含めることによって、テーブルA内の行をテーブルB内の行に「関係づける」ことができる。
【0005】
これらの行識別子をテーブル間関係に用いることによって、行の行識別子自体を除く全てのデータについて、複製を行うことを要せず自己のカノニカルテーブル内のみに格納することができる。例えば、顧客についてのテーブルは、住所情報を含み得る。例えば販売注文リスト等においてある顧客に言及する場合、上述したように顧客行識別子のみが必要とされ、販売注文の顧客部分内において顧客住所を複製することを要さない。これらの正規化テーブル間関係の重要な利点の1つとしては、顧客テーブル内の情報を変えるだけで顧客住所を変更することができる、という点が挙げられる。なぜならば、維持対象となる(即ち、販売注文内での)顧客住所の重複的含有が生じていないからである。
【0006】
典型的には、行識別子は、1,2,3,...等の単純にインクリメントする正数としてRDBMSによって自動的に生成される。これらの識別子シーケンスジェネレータがテーブル自体とは異なるものであるため、仮に2つのデータベースが同じタイプのテーブルとカラムとを共有する場合、同一の内容を有していても2つのデータベース間の行識別子が異なり得る。これらの差異は、テーブルの行のオーダ、ナンバ及び削除履歴に起因し得る。例えば、2つのデータベースにおいて、3人の顧客が逆の順序で追加された場合、データベース間では、おそらくゼロ個の、又は最大で1個の、行が同じ行識別子を有していることになろう。
【0007】
RDBMSは、削減された記憶サイズと向上したデータ一貫性と一部の操作に関してはより高いクエリパフォーマンスとを利点として提供するが、そのデータモデルは行識別子キーの正確かつ一貫した使用方法に極度に依存している。データ重複が削減又は排除さえされているため、行識別子を介して正しい行が関係づけられていない場合、含有される重複データの確認によって正しい行を回復する方策がないことになる。例えば、販売注文は顧客行識別子のみを含み、クロスレファレンシングを可能とする追加的な顧客カラムたる顧客の氏名や住所を有さないものとされる。さらに、間違った行識別子は、別のテーブル内に存在しない行を参照するだけではなく、実在するが正しくない行を参照する可能性が高い。
【0008】
典型的には、DBMSは単一の場所にある単一のサーバ上で実行されるが、より複雑な亜種は幾つかの場所に透過的に分散されている場合がある。RDBMSは2つの主要部、即ち(1)データ構造を記述及び定義するデータテーブル、及び、(2)そのように記述されたモデルに準拠するデータ行、を含むため、同様にして、サーバは定義をもたらすコンテナであると共にそうして内包される内容であるものと看做されることができる。全く別個のデータベース間(即ち、テーブルと共にデータまでもが別個のものである場合)での相互作用は可能であるが、複数のRDBMSサーバが同じテーブル定義を伴って運用に供せられている場合が幾つかあり得るのであり、この場合これらが格納しているデータは同じものであるか異なるものであることができる。これらの同一定義シナリオでは、データベースサーバ間でデータをトランスポートする必要があり得る。
【0009】
このようなシナリオの1つとしては、多数のデータベースサーバを通じて多数のソフトウェアインスタレーションを表象する場合が挙げられる。例えば、複数の場所にある店舗を考える。全店舗に同じ販売トラッキングソフトウェアがインストールされているが、各店舗が自前のデータベースサーバを有して自己の現地売上データをトラッキングしている場合があり得る。このケースでは、顧客データ等の一部のデータと、注文履歴等の関連レコードとを、あるインスタレーションから別のインスタレーションのサーバへと、移転したい場合がある。別のシナリオは、継続的な可用性とセキュリティを実現するために、場合によっては異なる地域に配置された複数の異なるデータベースサーバ内に同一データを複製することを伴う。第3のシナリオでは、1つのデータベースサーバ内のデータをテンプレートとして用いて別のサーバに対して新規データ挿入を行う。このシナリオの亜種としては、元のデータベースサーバ内でそのようなテンプレートを用いる場合が考えられる。
【0010】
上述したリレーショナルデータベースに関しての詳細を前提とすると、タビュラー的に同一なデータをRDBMS間で及びRDBMS内でトランスポートするに際しては、次の4つの主たる困難性が見出されることになる。
(1) 既存の識別子との衝突及び関係の不足によって、トランスポートされたデータ行識別子を新たなデータベースで安全に使用することができないこと。
(2) トランスポートされた行が必要とされている関係であるか、該行がトランスポートされるべき追加的な他の行と関係づけられる必要があるかもしれないこと。例えば、製品行をトランスポートするには、供給者行(製品へ向かっての関係)又はサポート履歴行(製品から派生する関係)が必要となり得る。
(3) 以前の行識別子を安全に使用することができないため、トランスポートの一環として新たな行識別子の割り当てを行わなければならないこと。
(4) これらの新たなかつ異なる行識別子を与えられると、プライマリ行と共にトランスポートされた全ての必要な関係データに対して、新たな行識別子を用いて再度の関係づけを行わなければならないこと。
【0011】
これらの困難性故に、リレーショナルデータベース間でのトランスポートは、一般に次の3つのシナリオに限定されており、これらはいずれも運用では限定的なものである。即ち、3つの限定的シナリオは次のとおりである。
(1) データベースを完全に複製或いは「クローン」して第2のデータベースを得ることができる。該プロセスは、破壊的なプロセスであり、第2のデータベース内に存在するデータを全て完全に消去することを要する。一般的には、データベースをバックアップ及びリストアする場合に該手法を用いる。
(2) 必要とされる具体的な行を収集し、それらを第2のデータベース内に挿入する様に構成されたカスタムプログラムを作成することができる。この手法はデータの部分的トランスポートを可能とするが、データのセクション、データベース、及び意図された用途に関して完全に特化したものである。なぜならば、トランスポートするデータのセクション毎に固有のプログラムが必要となり、また、テーブル定義又はインテンションに対する変更に合致するように同時的に保守していかなければならないからである。
(3) 特定のケースでは、データをCSV形式等の中間フォーマットへエクスポートしてから、再インポートすることができる。一般的には中間フォーマットが関係及びディペンデンシーに関しての完全な表現方法を欠いているため、このシナリオは、関係元とも関係先ともならない行等が登場する極めて単純なデータトランスポートの場合を除いて、限定的な効用しか持たない。
【0012】
これらのシナリオでは具体性、適用用途、又は適用範囲に関しての相当な制約が示されるため、関係データのトランスポート、とりわけ、RDBMSの相互関連する部分的サブセットに関するトランスポートに関しての一般的ソリューションは、現在は存在していないといえる。
【発明の概要】
【0013】
一部の特徴やコンテキストに関しての基礎的な理解を可能とするために、以下には本願開示に関しての概要が示されている。この概要は、発明の要となる要素/重要な要素を特定したり、本願発明の範囲を画定したりすることを意図はしていない。この概要の唯一の目的は、より詳細な後述の詳細な説明との関係で序論としての役割を果たすことであり、そのために本願開示の幾つかの概念を単純化した態様で提示する。
【0014】
本願開示によれば、リレーショナルデータベース内でデータをトランスポートする一般的方法が提供される。トランスポートされるべきデータは、任意の行識別子を有する任意のテーブル内の任意の行であることができる。トランスポートされた行に依存している他の全てのデータ及びトランスポートされた行が依存する他の全てのデータは、自動的に決定されて所与の行と共にトランスポートされる。方法は、転送において無視されるべきテーブルを随意的に特定することをさらに許容しており、これにより不必要なデータ又は他の意味で機能的に必要とされていないデータを除外することができる。
【0015】
また、本願発明によれば、トランスポートされたデータのための中間フォーマットも提供され、該フォーマットは、付属する全ての関係を含めた上でのトランスポートされたデータの完全な再構築を可能とする。このトランスポートフォーマットは、ランダムキー暗号で一貫して代替させることによって、元の行識別子に対してのセキュアマスキングをサポートする。そして、これらの一時的キーを、インポート時の後の再構築処理の最中に置換する。
【0016】
本願開示によれば、データを新たなデータベース及びストックにグラフト(graft、接合)するに際して、元の内部関係同一性を保持するようなシーケンス及び態様で、中間フォーマットの再構築が行われる。このインポートプロセスにおいて、本願方法は行−カラム値に関しての具体的な代替処理を可能とするのであり、これによって、明示的な分析及び再構築処理の変更を伴わずにして新たなデータについての複雑な統合処理を可能とする。
【0017】
本願発明はソフトウェア、即ち1以上のコンピュータプログラム、ルーチン、関数等、で実装されることが意図されている。したがって、本願発明は、後述するような、少なくとも1つのプロセッサとメモリへのアクセスとを有するコンピュータや他の装置等のマシン上で最も良く活用され得る。したがって、本願明細書では、「コンポーネント」、「サブシステム」、又は、「ルーチン」等の用語を時折用いるが、これらの各々は好適にはソフトウェアで実装されることができる。
【0018】
本願発明の追加的な側面及び利点は、後述の好適実施形態に関する詳細な説明から明らかになるのであり、以下においては添付の図面について述べる。
【図面の簡単な説明】
【0019】
本願開示に関わる、上述の及びその他の、利点及び特徴を得るための態様について説明するために、本願に関する具体的な実施形態を参照するさらなる具体的説明が以下続くのであり、これらは添付の図面によって図示される。これらの図面は一般的な実施形態のみを図示するものと理解されるのであり、それらの範囲を限定するものとして解されてはならない。本願発明は、添付の図面を参照して、さらなる具体性と詳細さとを伴って、形容及び説明される。
【0020】
【
図1】本願開示による機能的コンポーネントに関するブロック図である。
【
図2】
図1のデータトランスポータの機能的サブコンポーネントに関するブロック図である。
【
図3】
図1におけるデータエクスポート段階の動作フローに関するフローチャートである。
【
図4】データエクスポート中になされるデータのエンコーディングを示すフローチャートである。
【
図5】データエクスポート中になされる依存データの決定プロセスを示すフローチャートである。
【
図6】データエクスポート中になされる、ポータブルな行識別子の代替となるものの生成を示すフローチャートである。
【
図7】エクスポートデータを再構築可能なシーケンスに配列する際の動作を示すフローチャートである。
【
図8】
図1におけるデータトランスポート段階で用いられる記憶フォーマットを示す概略図である。
【
図9】データインポート中になされるデータ行のデコードと再構築を示すフローチャートである。
【発明を実施するための形態】
【0021】
以下の詳細な説明は添付の図面を参照する。図面内では可能な限り同じ参照符号が用いられ、以下の詳細な説明は同じ又は類似の要素について言及する。明確性及び簡潔性のため、実際的な実施形態の全ての特性が明細書中で説明されているわけではない。もっとも、開発者の特定の目的を達成するための実際的な実施形態を開発するためには、実施形態に固有な多くの決定を行う必要があるということに留意されたい。本願発明の幾つかの実施形態が説明されているが、当業者であれば、本願発明の精神及び範囲から逸脱せずに変更、改案、及び他の実施形態も可能であるということに気付くであろう。例えば、図中の構成要素に対して置換、追加、又は変更を行うことができるのであり、また、開示される方法に関して処理段階を置換、再配列、又は追加することによって本願開示の方法を変更することができる。したがって、以下の詳細な説明は発明を限定するわけではない。むしろ、本願発明の真正な範囲は添付の特許請求の範囲によって画定される。
【0022】
図1は、本願方法の実施形態の機能的コンポーネントを示す。データトランスポータコンポーネント100は、ソースデータベース103とターゲットデータベース104との間でのデータの移動性を提供するのであり、これらのデータベースは同一又は異なるマシン上で実行されているRDBMSインスタンスである。ソースデータベース103から発せられて、データトランスポータ100を経て行われるデータのエクスポートは、コンピュータアプリケーション、プログラムライブラリルーチン、又は他のマシン若しくはシステムであることができるソースクライアント101によって開始及び指揮管制される。このエクスポートされたデータの、ターゲットデータベース104へ向かってのインポートは、ターゲットクライアント102によって開始及び指揮管制されるのであり、該ターゲットクライアント102もコンピュータアプリケーション、プログラムライブラリルーチン、又は他のマシン若しくはシステムであることができる。例示の実施形態では、データトランスポータ100は、ソースクライアント101及びターゲットクライアント102等のコンピュータアプリケーションからアクセスできるのであり、該アクセスはアプリケーションプログラミングインターフェース(API)ライブラリを経て行われることができ、共通データベース接続ライブラリを経由して様々なリレーショナルデータベースと共に用いることができる。
【0023】
図2は、
図1に示したデータトランスポータ100の機能的コンポーネントを示す。ソースクライアント101はエクスポートインタフェース200へのアクセスを有しており、ソースデータベース接続情報103を含む必要なパラメータが特定される。ソースデータベース接続201はソースデータベース103との接続を確立することができ、エクスポート段階の大部分が営まれるエクスポートサブシステム202に対してこのアクセスを提供することができる。
【0024】
エクスポートサブシステム202によって生成された内部エクスポート表現を用いることによって、トランスポート入力出力(I/O)サブシステム203は、トランスポートされたデータを表すデータファイルを、ソースクライアント101に提供することができる。このデータファイルは、ターゲットクライアント102によって、インポートインタフェース204を介してトランスポートI/Oサブシステム203へと内部表現への変換のために提供される。
【0025】
ターゲットクライアント102はインポートインタフェース204へのアクセスを有しており、ターゲットデータベース104を再構築するために必要なパラメータとトランスポートI/Oサブシステム203によって生成されたデータファイルとが特定される。ターゲットデータベース接続205はターゲットデータベース104への接続を確立するのであり、インポートサブシステム206は、トランスポートI/Oサブシステム203によって作成された、データファイルの内部表現を用いてデータをターゲットデータベース104内へと再構築的にインポートして、グラフト点情報をターゲットクライアント102に返す。
【0026】
図3は、データエクスポート段階における動作フローを示す。開始されると(300)、エクスポートサブシステム202は、初期化し(301)、必要なデータ操作及び構成可能な変数を全て格納するための内部構造を作成する。例示の実施形態では、初期化(301)は、メッセージダイジェストサービスと行エクスポート(303)中に用いるための一意なエンコーディングキーとの生成を伴う。初期化(301)の後、ソースクライアント101はパラメータ(302)を特定するのであり、該パラメータには初期行識別子とエクスポートすべきテーブルと除外されたテーブルに関する随意的リストとが含まれる。一般的にエクスポート段階はソースクライアント101の活動に応答して開始(300)されるが、サービス或いはユーザアプリケーションとして動作する場合には適宜パラメータ(302)を入力することによって能動的エクスポートはせずに持続的に利用可能とされることができる。
【0027】
エクスポートサブシステム202の中核的ループは、パラメータ(302)で特定される初期行をエクスポートすることによって開始(303)される。エクスポートプロセス(303)がエクスポートを要する行がさらにある(304)と決定した場合、エクスポートを要する行がなくなるまで追加の行に対して行エクスポート(303)が行われる。全ての行がエクスポートされると、それら行をリストに配列するのであり(305)、該リストは順次的再構築のためのシーケンスによるものとされる。
【0028】
行リストが外部格納フォーマットに変換されると(306)、プロセスは終了する(307)。トランスポートI/Oサブシステム203を介したこの変換によって、データファイルをソースクライアント101に提供することができる。
【0029】
図4は、エクスポートプロセス(303)の際のデータ行のエンコーディング処理を示す。エンコーディングが開始されると(400)、行のテーブルと識別子(401)とがパラメータとして用いられる。テーブルが無視される場合(402)、行のエクスポートは省略される(403)。エンコードされた代替行識別子が作成されるのであり(404)、これは一意であり、かつ、テーブル及び元の行識別子へとトレース可能である。このエンコードされた識別子が既に格納されている場合(405)、行のエクスポートは省略される(406)。
【0030】
ソースデータベース103から行のカラムデータがフェッチされる(407)。行識別子が存在しないものと認められた場合(408)、行のエクスポートは省略される(409)。その余の場合、カラムデータは、トランスポートI/Oサブシステム203のために準備(410)される内部表現に、加工される。
【0031】
所与の行への関係及び所与の行からの関係は決定され(411)、エクスポート行によって参照される各行は分析される(412)。参照された行が無視されたテーブルに属する場合(413)、インポート時における後の検出のために内部表現内にダミー値が格納される(414)。その余の場合、被参照行はエクスポートされ、結果としてもたらされるそのエンコードされた識別子(或いは、既にエクスポートされている場合には既存のエンコードされた識別子)を、内部表現内に格納する。被参照行がさらにある場合(416)、これらも分析される(412)。
【0032】
被参照行に関するループが完了すると内部表現は、存在するエンコードされたデータとエンコードされた識別子とからなる集合内へと格納される(417)。そして、エクスポート行を参照する行が分析され(418)、エクスポートを要する参照する行がなくなるまで(420)、そのような行の各々がエクスポートされる(419)。プロセスは終了し(421)、エンコードされた識別子を返すのであり、これには被参照行の内部的エクスポート時(415)においての使途がある。
【0033】
図5は、データエクスポートプロセス(303)に際しての依存データ決定プロセスを示す。プロセスが開始されると(500)、テーブル名がパラメータとして受信される(501)。ソースデータベース103のメタデータがアクセスされて、行のテーブルによって参照されるテーブル全てについての関連性を有するカラムが検索される(502)。被参照テーブルカラムは分析され(503)、テーブルがエクスポート行のそれと同じである場合にはそれが省略され(504)、その余の場合には被参照テーブルカラムが依存関係に含まれる(505)。この検定・包含プロセスは、各被参照テーブルカラムについて反復される(506)。
【0034】
同様に、エクスポートテーブルを参照するカラムは、ソースデータベース103から検索される(507)。各カラムは分析され(508)、エクスポート行と同じテーブルである場合には省略され(509)、その余の場合には含められる(510)。残されたカラムがなくなるまでこの処理が反復され(511)、プロセスは終了する(512)。
【0035】
図6は、データエクスポートプロセス(303)に際してのポータブルな代替行識別子の生成プロセスを示す。プロセスは開始され(600)、疑似乱数生成器(PRNG)と現在タイムスタンプとを用いてランダムエンコーディングキーを生成する(601)。このエンコーディングキーは、エクスポート段階に際しての全ての行のエクスポート処理中においては持続的な状態に維持されるが、エクスポートされたファイルに保持されることは決してなく、また、インポート段階へとその他の態様で伝達されることも決してない。
【0036】
エンコードされるべき行のテーブル名と行識別子とを受信すると(602)、テーブル名とエンコーディングキーと行識別子とが一緒に組み合わされる(603)。結果としてもたらされるテキスト文字列は、MD5等のメッセージダイジェストアルゴリズムのための入力として用いられて、バイナリメッセージダイジェストが作成される(604)。そして、Base64等のバイナリtoテキストエンコーダを用いてこのダイジェスト値をASCII形式に変換するのであり(605)、これによってキー生成が完了する(606)。
【0037】
このプロセスによって、同じテーブル名と行識別子とを伴う一貫して同質なキーが生成されるのであり、これにより機能的な比較が可能となる。もっとも、エンコーディングキーを破棄すると、たとえ同時期にエクスポートされたキーからなる大規模なプールをもってしても、元の識別子を決定することは極めて困難になる。
【0038】
図7は、エクスポートデータを再構築可能なシーケンスに配列するプロセス(305)を示す。それぞれのテーブルに従ってエクスポートされた行は蓄積されているが故に、プロセスが開始されると(700)、エクスポートされた行を有するそのようなテーブルの全てが、キューに追加される(701)。このキューは配列を行うループで削減され、テーブルが含まれていない空の状態になっているか否かに関して判定される(702)。キューが空ならば、配列プロセスは終了される(703)。
【0039】
キューが空でない場合にはテーブルがキューから引かれ、それによって参照されている全てのテーブルが新たなリストに追加される(704)。テーブルのリストがキュー内に現存していないテーブルを含む場合、該テーブルはリストから取り除かれる(705)。結果としてもたらされるリストが空でない場合706、リストに関しての判定は、キュー内の次のテーブルへと進行する。しかし、リストが空である場合、キューからのテーブルはキューから取り除かれて(707)、その行が結果リストにプリペンドされる(708)。
【0040】
図8は、
図1のデータトランスポートに際して用いられる格納フォーマットを示す。データのトランスポート用表現はデータ行800によって提供され、これはプロパティとしてエンコードされた行識別子801とテーブル名802とを含んでいる。追加的には、データ行800は、タプルのコレクションを3つ含むことができる。
【0041】
このようなコレクションの第1のものはデータカラムタイプ803であり、これはテーブルカラム名804を「整数」等の記述的カラムタイプ805へとマッピングする。第2のコレクションはデータカラム806であり、これはテーブルカラム名807を整数の値そのもの等の生データ808へとマッピングする。最後たる第3のコレクションは参照カラム809であり、これは、
図6で示したように生成されたエンコードされた行識別子811へとマッピングされた、テーブルカラム名810を、含む。
【0042】
これらのデータ行800はそれらのデータベーステーブルに従ってグルーピングされるのであり、グルーピングは単純な記名リストでなされるのであり、これらリストはデータテーブル812と称される。
図7にてアレンジされているこれらのデータテーブル812の再構築可能なシーケンス(305)は、トランスポートI/Oサブシステム203にて用いられるトランスポート可能なデータファイルの基礎となる。例示の実施形態では、これらのデータテーブル812はバイナリXMLへとシリアライズされ、また、LZ77及びハフマンコーディングによって圧縮される。インポートされる前にこれらのステップは逆順で行われて、配列されたデータテーブル812が再生される
【0043】
図9は、データインポート段階における動作フローを示す。開始されると(900)、インポートサブシステム206は、インポート処理中において複数の「グラフト点」を付着させるために用いられるべき随意的な代替カラム識別子(901)(テーブル/カラム/IDのトリプレットとして格納されている)と、後のマッチングのためのグラフティングルートテーブルとを、受け取る。配列されたテーブルリスト812は抽出され(902)、第1番目のテーブルが分析される(903)。テーブルの行が列挙され、そして、各行が分析されて(904)、これによってターゲットデータベース104のための適切なSQLデータベース命令を作る(905)。
【0044】
各行カラムは、カラムがデータカラム806であるか否かについて分析され(906)、検定されるのであり(907)、カラムタイプ805に従って生の値808がSQL操作に組み込まれる。代わりにカラムが参照カラムである場合(809)、そのカラムは以前提供された(901)代替識別子に合致するかについて検定され(909)、発見されれば代替識別子がSQLコマンドに組み込まれる(911)。その余の場合には、エンコードされた識別子はマッチング(デコード)されて、ターゲットデータベース104によって新規に生成された行識別子を探すのであり、この新たな識別子はSQLコマンドに組み込まれる(910)。
【0045】
カラムについてSQLを準備した後は、カラムがさらに残っている場合には、プロセスが反復される(912)。全てのカラムについてのSQLが準備された後は、SQLステートメントがターゲットデータベース104に対して実行され、結果としてもたらされる新規に生成された行識別子は、それらの間の関係が指示(910)されているように記録される(914)。データベースの行生成処理はテーブルの全ての行に関して反復されるのであり(915)、逐次的に連続して存在する各テーブルへと続いていき(916)、これによって行識別子に関しての全く新たなセットを伴って、ソースデータベース103内のデータを再構築する。901で与えられるルートテーブルのための新たな行識別子を返すことによってプロセスは終了する(917)。
【0046】
コンピュータプログラムの記憶
上述したように、本願発明は好適にはコンピュータソフトウェア(「コンピュータプログラム」又は「コード」ともいう。以下、可換のものとして使用することもある。)として実現又は具体化することができる。プログラム又はコードは、デジタルプロセッサによって読み込むことができるデジタルメモリに記憶されている場合に最も効用を発揮する。「コンピュータ可読記憶媒体」(或いは「マシン可読記憶媒体」)等の用語は、上述した全てのタイプのメモリを含むものとして使用しており、また、記憶された情報が適切なデジタルプロセッサによって「読む」ことができるような態様で、少なくとも一時的に、コンピュータプログラムや他のデータとしてのデジタル情報を記憶することができるのならば、将来生じる新たな技術をも含むものとして使用している。「コンピュータ可読」との用語を用いることによって、語句を「コンピュータ」の歴史的な文脈に制限して完全なメインフレーム、ミニコンピュータ、デスクトップ機、ラップトップ機を指し示そうと意図はしていない。むしろ、該用語は、記憶媒体がデジタルプロセッサ又は任意のデジタルコンピューティングシステムによって読み込まれることができる、ということを意味する。このような媒体は、ローカル及び/又はリモートにおいてコンピュータ又はプロセッサによってアクセス可能な任意の利用可能媒体であることができ、また、揮発性/不揮発性の媒体、及び脱着可能/脱着不可能の媒体のいずれをも含む。一部の場合、例えば単純なテキストドキュメント又は「フラットファイル」の場合では、デジタルコンピューティングシステムは次の態様でファイルを「読む」ことしかできない場合がある:該ファイルに関しての、移動、コピー、削除、電子メール発信、ウイルススキャン等。換言すれば、その特定のコンピューティングシステム上では、該ファイルが実行可能でないことがある(ただし、別のプロセッサ又はコンピューティングシステム又はプラットフォーム上では、該ファイルは実行可能であるかもしれない。)。
【0047】
コンピュータプログラム製品
プログラムがコンピュータ可読記憶媒体内に格納されている場合、その記憶媒体をコンピュータプログラム製品と称する場合がある。例えば、可搬なデジタル記憶媒体は、コンピュータプログラムを記憶及び移送(引き渡し、販売、購入、ライセンス)するための便利な手段として用いられることができる。過去においては、上記のようなことは、パッケージド(「シュリンクラップされた」)プログラムの販売地点でのリテイル型引き渡しの場面で行われてきた。このような記憶媒体の例には、CD−ROM等が含まれるが、これらには限定されない。記憶済みコンピュータプログラムを含んでいるこのようなCD−ROMは、コンピュータプログラム製品の例である。
【0048】
当業者にとっては、本願発明の基底にある原理から逸脱せずに上述した実施形態の詳細に対して多くの変更を加えることができるということは、明白である。したがって、本願発明の範囲は、添付の請求の範囲によってのみ画定されるべきである。