JP4890811B2 - データストアに対して動的に生成されるオペレーションを検証すること - Google Patents

データストアに対して動的に生成されるオペレーションを検証すること Download PDF

Info

Publication number
JP4890811B2
JP4890811B2 JP2005221803A JP2005221803A JP4890811B2 JP 4890811 B2 JP4890811 B2 JP 4890811B2 JP 2005221803 A JP2005221803 A JP 2005221803A JP 2005221803 A JP2005221803 A JP 2005221803A JP 4890811 B2 JP4890811 B2 JP 4890811B2
Authority
JP
Japan
Prior art keywords
data store
snapshot
dynamically generated
unrestricted
data
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.)
Expired - Fee Related
Application number
JP2005221803A
Other languages
English (en)
Other versions
JP2006072986A (ja
JP2006072986A5 (ja
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 JP2006072986A publication Critical patent/JP2006072986A/ja
Publication of JP2006072986A5 publication Critical patent/JP2006072986A5/ja
Application granted granted Critical
Publication of JP4890811B2 publication Critical patent/JP4890811B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99951File or database maintenance
    • Y10S707/99952Coherency, e.g. same view to multiple users
    • Y10S707/99954Version management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Human Computer Interaction (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Description

本発明は、テストおよび検証に関し、詳細にはデータストア(data store)に対して動的に生成されるオペレーションを検証することに関する。
コンピュータ技術が進歩するにつれて、ストレージデバイスの容量が増大してきている。かかる1つまたは複数のストレージデバイスは、データストアとして見なすことができ、データストアに含めることができる大量のデータを保持し、それにアクセスするための異なる技法が開発されてきている。このデータにアクセスするために使用される技法については、かなり詳細に説明することができ、長い間に変化し得るので、このデータへのアクセスの詳細を抽象する製品が開発されている。この場合には、かかる抽象化製品(abstraction product)については、アプリケーション開発者がそれを活用してこの記憶されたデータにアクセスすることができる。したがって、このアプリケーション開発者は、この抽象化製品の使いやすいインターフェースを用いて対話することができ、この抽象化製品を利用してこのストレージデバイスへのアクセスの詳細を理解することができる。
一般的に、これらの抽象化製品は、アプリケーションから受け取ったあるフォーマットの要求または命令をこのデータストアが理解する別のフォーマットへと変換する。例えば、(あるプログラミング言語で記述された)アプリケーションからの特定のデータ値を変更する要求を、データストアの一部分の位置を突き止め、次いでデータストアのその部分に新しいデータを書き込む一連のオペレーション(例えば、一連のSQLステートメント)へと、抽象化製品によって変換することができる。
かかる抽象化製品が有する可能性のある1つの問題は、変換が正しく行われるように注意する必要があることである。この変換が間違って行われる場合には、このアプリケーションの要求の結果は、正確でない可能性があり、この抽象化製品は、正確なオペレーションのために利用することができない。この問題を解決することができる一方法は、この抽象化製品が生成するオペレーションまたは命令を解析し、この抽象化製品が受け取るこの要求を仮定して、これらのオペレーションまたは命令が正確であるかどうかを決定することにより、この抽象化製品をテストすることである。しかし、実際には、かかる解析および決定は、特に抽象化製品が生成するこれらのオペレーションまたは命令のフォーマット、ならびに特定のオペレーションまたは命令それ自体が、絶えず変化している可能性があることを考慮に入れると、非常に難しい可能性がある。したがって、抽象化製品が受け取った要求およびコマンドを正しく変換していることを検証するためのさらに良好な方法があれば有利なはずである。
本明細書中では、データストアに対して動的に生成されるオペレーションを検証することについて説明する。
ある態様によれば、データストアに対してパーミッションを設定して、このデータストアの制限のない部分に対してのみアクセスを可能にする。このデータストアの制限のない部分により、データストアに対するある要求について動的に生成される1つまたは複数のオペレーションがアクセスすべきでないデータストアの第1の部分が除外される。このデータストアに対して1つまたは複数のオペレーションが実行された後に、何らかの予想外の変更がこの制限のない部分に対して行われたかどうかについての検査が行われる。
他の態様によれば、データストアに対してパーミッションを設定して、このデータストアの制限のない部分に対してのみアクセスを可能にする。このデータストアの制限のない部分により、データストアに対するある要求について動的に生成される1つまたは複数のオペレーションがアクセスすべきでないデータストアの第1の部分が除外される。加えて、該1つまたは複数のオペレーションがアクセスすべきでない、この制限のない部分に含まれているデータストアの一部分に対するアクセスがロックされる。
以下、図面を参照して本発明の実施形態を説明する。同様なコンポーネントおよび/または特徴を参照するために、この文書全体を通して同じ番号を使用する。
本明細書中では、データストアに対して動的に生成されるオペレーションを検証することについて説明している。データストアに対するアクセスに関与する要求が行われるときに、このリクエスタ(requestor)について1つまたは複数のオペレーションが動的に生成され、これらの1つまたは複数のオペレーションは、これらのオペレーションを実行するデータストアに対して送られる。この要求を考慮してこのデータストアに対して行われると予想された操作が行われているかどうかについて、更にこの要求を考慮してこのデータストアに対して行われると予想されなかった操作が行われていないことについての検査が行われる。これらの検査が、この予想された操作が行われたことを、また予想外の操作が行われなかったことを示す場合には、これらの動的に生成されるオペレーションは、この要求について正確であるものとして検証される。様々な異なる技法を使用して、予想外の操作がこのデータストアに対して行われなかったことを検証することができる。
図1は、データストアに対して動的に生成されるオペレーションの検証を実施することができる一実施例の環境100を示すブロック図である。環境100は、データ完全性マネージャ(data integrity manager)102、オペレーションジェネレータ(operation generator)104、データストア106、およびアプリケーション108を含んでいる。
データストア106は、データを記憶する任意のシステムとすることができる。例えば、データストア106は、マイクロソフト(登録商標)SQLサーバデータベースなどのデータベース(例えば、リレーショナルデータベースまたは非リレーショナルデータベース)とすることができる。あるいは、データストア106は、XML(eXtensible Markup Language拡張マークアップ言語)ドキュメントやファイルシステムなどを記憶し、アプリケーションがそのデータ内容を問い合わせ、挿入し、アップデートし、または削除することができる他の任意タイプの構造化メモリおよび永続性メモリ(persisted memory)とすることができる。
オペレーションジェネレータ104は、アプリケーション108とデータストア106の間の仲介手段として動作する抽象化コンポーネント(abstraction component)である。データストア106にアクセスする要求は、アプリケーション108によってオペレーションジェネレータ104に対して行われ、このオペレーションジェネレータ104は、次にデータストア106に対して実行すべき1つまたは複数のオペレーションを動的に生成する。これらのオペレーションは、アプリケーション108から受け取られる個々の要求に基づいてオペレーションジェネレータ104によって生成されるので、これらのオペレーションは、動的に生成されるものと見なされる。アプリケーション108によって行われる要求は、例えば、データストア106からデータを検索する要求、データストア106中のデータを修正する要求、データストア106にデータを追加する要求、およびデータストア106からデータを削除する要求を含むことができる。オペレーションジェネレータ104によって動的に生成されるこれらのオペレーションは、従来の様々な方法のうちの任意の方法で生成することができ、アプリケーション108から受け取る特定の要求と、データストア106が提供するストレージの性質またはタイプに少なくとも部分的に依存することになる。オペレーションジェネレータ104が動的に生成するこれらのオペレーションは、クエリ、データ操作ステートメント、要求、コマンド、命令などとすることができる。例えば、オペレーションジェネレータ104が動的に生成するこれらのオペレーションは、データストア106からデータを読み取るオペレーションと、データストア106にデータを書き込むオペレーションと、データストア106中においてデータについての新しいエントリを作成する(例えば、データベースのテーブル中で新しい行を作成する)オペレーションと、データストア106中においてデータについてのエントリを削除する(例えば、データベースのテーブルから行を削除する)オペレーションとを含むことができる。
アプリケーション108は、データストア106にアクセスする様々な異なるアプリケーション(例えば、コンピュータプログラム)のうちの任意のものとすることもできる。さらに、1つのアプリケーション108しか図1に示していないが、複数のアプリケーションがオペレーションジェネレータ104を介してデータストア106にアクセスすることもできることに留意されたい。ある実施形態においては、アプリケーション108は、オペレーションジェネレータ104をテストするように設計されたテストアプリケーションであり、オペレーションジェネレータ104に様々な要求をサブミットし、その結果、オペレーションを動的に生成する際におけるジェネレータ104の振舞いを検証することができる。他の実施形態においては、アプリケーション108は、非テストアプリケーションとすることができるが、データ完全性マネージャ102を使用してオペレーションジェネレータ104が適切に機能していることを検証することができる。
ある実施形態においては、オペレーションジェネレータ104やデータ完全性マネージャ102などの各コンポーネントまたは各モジュールは、コネクションを介してデータストア106にアクセスする。このコンポーネントまたはモジュールは、このコネクション上でデータストア106にログインする。オペレーションジェネレータ104は、データストア106に特定のユーザ(これは、人間のユーザ、または単に何らかの識別子を意味することもある)としてログインし、並行して複数回、データストア106にログインすることができる。このコネクションはそれに関連づけられた1組の権限またはパーミッションを有する。1組の権限またはパーミッションは、そのコネクションを使用するコンポーネントがデータストア106において何を行うことが許可されるかを識別する。例えば、あるコンポーネントは、データストア106のある種の部分だけにアクセスすることしか許可されないこともあり、あるいはデータストア106から読み取ることは許可されるが書き込むことは許可されないこともある。このコンポーネントまたはモジュールは、このコネクション上でデータストア106と情報をやりとりするが、このコネクションの制限を満たすオペレーションしかデータストア106によって実行されないことになる。
データ完全性マネージャ102は、データストア106に対する制限のないコネクション110を使用する。データ完全性マネージャ102は、データストア106に対してどのようなオペレーションを実施することも禁止されていない。他方、オペレーションジェネレータ104は、データストア106に対する制限されたコネクション112を使用する。アプリケーション108がサブミットしている特定の要求に基づく、オペレーションジェネレータ104による、データストア106に対するある種のオペレーションの実行が禁止される。データ完全性マネージャ102は、以下でさらに詳細に説明するように制限されたコネクション112上のこれらの制限を設定する。
図2は、データストアに対して動的に生成されるオペレーションを検証するための一実施例のプロセス200を示すフローチャートである。プロセス200は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せの形で実施することができる。図2は、図1の環境100のコンポーネントを参照して説明される。プロセス200は、アプリケーション108によってオペレーションジェネレータ104に対してサブミットされる複数の要求(例えば、すべての要求)のそれぞれについて反復される。
最初に、データストア106にアクセスするためのセットアップアクション(setup action)が実行される(動作202)。制限されたコネクション112がまだ存在しない場合には、この制限されたコネクションが動作202において生成される。以下でより詳細に説明するように、これらのセットアップアクションは、例えば個々のパーミッションを認可または拒否し、制限されたコネクション112上でかかるパーミッションを設定すること、(例えば、データストア106の一部分のスナップショットを取得することにより)このデータストアに対する予想外の変更について後続の検査を可能にすること、データストア106の一部分をロックすることなどを含むことができる。実行すべき個々のセットアップアクションが、アプリケーション108によってデータ完全性マネージャ102に対して識別される。アプリケーション108は、オペレーションジェネレータ104にサブミットされようとしている特定の要求について知っており、したがってデータストア106にアクセスしてこの要求を実行する際に、ジェネレータ104が実行すべき個々のセットアップアクションを識別することが可能である。例えば、アプリケーション108が、データ完全性マネージャ102の振舞いを検証するテストプログラムである場合、アプリケーション108は、一般的にどのセットアップアクションがジェネレータ104によって実行されるべきであるかについての知識を有するように設計されることになる。別の実施例では、アプリケーション108がテストプログラムでない場合にも、アプリケーション108は、依然としてどのセットアップアクションがジェネレータ104によって実行されるべきであるかについての何らかの知識を有することができる(例えば、アプリケーション108が、ユーザがこのユーザのショッピングカートにアイテムを追加することができる一部分と、このユーザがこのショッピングカート中のアイテムについての支払いができる別の部分を含んでいる場合に、アプリケーション108は、データストア106中のクレジットカード番号など、請求書作成情報のいずれにも、このショッピングカートにアイテムを追加し、それからアイテムを削除することに関与する要求によってはアクセスされるべきではないことを知ることが可能である)。
オプションとして、これら所望のセットアップアクションが実行された後に、データ完全性マネージャ102は、このセットアップアクションが実行されていることを示す指示をアプリケーション108に対して返すことができ、それによってアプリケーションに、アプリケーションがその要求をオペレーションジェネレータ104に対してサブミットすることができることを通知することができる。
このセットアップアクションが実行された後に、このオペレーションジェネレータ104は、アプリケーション108から受け取った要求に基づいて1つ(または複数)の適切なオペレーションを動的に生成し(動作204)、データストア106に対して1つ(または複数)のこの動的に生成されたオペレーションを実行(動作206)。
次いで、アプリケーション108は、この予想された操作が行われたことを検証する(動作208)。動作208におけるこの検証は、従来の様々な方法のうちのどれにおいても実施することができる。アプリケーション108は、この要求がどのようなものあったかを、したがって(もし何かある場合には)何がデータストア106中で変更されているべきであるかを知っており、それ故、アプリケーション108は、追加の1つ(または複数)の要求をサブミットして、この所望の変更が行われていることを検証することができる。例えば、この要求がデータストア106にデータを追加することであった場合には、アプリケーション108は、追加されているはずのデータを検索しようと試みることができ、アプリケーション108がこのデータを検索する場合には、アプリケーション108は、この予想された操作がおこなわれたことを知る。
データ完全性マネージャ102はまた、予想外の操作が行われなかったことも検証する(動作210)。以下でより詳細に説明するように、この検証は、どのような変更がデータストア106に対して行われたか、ある試みがロックされたデータにアクセスするために行われたかどうか、ある試みが、パーミッションが拒否されたデータにアクセスするために行われたかどうかなどについての解析に基づいたものとすることが可能である。この検証の結果は、オプションとしてアプリケーション108に対して返すことができる。あるいは、データ完全性マネージャ102によって収集された情報(例えば、以下でさらに詳細に説明しているスナップショット)は、アプリケーション108に対して返して、アプリケーション108が予想外の操作が行われなかったことを検証することができる。
この動的に生成される1つ(または複数)のオペレーションが正しいものとして検証されるかどうかは、動作208および210における検証に依存している(動作212)。この予想された操作が行われたことが検証される場合、また予想外の操作が行われなかったことが検証される場合には、この動的に生成される1つ(または複数)のオペレーションは、正しいものとして検証される(動作214)。しかし、この予想された操作が行われたことが検証されない場合、および/または予想外の操作が行われなかったことが検証されない場合には、この動的に生成される1つ(または複数)のオペレーションは、正しいものとして検証されない(動作216)。
図3は、一実施例のデータ完全性マネージャ102をさらに詳細に示している。データ完全性マネージャ102は、スナップショットモジュール(snapshot module)302、パーミッションモジュール(permissions module)304、およびロックセットモジュール(lockset module)306を含んでいる。パーミッションモジュール304は、データストア106のある部分しかアクセスすることができないようにパーミッションを設定する。これらのパーミッションに基づいて、アクセスすることができるデータストア106のこれらの部分を、データストア106の制限のない部分と呼び、アクセスすることができないデータストアのこれらの部分を、データストア106の制限された部分と呼ぶ。スナップショットモジュール302は、予想外の任意の変更がデータストア106の制限のない部分に対して行われるかどうかを検査する。ロックセットモジュール306は、これらのロックされた部分をオペレーションジェネレータ104がアクセスすることができないようにデータストア106の制限のない部分のうちの一部分をロックする。モジュール302、304および306の振舞いについては、以下でより詳細に説明する。
ある実施形態は、スナップショットモジュール302、パーミッションモジュール304、およびロックセットモジュール306のそれぞれを含まないこともあることに留意されたい。これらのモジュールのうちのいずれを特定のデータ完全性マネージャ102中に含ませるかは、マネージャ102の設計者の要望、ならびにデータストア106がサポートする機能に基づいて変化する可能性がある。例えば、データストア106が、データストア106の一部分をロックし、または別の方法で一時的にアクセス不能にすることを可能にするメカニズムをサポートしない場合には、ロックセットモジュール306は、データ完全性マネージャ102中に含めなくてもよい。別の実施例では、マネージャ102の設計者が、データストア106によってサポートされるどのようなパーミッションを使用することも望まない場合(またはデータストア106がパーミッションをサポートしない場合)には、パーミッションモジュール304は、データ完全性マネージャ102中に含める必要がない。
パーミッションモジュール304は、データストア106にアクセスするためのパーミッションを設定する。データストア106は、パーミッションがデータストア106の異なる部分に対して認可および/または拒否されるようにすることができ、これらのパーミッションは、特定のコネクションに関連している。したがって、データ完全性マネージャ102は、制限されたコネクション112についてのパーミッションを設定して、制限されたコネクション112上でデータストア106のどの部分に対してオペレーションジェネレータ104がアクセスすることができるかを制限することができる。オペレーションジェネレータ104は、この制限のない部分にアクセスすることができるが、この制限された部分にはアクセスすることができない。データストア106に対する異なるコネクションについて異なるパーミッションを設定することができる(例えば、複数の制限されたコネクション112をオペレーションジェネレータ104が使用して、データストア106と情報をやりとりすることができ、これらの複数の制限されたコネクションのそれぞれは、異なるパーミッション設定を有することができる)。
パーミッションを使用してデータストア106の制限された部分および制限のない部分を定義することができる細分性(granularity)は、特定のデータストアに基づいて変化する可能性がある。これらのパーミッションは、例えばテーブルレベル、列レベル、行レベル、ページレベル、ラインレベルなどに対して設定することができる。データストア106がマイクロソフト(登録商標)SQLサーバデータベースである実施形態においては、データストア106により、パーミッションを列レベルまたはテーブルレベルで設定することが可能になる。マイクロソフト(登録商標)SQLサーバデータベースは、一般的に複数のテーブルからなり、各テーブルは、複数の行および複数の列を有することが可能である。これらのパーミッションが、テーブルレベルで設定される場合には、データストア106により、特定のテーブルにアクセスするパーミッションを認可または拒否することが可能になる。これらのパーミッションが列レベルで設定される場合には、データストア106により、特定のテーブルの特定の列にアクセスするパーミッションを認可または拒否することが可能になる。マイクロソフト(登録商標)SQLサーバデータベースにおいては、テーブル中で行を作成するオペレーションと、テーブルから行を削除するオペレーションは、このテーブルレベルで設定され、デーブル中でデータをアップデートするオペレーションと、テーブルからデータを読み取るオペレーションは、列レベルで設定される。
オペレーションジェネレータ104によって動的に生成されるオペレーションが、データストア106の制限された部分にアクセスしようと試みる場合、データストア106は、この制限された部分にアクセスするある試みが行われたことを示す指示をオペレーションジェネレータ104(または、代わりにデータ完全性マネージャ102)に返すことができる。代わりに、データストア106は、このオペレーションを単に実施しないこともあり、(タイムアウト期間と呼ばれる)特定の時間の後に、オペレーションジェネレータ104は、ある問題がこのオペレーションに伴って発生したことを想定することにもなる。データストア106から受け取ったこの指示、または経過するタイムアウト期間に基づいて、この制限された部分にアクセスする試みが行われたことを示す指示を、アプリケーション108に対して報告して返すことができ、それによってオペレーションジェネレータ104によって動的に生成される1つまたは複数のオペレーションに伴う問題が存在することをアプリケーション108に通知することができる。
パーミッションモジュール304の振舞いについては、以下の実施例から理解することができる。データストア106が、3つのテーブル、すなわち顧客に関する情報を記憶する顧客テーブルと、発行されている注文に関する情報を記憶する注文テーブルと、支払い情報(例えば、クレジットカード番号)を記憶する支払いテーブルを含んでいるものと想定する。さらに、アプリケーション108が、オペレーションジェネレータ104に対して要求を送って、この顧客テーブルに顧客(例えば、名前、住所、電話番号など)を追加しようとしていることを、またアプリケーション108が、この顧客テーブルにこの顧客を追加するこの要求がこの注文テーブルまたはこの支払いテーブルへのアクセスを必要としないはずであることについて(例えば、図2の動作202を確立する一部分として)データ完全性マネージャ102に通知することを想定する。したがって、データ完全性マネージャ102は、この注文テーブルおよびこの支払いテーブルに対するアクセスが拒否されるが、この顧客テーブルに対するアクセスは認可されるように制限されたコネクション112上でパーミッションを設定することができる。したがって、オペレーションジェネレータ104が、1つ(または複数)のオペレーションを動的に生成してアプリケーション108によるこの名前を変更する要求中で示されるような顧客を追加するときに、ジェネレータ104によって生成されるオペレーションのうちのどれかが、この注文テーブルまたはこの支払いテーブルにアクセスしようと試みる場合に、データストア106は、このアクセスの実行を許可しないことになる。データストア106は、パーミッションを拒否されたテーブルにアクセスする試みが行われたことを示す指示をオペレーションジェネレータ104(または、代わりにデータ完全性マネージャ102)に対して返すことができ、あるいは、データストア106は、単にこのオペレーションを実施しないこともあり、あるタイムアウト期間が経過した後に、オペレーションジェネレータ104は、ある問題がこのオペレーションに伴って発生したことを想定することになる。
しかし、パーミッションを認可することおよび拒否することにより、必ずしも不適切なオペレーションを検出できるとは限らない。例えば、先に述べた実施例を続けて用いると、オペレーションジェネレータ104によって動的に生成されるこれらのオペレーションが、顧客テーブルから顧客を削除することもあることを想定する。オペレーションジェネレータ104は、この顧客テーブルにアクセスするパーミッションを有するので、このパーミッションにより、この間違った削除が発生することが禁止されないことになる。
スナップショットモジュール302は、予想外の任意の変更がデータストア106のこの制限のない部分に対して行われるかどうかを検査する。スナップショットモジュール302は、データストア106の制限された部分に対して予想外の任意の変更が行われるかどうかについて検査する必要がない。なぜなら、データストア106の制限された部分に対してどのような変更も行われることがないようにすることは、すでに設定されているパーミッションに依存する可能性があるからである。代わりに、スナップショットモジュール302は、予想外の任意の変更が制限のない部分ではなくてデータストア106の追加の区域に対して行われるかどうかを検査することもできる。さらに、データストア106の制限のない部分は、データストア106のすべてであってもよいことに留意されたい(例えば、パーミッションモジュール304が存在しない実施形態においては、データストア106全体を制限のない部分と見なすことができる)。
アプリケーション108は、データストア106に対するどのような変更が予想されるかについてデータ完全性マネージャ102に通知し、スナップショットモジュール302は、予想外の任意の変更がこの制限のない部分に対して行われるかどうかを検査することができるようになる。代わりに、この制限のない部分に対してどのような変更が行われるかについての指示をスナップショットモジュール302によってアプリケーション108に対して返すこともでき、その結果、アプリケーション108は、予想外の任意の変更がこの制限のない部分に対して行われるかどうかを決定することができる。
スナップショットモジュール302は、予想外の任意の変更がデータストア106の制限のない部分に対して行われるかどうかを様々な異なる方法で検査することができる。ある種の実施形態においては、スナップショットモジュール302は、動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のすべての部分のスナップショットを取得する。このスナップショットは、例えば図2の動作202において確立する部分として取得される。スナップショットは、これらの動的に生成されるオペレーションが実行される以前に取得されるので、「実行以前の」スナップショット、または「以前の」スナップショットと呼ぶこともできる。これらの動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちのこれらの部分は、例えばアプリケーション108によって識別される。アプリケーション108は、どのような要求がサブミットされることになるかを知っているので、データストア106中において、何が起こるはずで何が起こらないはずであるかについての知識も有しており、この知識を、データ完全性マネージャ102に対して渡すことができる。例えば、テーブル中において(例えば、顧客テーブルにおける新しい顧客についての)新しい行が作成される場合には、このテーブル中における既存の行は、この動的に生成されるオペレーションによって変更されるはずはない。別の実施例では、テーブル中の行が削除される(例えば、顧客テーブルから顧客を取り除く)場合には、削除すべき行以外の行は、この動的に生成されるオペレーションによって変更されるはずはない。アプリケーション108が、データストア106中で何が起こるはずで何が起こるはずでないかについて有する知識は、一般的に特定の要求について何が必要とされないかという観点から特徴づけられる。例えば、アプリケーション108が、この要求がテーブル中の2行に対してしか影響を及ぼさないはずであることを知っている場合には、アプリケーション108は、変更されないはずのもしかすると数千行もある行を列挙する代わりに、これらの2行を列挙し、他の行が変更されないはずであることを示すことができる。
動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分のスナップショットは、異なる方法で取得することができる。ある実装においては、スナップショットは、動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分におけるすべてのデータをコピーし、あるいはキャプチャーすることによって取得される。他の実装においては、このスナップショットは、これらの動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分に対して(従来のハッシュファンクションを使用して)ハッシュ値を計算することによって取得される。
他の実装においては、スナップショットは、データストア106の制限のない部分のうちの異なる部分についてのバージョン番号をコピーし、あるいはキャプチャーすることによって取得される。例えば、データストア106が1つまたは複数のテーブルを有するデータベースである実施形態においては、バージョン値の列をこのテーブル中に含めることができる。このデータベースの特定の行についてのバージョン値は、この特定の行のデータが変更されるたびにこのデータベースによって変更される。このバージョン値は、例えば、GUID(Globally Unique Identifierグローバル一意識別子)、(例えば、ナノ秒で時間を測定した)日付およびタイムスタンプ、この行におけるデータにハッシュファンクションを適用する結果もたらされるハッシュ値など、このデータベース中で一意であることが予想される値にすることができる。かかるバージョン値の列がこのテーブル中にまだ存在していない場合には、データ完全性マネージャ102は、(例えば、図2の動作202を確立する一部分として)このテーブル中のこの列を作成することができる。
データストア106の制限のない部分のうちの異なる部分についてのバージョン番号をコピーし、あるいはキャプチャーすることに加えて、ある実施形態においては、バージョン番号がどの部分についてであるかを示すインジケータもまたコピーし、あるいはキャプチャーすることができる。例えば、データストア106が、バージョン値の列を有するテーブルを含んでいる実施形態においては、別の列がこのテーブルの行を一意に識別する識別子(例えば、一次キー値)を含むことができる。したがって、このスナップショットは、このテーブルのバージョン番号と個々の行との間の関連付けを保持することができる。このテーブルのバージョン番号と個々の行の間の関連付けを可能にするこれらの追加の識別子を有することにより、以下でより詳細に説明するように、検出される任意の変更の性質をより正確に識別することが可能になる。
動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分のスナップショットが取得された後に、動的に生成されるオペレーションを実施することができる。動的に生成されるオペレーションが実行された後に、動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分の別のスナップショットが取得される。この第2のスナップショットは、前述のような実行以前のスナップショットと同じ方法で取得される。この第2のスナップショットは、例えば図2の動作210において検証の一部分として取得される。第2のスナップショットは、動的に生成されるオペレーションが実行された後に取得されるので、「実行以後の」スナップショットまたは「以後の」スナップショットと呼ぶこともできる。第2のスナップショットは、これらの動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分について取得され、必ずしもこの実行以前のスナップショットと同じ部分が取得されるとは限らないことに留意されたい。したがって、例えば、新しい任意の行が、これらの動的に生成されるオペレーションによって追加されることが予想された行以外の制限のない部分においてテーブルに追加された場合には、取得される実行以後のスナップショットは、これらの新しい行を含むはずである。
動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分に対するどのような変更がある場合にも、これらの変更は、これらのスナップショット中に反映されるはずである。例えば、変更されることが予想されないデータストアの制限のない部分に追加された任意のデータ(例えば、テーブルの行)と、変更されることが予想されないデータストアの制限のない部分から削除された任意のデータと、変更されることが予想されないデータストアの制限のない部分において修正された任意のデータは、これらのスナップショット中に反映されるはずである。したがって、この実行以前のスナップショットとこの実行以後のスナップショットの両者が同じ(すなわち、これらの値が、動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分におけるすべてのデータ、あるいはハッシュ値、またはバージョン値などであろうとなかろうと同一の値)である場合には、動的に生成されるオペレーションによって変更されることが予想されないデータストア106の制限のない部分のうちの一部分に対して変更は行われていない。
スナップショットが取得される方法によっては、動的に生成されるオペレーションによって変更されることが予想されないが、変更されるデータストア106の制限のない部分のうちの特定の一部分を識別することができる。例えば、一次キー値などの識別子がこのスナップショットの一部分としてコピーされ、あるいはキャプチャーされる場合に、そのときに特定のバージョン番号が、この実行以前のスナップショットと実行以後のスナップショットで異なる場合には、スナップショットモジュール302は、テーブルの(これらの識別子に基づいた)どの行が変更されたかについて知っている。
テーブルのバージョン番号と個々の行の間の関連付けを可能にする追加の識別子(例えば、一次キー値)を有することによって、検出される任意の変更の性質をより正確に識別することが可能である。例えば、バージョン値が変化したが、行の識別子が同じままである場合には、この行のデータに対する修正が存在したことになる。別の実施例として、新しい行識別子が、実行以後のスナップショット中には存在するが、実行以前のスナップショット中に存在しなかった場合には、新しい行識別子によって識別される行は、テーブルに追加された新しい行である。さらに他の実施例として、行識別子が実行以前のスナップショットには存在するが、実行以後のスナップショット中には存在していない場合には、行識別子によって識別される行は、テーブルから削除された行である。
他の実施形態においては、データストア106の一部分のスナップショットを取得するのではなくて、スナップショットモジュール302が、トリガを使用して、予想外の任意の変更がデータストア106の制限のない部分に対して行われるかどうかを決定する。トリガは、スナップショットモジュール302が、データストア106の特定のテーブル(または他のユニット)に対して行われた各変更についてデータストア106が通知することを要求できるようにする、一部のデータストア106によってサポートされるメカニズムである。かかる変更は、例えば特定のテーブルに追加されるデータ、特定のテーブルから削除されるデータ、および特定のテーブル中でアップデートされるデータを含む可能性がある。スナップショットモジュール302は、データストア106によって通知されるこれらの変更のレコード(例えば、これらの変更をリストアップするテーブル)を保持し、次いで動的に生成されるオペレーションが(例えば、図2の検証動作210の一部分として)実行された後に、このレコードを評価する。代わりに、この変更のレコード(例えば、これらの変更をリストアップしたテーブル)は、データストア106によって保持することができ、このレコードは、スナップショットモジュール302によってアクセスすることができる。
いずれかの変更が、アプリケーション108がデータ完全性マネージャ102に通知したものではないと予想された変更のレコード中に含まれる場合にも、スナップショットモジュール302は、予想外の1つ(または複数)の変更が、これらの動的に生成されるオペレーションによってデータストア106の制限のない部分に対して行われたことを知っている。このレコード中に含まれる変更が、アプリケーション108がデータ完全性マネージャ102に通知したと予想された変更だけでしかない場合には、スナップショットモジュール302は、予想外の変更が、これらの動的に生成されるオペレーションによってデータストア106の制限のない部分に対して行われなかったことを知っている。
ある実施形態においては、パーミッションモジュール304およびスナップショットモジュール302を使用して、データストア106中のエントリ(例えば、行、列、テーブル、ページ、ライン、ブロックなど)の作成、データストア106中のエントリのアップデート、および/またはデータストア106中のエントリの削除を行うなど、データストア106を修正することに関与するアプリケーション108からの要求について予想外の操作が実行されなかったことを検証する。以下でより詳細に説明するように、パーミッションモジュール304およびロックセットモジュール306を使用して、データストア106からのエントリを読み取ることに関与するアプリケーション108からの要求について、予想外の操作が実行されなかったことを検証する。
図4は、予想外の操作が、動的に生成されるオペレーションによって実行されなかったことを検証するための一実施例のプロセス400を示すフローチャートである。プロセス400は、図2のセットアップアクション動作202および/または検証動作210の実行として実施することができるプロセスの実施例である。プロセス400は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せの形で実施することができる。
最初に、パーミッションを使用して、アクセスすべきではないこのデータストアの一部分に対するアクセスを拒否する(動作402)。これらのパーミッションは、例えば前述のように図3のパーミッションモジュール304によって設定される。動的に生成される1つ(または複数)のオペレーションが実行された後に、動的に生成される1つ(または複数)のオペレーションによって予想外の任意の変更がこのデータストアの制限のない部分に対して行われたかどうかについての検査が行われる(動作404)。この検査は、例えば前述のように図3のスナップショットモジュール302によって行われる。この検査の結果は、例えばアプリケーション108に返すことができる。
次いで、プロセス400は、データストアの制限のない部分に対して動的に生成される1つ(または複数)のオペレーションが予想外の任意の変更を行ったかどうか、またはデータストアの制限された部分にアクセスしたかどうかに基づいて進行する(動作406)。データストアの制限のない部分に対して予想外の任意の変更が行われたかどうかについては、動作404における検査結果から決定される。データストアの制限された部分への任意のアクセスが試みられたかどうかについては、前述のようにパーミッションモジュール304が設定するパーミッションに基づいて実施される。
動的に生成される1つ(または複数)のオペレーションが、データストアの制限のない部分に対して予想外の任意の変更を行い、またはデータストアの制限された部分にアクセスし、あるいはその両方を行う場合には、予想外の操作が、動的に生成される1つ(または複数)のオペレーションによって実行されている(動作408)。オプションとして、どのような操作が行われたかについての指示を図1のアプリケーション108に返すことができ、あるいは代わりに、予想外の何らかの操作が行われたことを示す指示を単にアプリケーション108に返すこともできる。しかし、動的に生成される1つ(または複数)のオペレーションが、データストアの制限のない部分に対して予想外のどのような変更も行わなかった場合、またデータストアの制限された部分にアクセスしなかった場合には、予想外の操作が動的に生成される1つ(または複数)のオペレーションによって実行されなかったことが検証される(動作410)。この検証結果については、オプションとしてアプリケーション108に返すこともできる。
図5は、予想外の操作が動的に生成されるオペレーションによって実行されなかったことを検証する別の実施例のプロセス500を示すフローチャートである。プロセス500は、図2のセットアップアクション動作202および/または検証動作210の実行として実施することができるプロセスの一実施例である。プロセス500は、ソフトウェア、ファームウェア、ハードウェア、またはこれらの組合せの形で実施することができる。
最初に、パーミッションを使用して、アクセスすべきでないデータストアの一部分に対するアクセスを拒否する(動作502)。これらのパーミッションは、例えば、前述のように図3のパーミッションモジュール304によって設定される。次いで、データストアの制限のない部分の第1のスナップショットが取得される(動作504)。このスナップショットは、スナップショットモジュール302に関して前述したように様々な方法で取得することもできる。動的に生成される1つ(または複数)のオペレーションが実行された後に、データストアの制限のない部分の第2のスナップショットが取得される(動作506)。第2のスナップショットは、第1のスナップショットが動作504で取得されたのと同様な方法で取得される。
次いで、この第1および第2のスナップショットが比較され(動作508)、プロセス500は、これらの2つのスナップショットが同じであるかどうかに基づいて進行する(動作510)。これらの2つのスナップショットが同じ(例えば、これらの値が、動的に生成されるオペレーションによって変更されることが予想されないデータストアの制限のない部分のうちの一部分におけるすべてのデータ、あるいはハッシュ値、またはバージョン値などであろうとなかろうと同一の値)である場合には、予想外の操作が動的に生成される1つ(または複数)のオペレーションによって実行されたことが検証される(動作512)。この検証結果は、オプションとしてアプリケーション108に返すことができる。しかし、これらの2つのスナップショットが同じでない場合には、予想外の操作が、動的に生成される1つ(または複数)のオペレーションによって実行されている(動作514)。オプションとして、(例えば、変更されるこのスナップショット中のどの値に基づいて)どの操作が行われたかを示す指示を、図1のアプリケーション108に対して返すことができ、あるいは代わりに予想外の何らかの操作が行われたことを示す指示を単にアプリケーション108に対して返すこともできる。
図3に戻ると、ロックセットモジュール306は、データストア106の制限のない部分のうちの一部分をロックし、その結果、これらのロックされた部分には、オペレーションジェネレータ104がアクセスすることができなくなる。代わりに、ロックセットモジュール306は、制限のない部分のうちの一部分だけでなく、データストア106の追加の一部分をロックすることもできる。さらに、データストア106の制限のない部分は、データストア106のすべてとすることもできる(例えば、パーミッションモジュール304が存在しない実施形態においては、データストア106全体を制限のない部分と見なすこともできる)ことに留意されたい。ロックセットモジュール306は、一般的にデータストア106からのデータ値を読み取ることに関与するアプリケーション108からの要求について使用される。
前述のように、データストア106がサポートするパーミッションの細分性により、データストア106のすべての所望の部分を制限することができるようにならないこともある(例えば、パーミッションにより、テーブル全体へのアクセスを拒否することはできるが、行ごとにはパーミッションの認可または拒否ができないこともある)。ロックセットモジュール306により、データストア106がサポートするパーミッションにより可能になるよりも細かい細分性に基づいてデータストア106の一部分をロックすることが可能になる。ロックセットモジュール306は、動的に生成されるオペレーションがアクセスすべきでないデータストア106の制限のない部分のうちのこれらの部分を識別する。アプリケーション108は、どのデータがデータストア106から要求されているかについてデータ完全性マネージャ102に通知し、これにより、ロックセットモジュール306は、データストア106の制限のない部分のうちのどの部分が、動的に生成されるオペレーションによってアクセスされるべきでないかを決定し、これらの部分をロックすることができるようになる。
動的に生成されるオペレーションがアクセスすべきでないデータストア106の制限のない部分のうちの一部分は、データストア106の性質に少なくとも部分的に応じて、異なる方法で識別することができる。データストア106がマイクロソフト(登録商標)SQLサーバである、ある実施形態においては、動的に生成されるオペレーションがアクセスすべきでないデータストア106の制限のない部分のうちの一部分は、アプリケーション108からの要求を満たさないデータストア106の制限のない部分中のこの1つ(または複数)のテーブルの各行を(例えば、一次キーなどの識別子によって)選択するロックセットモジュール306によって識別される。これらの行(およびこれらの識別子)は、例えば、どの行がアプリケーション108からの要求を満たさないことになるかを識別するためにオペレーションをデータストア106に対してサブミットするロックセットモジュール306によって決定することができる。行ごとに、ロックセットモジュール306は、行に対するアップデートトランザクションを開始するが、このアップデートトランザクションをまだ完了してはいない。トランザクションは、すべてが実行されているか、何も実行されていないことが保証されるオペレーションの集合を意味している。1つのトランザクションは、一般的に集合におけるすべてのオペレーションの結果をコミットするか、または集合中のオペレーションの結果のうちのどれもコミットされないようにするためにこのトランザクションをロールバックするオペレーションによって完了される。アップデートトランザクションは、データストア106の特定の一部分(例えば、特定の1つ(または複数)の行)をアップデートし、または修正するトランザクションである。アップデートトランザクションが行ごとに開始された後に、ロックセットモジュール306は、そのロッキングプロセスが行われること、およびジェネレータ104がオペレーションを動的に生成することができるようにオペレーションジェネレータ104に対して要求をサブミットすることができることをアプリケーション108に通知する。
各行ごとに別のアップデートトランザクションを開始して、データストア106中における「ロックエスカレーション(lock escalation)」と呼ばれる状況を回避する。ロックエスカレーションは、トランザクションが要求するようにデータストア106が個別の行をロックしようとするのではなくて、ただテーブル全体をロックすることを結論づける、テーブル中における十分な行にアクセスするトランザクションを、データストア106が、受け取るときに発生する。しかし、テーブル全体がロックされることになる場合には、動的に生成されるオペレーションがアクセスすべきこのテーブルの一部分は、動的に生成されるオペレーションにとってアクセス可能でないことになる。したがって、ロックエスカレーションを回避し、動的に生成されるオペレーションがアクセスすべきこのテーブルの一部分を動的に生成されるオペレーションにとってアクセス可能なままにしておくために、行ごとの個別のアップデートトランザクションが開始される。データストア106は、個別のアップデートトランザクションを別々に取り扱い、ロックエスカレーションは、発生しないことになる。データストア106がロックエスカレーションを示さない実施形態においては、かかる個別のアップデートトランザクションを使用する必要がなく、動的に生成されるオペレーションがアクセスすべきでないすべての行を識別する1つのアップデートトランザクションを使用することができることに留意されたい。
アプリケーション108からの要求を満たさないこれらの各行に対するアップデートトランザクションを開始するが、まだ完了しないことにより、データストア106は、ロックセットモジュール306がこれらの行に対して変更を行うプロセス中にあるものと思う。したがって、動的に生成されるオペレーションが実行されるときに、これらのオペレーションのいずれかがデータストア106のロックされた部分にアクセスを行う(例えば、読み取る)ことを試みるとすると、データストア106の一部分がこの完了していない1つ(または複数)のアップデートトランザクションに起因してロックされるので、データストア106は、このオペレーションを実行しないことになる。データストア106は、別のコンポーネント(ロックセットモジュール306)が、データストア106のこの一部分をアップデートするプロセス中にあることを知っており、したがって、そのオペレーションについてその適切な1つ(または複数)の値が何であるかが、完了していない1つ(または複数)のアップデートトランザクションが完了してしまうまで確実でないので、データストア106は、このオペレーションを実行しないことになる。データストア106は、一般的に特定の時間後にタイムアウトし、オペレーションがタイムアウトされ、実行することができなかったことを示す指示をオペレーションジェネレータ104に対して返すことになる。次いで、オペレーションジェネレータ104は、この要求を実行することができなかったことを示す応答をアプリケーション108に対して返し、アプリケーション108は、動的に生成される1つ(または複数)のオペレーションに伴う問題が存在したことを推論することができる。
アプリケーション108は、動的に生成されるオペレーションが実行されたときをデータ完全性マネージャ102に通知し、この時点で、ロックセットモジュール306は、この行に対してそれが確立したロックを解放することができる。ロックの解放は、例えばロックセットモジュール306により、データストア106に通知してロックを解放し、アップデートトランザクションをロールバックすることによって実施することができる。トランザクションをロールバックすることにより、データのアップデートは、実際にはこれらのアップデートトランザクションに応答してデータストア106が実施することはない。ロックの解放、およびアップデートトランザクションのロールバックは、(たとえこれらのアップデートトランザクションのうちのどれも、データストア106に対してコミットされなかったとしても)アップデートトランザクションの完了の役割を果たす。
一部の状況においては、複数の異なる組のロックをロックセットモジュール306によって並行して確立することができる。これらの異なる組のロックは、別々に確立し、解放することができ、これらのロックを確立するアップデートトランザクションは、一般的にデータストア106に対する異なるコネクション(例えば、図1の制限のないコネクション110に類似の異なる制限のないコネクション)上で実施されるはずである。
図6は、動的に生成されるオペレーションがアクセスすべきでないデータストアの一部分が、動的に生成されるオペレーションによってアクセスされないことを検証するための一実施例のプロセス600を示すフローチャートである。プロセス600は、図2のセットアップアクション動作202および/または検証動作210の実行として実施することができるプロセスの一実施例である。プロセス600は、ソフトウェア、ファームウェア、ハードウェア、またはそれらの組合せの形で実施することができる。
最初に、パーミッションを使用して、アクセスすべきでないデータストアの一部分に対するアクセスを拒否する(動作602)。これらのパーミッションは、例えば前述のような図3のパーミッションモジュール304によって設定される。次いで、読み取るべきでないデータストアの制限のない部分のうちの一部分をロックする(動作604)。このロッキングについては、例えば図3のロックセットモジュール306を参照して前述したように実施することができる。
動的に生成される1つ(または複数)のオペレーションが実行された後に(あるいは、代わりに動的に生成される1つ(または複数)のオペレーションが実行されるのと並行して)、プロセス600は、データストアのロックされた任意の部分が動的に生成される1つ(または複数)のオペレーションによってアクセスされたかどうかに基づいて進行する(動作606)。データストアのロックされた任意の部分が、動的に生成される1つ(または複数)のオペレーションによってアクセスされた場合には、動的に生成される1つ(または複数)のオペレーションは、アクセスされるべきでないデータストアの一部分にアクセスしようと試みたことになる(動作608)。オプションとして、動的に生成される1つ(または複数)のオペレーションがアクセスされるべきでないデータストアの一部分にアクセスしようと試みたことを示す指示を図1のアプリケーション108に返すことができる。しかし、データストアのロックされた部分が、動的に生成される1つ(または複数)のオペレーションによってアクセスされなかった場合には、動的に生成される1つ(または複数)のオペレーションは、アクセスされるべきでないデータストアの一部分にアクセスしようと試みなかったことになる(動作610)。この検証結果は、オプションとしてアプリケーション108に返すことができる。
図7は、本明細書中で説明している技法を実施するために使用することができる一般的なコンピュータ環境700を示している。コンピュータ環境700は、コンピューティング環境の一実施例にすぎず、このコンピュータアーキテクチャおよびネットワークアーキテクチャの用途および機能の範囲についてどのような限定を示唆することも意図してはいない。また、コンピュータ環境700は、例示のコンピュータ環境700中に示されるコンポーネントのうちのどの1つまたは組合せに関連したどのような依存性または要件を有するものとも解釈すべきでもない。
コンピュータ環境700は、コンピュータ702の形態の汎用コンピューティングデバイスを含んでいる。コンピュータ702は、例えば、図1のアプリケーション108、オペレーションジェネレータ104、データ完全性マネージャ102、および/またはデータストア106を実装することができるデバイスとすることができる。コンピュータ702のコンポーネントは、それだけには限定されないが、1つまたは複数のプロセッサまたは処理装置704、システムメモリ706、およびプロセッサ704を含めて様々なシステムコンポーネントをシステムメモリ706に結合するシステムバス708を含むことができる。
システムバス708は、メモリバスまたはメモリコントローラ、ペリフェラルバス、アクセラレーティドグラフィックスポート、および様々なバスアーキテクチャのうちのどれかを使用したプロセッサバスまたはローカルバスを含めて、いくつかのタイプのバス構造のうちのどれかのうちの1つまたは複数を表す。実施例として、かかるアーキテクチャは、ISA(Industry Standard Architecture業界標準アーキテクチャ)バス、MCA(Micro Channel Architectureマイクロチャネルアーキテクチャ)バス、EISA(Enhanced ISA拡張ISA)バス、VESA(Video Electronics Standards Associationビデオエレクトロニクス規格協会)ローカルバス、およびメザニン(Mezzanine)バスとしても知られているPCI(Peripheral Component Interconnectペリフェラルコンポーネント相互接続)バスを含むことができる。
コンピュータ702は、一般的に様々なコンピュータ読取り可能媒体を含んでいる。かかる媒体は、コンピュータ702によってアクセス可能な使用可能な任意の媒体とすることができ、揮発性媒体も不揮発性媒体も、着脱可能媒体も、着脱不能媒体も含んでいる。
システムメモリ706は、RAM(random access memoryランダムアクセスメモリ)710などの揮発性メモリ、および/またはROM(read only memory読取り専用メモリ)712などの不揮発性メモリの形態のコンピュータ読取り可能媒体を含んでいる。起動中などコンピュータ702内のエレメント間で情報を転送する助けをする基本ルーチンを含むBIOS(basic input/output system基本入出力システム)714は、ROM712に記憶される。RAM710は一般的に、処理装置704にとって直接にアクセス可能であり、または処理装置704によって現在動作させられており、あるいはその両方が行われるデータおよび/またはプログラムモジュールを含んでいる。
コンピュータ702は、他の着脱可能/着脱不能な、揮発性/不揮発性のコンピュータストレージ媒体を含むこともできる。実施例として、図7は、着脱不能な不揮発性磁気媒体(図示せず)から情報を読み取り、それに情報を書き込むハードディスクドライブ716、着脱可能な不揮発性磁気ディスク720(例えば、「フロッピー(登録商標)ディスク」)から情報を読み取り、それに情報を書き込む磁気ディスクドライブ732、ならびにCD−ROM、DVD−ROMや他の光媒体など着脱可能な不揮発性光ディスク724から情報を読み取り、またはそれに情報を書き込み、あるいはその両方を行う光ディスクドライブ722を示している。ハードディスクドライブ716、磁気ディスクドライブ732、および光ディスクドライブ722は、それぞれ1つまたは複数のデータ媒体インターフェース725によってシステムバス708に接続される。代わりに、ハードディスクドライブ716、磁気ディスクドライブ732、および光ディスクドライブ722は、1つまたは複数のインターフェース(図示せず)によってシステムバス708に接続することもできる。
これらのディスクドライブおよびこれらに関連するコンピュータ読取り可能媒体は、コンピュータ702のためのコンピュータ読取り可能命令、データ構造、プログラムモジュール、および他のデータの不揮発性ストレージを提供する。この実施例は、ハードディスク716、着脱可能磁気ディスク720、および着脱可能光ディスク724を示しているが、磁気カセットまたは他の磁気ストレージデバイス、フラッシュメモリカード、CD−ROM、DVD(digital versatile diskデジタル多用途ディスク)または他の光ストレージ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)、EEPROM(electrically erasable programmable read-only memory電気的消去可能プログラマブル読取り専用メモリ)など、コンピュータによってアクセス可能なデータを記憶することができる他のタイプのコンピュータ読取り可能媒体を利用して、例示のコンピューティングシステムおよびコンピューティング環境を実装することもできることを理解されたい。
実施例としてオペレーティングシステム726、1つまたは複数のアプリケーションプログラム728、他のプログラムモジュール730、およびプログラムデータ732を含めて、任意数のプログラムモジュールをハードディスク716、磁気ディスク720、光ディスク724、ROM712、および/またはRAM710に記憶することができる。かかるオペレーティングシステム726、1つまたは複数のアプリケーションプログラム728、他のプログラムモジュール730、およびプログラムデータ732(または、これらの組合せ)のそれぞれは、この分散ファイルシステムをサポートする常駐コンポーネントのすべてまたは一部分を実装することができる。
ユーザは、キーボード734やポインティングデバイス736(例えば、「マウス」)などの入力デバイスを介してコンピュータ702にコマンドおよび情報を入力することができる。他の入力デバイス738(詳細には図示せず)は、マイクロフォン、ジョイスティック、ゲームパッド、サテライトディッシュ、シリアルポート、スキャナおよび/またはその他同種類のものなどを含むことができる。これらおよび他の入力デバイスは、このシステムバス708に結合される入出力インターフェース740を介して処理装置704に接続されるが、これらは、パラレルポート、ゲームポート、USB(universal serial busユニバーサルシリアルバス)など他のインターフェースおよびバス構造によって接続することもできる。
モニタ742または他のタイプのディスプレイデバイスもまた、ビデオアダプタ744などのインターフェースを介してシステムバス708に接続することができる。モニタ742に追加して、他の出力ペリフェラルデバイスは、入出力インターフェース740を介してコンピュータ702に接続することができる、スピーカ(図示せず)やプリンタ746などのコンポーネントを含むこともできる。
コンピュータ702は、リモートコンピューティングデバイス748など1つまたは複数のリモートコンピュータに対する論理接続を使用してネットワーク環境中で動作することが可能である。実施例として、リモートコンピューティングデバイス748は、パーソナルコンピュータ、ポータブルコンピュータ、サーバ、ルータ、ネットワークコンピュータ、ピアデバイス、または他の共通ネットワークノードなどとすることができる。リモートコンピューティングデバイス748は、コンピュータ702に対して本明細書中で説明しているエレメントおよび機能の多くまたはすべてを含むことができるポータブルコンピュータとして示されている。
コンピュータ702とリモートコンピュータ748の間の論理接続は、LAN(local area networkローカルエリアネットワーク)750および一般的なWAN(wide area networkワイドエリアネットワーク)752として示されている。かかるネットワーキング環境は、オフィス、企業規模のコンピュータネットワーク、イントラネットおよびインターネットにおいて、一般的なものである。
LANネットワーキング環境中で実装されるときには、コンピュータ702は、ネットワークインターフェースまたはアダプタ754を介してローカルネットワーク750に接続される。WANネットワーキング環境中で実装されるときには、コンピュータ702は、一般的にワイドネットワーク752上で通信を確立するためのモデム756または他の手段を含んでいる。モデム756は、コンピュータ702にとって内蔵または外付けとすることが可能であるが、入出力インターフェース740または他の適切なメカニズムを介してシステムバス708に接続することができる。図に示すこれらのネットワーク接続は、例示的であり、コンピュータ702と748の間で1つ(または複数)の通信リンクを確立する他の手段を使用することもできることを理解されたい。
コンピューティング環境700を用いて示される環境などのネットワーク環境においては、コンピュータ702に関連して示されるプログラムモジュール、またはその一部分は、リモートメモリストレージデバイスに記憶することができる。実施例として、リモートアプリケーションプログラム758は、リモートコンピュータ748のメモリデバイス上に存在する。例示の目的で、アプリケーションプログラム、およびこのオペレーティングシステムなどの他の実行可能プログラムコンポーネントは、本明細書中では個別のブロックとして示されているが、かかるプログラムおよびコンポーネントは、様々な時刻にコンピューティングデバイス702の異なるストレージコンポーネントの形で存在し、このコンピュータの1つ(または複数)のデータプロセッサによって実行されることが理解されよう。
様々なモジュールおよび技法は、本明細書中では、1台または複数台のコンピュータまたは他のデバイスによって実行される、プログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般的に、プログラムモジュールは、特定のタスクを実施し、特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含んでいる。一般的に、このプログラムモジュールの機能は、様々な実施形態において必要に応じて結合し、または分散することができる。
これらのモジュールおよび技法の実装形態は、コンピュータ読取り可能媒体の何らかの形態で記憶し、それらの形態間で伝送することができる。コンピュータ読取り可能媒体は、コンピュータによってアクセスすることができる使用可能な任意の媒体とすることができる。実施例として、限定するものではないが、コンピュータ読取り可能媒体は、「コンピュータストレージ媒体」および「通信媒体」を含むことができる。
「コンピュータストレージ媒体」は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、他のデータなどの情報のストレージのための任意の方法または技術で実装される揮発性媒体および不揮発性媒体、着脱可能媒体および着脱不能媒体を含んでいる。コンピュータストレージ媒体は、それだけには限定されないが、RAM、ROM、EEPROM、フラッシュメモリまたは他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)または他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージまたは他の磁気ストレージデバイス、あるいは所望の情報を記憶するために使用することができ、コンピュータによってアクセスすることができる他の任意の媒体を含んでいる。
「通信媒体」は、一般的に搬送波や他の搬送メカニズムなどの被変調データ信号の形のコンピュータ読取り可能命令、データ構造、プログラムモジュールまたは他のデータを実施する。通信媒体は、任意の情報配信媒体も含んでいる。この用語「被変調データ信号」は、その1つまたは複数の特性がその信号中の情報を符号化するようにして設定または変更された信号を意味する。実施例として、限定するものではないが、通信媒体は、有線ネットワークや直接配線接続などの有線媒体と、音響、RF、赤外線、他の無線媒体などの無線媒体とを含んでいる。以上のうちの任意の組合せもまた、コンピュータ読取り可能媒体の範囲内に含められる。
以上の説明では、構造的機能および/または方法動作に特有の言語が使用されているが、添付の特許請求の範囲で定義される本発明は、説明している特定の機能または動作だけに限定されないことを理解されたい。そうではなくて、これらの特定の機能および動作は、本発明を実装する例示の形態として開示されている。
データストアに対して動的に生成されるオペレーションの検証を実施することができる環境の一実施例を示すブロック図である。 データストアに対して動的に生成されるオペレーションを検証するためのプロセスの一実施例を示すフローチャートである。 データ完全性マネージャの一実施例をさらに詳細に示す図である。 予想外の操作が、動的に生成されるオペレーションによって実行されなかったことを検証するためのプロセスの一実施例を示すフローチャートである。 予想外の操作が、動的に生成されるオペレーションによって実行されなかったことを検証するためのプロセスの別の実施例を示すフローチャートである。 これらの動的に生成されるオペレーションがアクセスすべきでない、データストアのうちの一部分が、これらの動的に生成されるオペレーションによってアクセスされないことを検証するためのプロセスの一実施例を示すフローチャートである。 本明細書中で説明されるこれらの技法を実装するために使用することができる一般的なコンピュータ環境を示す図である。
符号の説明
102 データ完全性マネージャ
104 オペレーションジェネレータ
106 データストア
108 アプリケーション
110 制限のないコネクション
112 制限されたコネクション
302 スナップショットモジュール
304 パーミッションモジュール
306 ロックセットモジュール

Claims (16)

  1. コンピュータに、データストアに対して動的に生成される1つまたは複数のオペレーションが正しいかどうかを決定させるための複数の命令を記録した1つまたは複数のコンピュータ読取り可能記憶媒体であって、前記1つまたは複数のオペレーションは、前記データストアに対するアクセス要求が実行されるために、前記アクセス要求に基づいて、前記データストアに理解できるフォーマットに生成されており、前記1つまたは複数のコンピュータ読取り可能記憶媒体は、コンピュータに
    前記データストアに対してパーミッションを設定して、前記データストアの制限のない部分だけに対するアクセスを可能にするステップであって、前記データストアの前記制限のない部分により、前記データストアに対する前記アクセス要求に基づいて動的に生成される前記1つまたは複数のオペレーションがアクセスすべきでない、前記データストアの第1のアクセス不能部分が前記1つまたは複数のオペレーションによるアクセス対象から除外される、ステップと、
    前記制限のない部分に含まれている、前記アクセス要求に基づいて動的に生成される前記1つまたは複数のオペレーションがアクセスすべきでない前記データストアの第2のアクセス不能部分に対するアクセスをロックするテップであって、前記データストアの第2のアクセス不能部分に対するアクセスをロックする前記ステップは、前記1つまたは複数のオペレーションが前記第2のアクセス不能部分にアクセスすることを防止することである、ステップと、
    前記1つまたは複数のオペレーションが行われた後に、予想外の任意の変更が前記制限のない部分に対して行われたかどうかを検査するステップであって、前記予想外の変更は、前記アクセス要求を実行するために変更されるべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正を含む、ステップと
    を実行させるための複数の命令を記録しており、前記1つまたは複数のコンピュータ読取り可能記憶媒体は、さらにコンピュータに、
    前記1つまたは複数のオペレーションが行われる前に、前記制限のない部分の第1のスナップショットをキャプチャーするステップであって、前記第1のスナップショットをキャプチャーされる部分は、前記アクセス要求を実行するために変更されるべきでない部分を含む、ステップと、
    前記1つまたは複数のオペレーションが行われた後に、前記第1のスナップショットをキャプチャーされた前記部分の第2のスナップショットをキャプチャーするステップと、
    前記第1のスナップショットと前記第2のスナップショットを比較することにより、予想外の任意の変更が前記制限のない部分に対して行われたかどうかを検査するステップと、
    前記第1のスナップショットと前記第2のスナップショットが同じでない場合に、予想外の変更が前記制限のない部分に対して行われたことを決定するステップと
    を実行させるための複数の命令を記録したことを特徴とする1つまたは複数のコンピュータ読取り可能記憶媒体。
  2. コンピュータに、
    前記第1のスナップショットと前記第2のスナップショットが同じである場合には、予想外の変更が前記制限のない部分に対して行われなかったと決定するステップをさらに実行させるための複数の命令を記録したことを特徴とする請求項1に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  3. 前記データストアは、1つまたは複数の行および列を有する1つまたは複数のテーブルを含むデータベースであり、前記第1のスナップショットおよび前記第2のスナップショットをキャプチャーされる前記部分は、前記データベース中の1つまたは複数のテーブルの1つまたは複数の行からのデータであることを特徴とする請求項に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  4. 前記テーブルには、行についてのバージョン値の列を含み、行のデータが変更されるたびに、前記行についてのバージョン値が前記データベースによって変更され、前記第1のスナップショットをキャプチャーする前記ステップは、前記1つまたは複数のオペレーションが行われる前に、前記1つまたは複数の行からのバージョン値の列をコピーすることであり、前記第2のスナップショットをキャプチャーする前記ステップは、前記1つまたは複数のオペレーションが行われた後に、前記1つまたは複数の行からのバージョン値の前記列をコピーすることであることを特徴とする請求項に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  5. 前記テーブルには、行についてのバージョン値の列を含み、行のデータが変更されるたびに、前記行についてのバージョン値が前記データベースによって変更され、前記テーブルには、行についての一次キー値の列をさらに含み、前記一次キー値は行を一意に識別することができ、前記第1のスナップショットをキャプチャーする前記ステップは、前記1つまたは複数のオペレーションが行われる前に、前記1つまたは複数の行からのバージョン値の列および一次キー値の列をコピーすることであり、前記第2のスナップショットをキャプチャーする前記ステップは、前記1つまたは複数のオペレーションが行われた後に、前記1つまたは複数の行からのバージョン値の前記列および一次キー値の前記列をコピーすることであることを特徴とする請求項に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  6. 予想外の任意の変更が前記制限のない部分に対して行われたかどうかを検査する前記ステップは、
    前記データストアの前記制限のない部分に対して行われた任意の変更についての通知が前記データストアによって送られることを要求し、
    前記データストアから受け取った任意の通知を解析して、前記アクセス要求を実行するために行われているべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正が行われたかどうかを決定する
    ことであることを特徴とする請求項1に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  7. 前記データストアの第2のアクセス不能部分に対するアクセスをロックする前記ステップは、アクセスをロックされる前記第2のアクセス不能部分におけるデータに対して1つまたは複数のアップデートトランザクションを開始し、前記1つまたは複数のオペレーションが行われた後まで、前記1つまたは複数のアップデートトランザクションを完了しないことを特徴とする請求項に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  8. 前記アクセス要求は、前記データストアからデータを検索する要求を含むことを特徴とする請求項に記載の1つまたは複数のコンピュータ読取り可能記憶媒体。
  9. データストアに対して動的に生成されるオペレーションが正しいかどうかを決定する方法であって、前記オペレーションは、前記データストアに対するアクセス要求が実行されるために、前記アクセス要求に基づいて、前記データストアに理解できるフォーマットに生成されており、前記方法は、
    前記データストアにアクセスするために、セットアップアクションを実行するステップを備え、前記セットアップアクションは前記アクセス要求に少なくとも部分的に基づいており前記セットアップアクションを実行するステップは、
    前記データストアの一部分についてパーミッションを設定して、前記データストアの制限された部分および前記データストアの制限のない部分を確立し、前記データストアの前記制限のない部分だけに対するアクセスを可能にするステップ
    前記制限のない部分の一部に対するアクセスをロックするステップ
    予想外の任意の変更が、前記制限のない部分に対して行われたかどうかについての後続の検証を可能にするステップ
    を含み、前記予想外の変更は、前記アクセス要求を実行するために変更されるべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正を含み、前記制限のない部分に対して行われたかどうかについての後続の検証を可能にする前記ステップは、前記動的に生成されるオペレーションが行われる前に、前記制限のない部分の第1のスナップショットをキャプチャーするステップを含み、前記第1のスナップショットをキャプチャーされる部分は、前記アクセス要求を実行するために変更されるべきでない部分を含み、
    前記方法は、さらに
    前記動的に生成されるオペレーションが行われた後に、予想外の操作が、前記動的に生成されるオペレーションによって行われなかったことを検証するステップを備え、前記検証するステップは、
    前記動的に生成されるオペレーションが行われた後に、前記第1のスナップショットをキャプチャーされた前記部分の第2のスナップショットをキャプチャーするステップと、
    前記第1のスナップショットと前記第2のスナップショットとを比較するステップと、
    前記第1のスナップショットと前記第2のスナップショットが同じでない場合に、予想外の操作が、前記動的に生成されるオペレーションによって行われたと決定するステップと、
    前記第1のスナップショットと前記第2のスナップショットが同じである場合には、予想外の操作が、前記動的に生成されるオペレーションによって行われなかったと決定するステップと
    を含み
    前記方法は、さらに
    予想外の操作が、前記動的に生成されるオペレーションによって行われなかった場合に、前記動的に生成されるオペレーションは、前記アクセス要求について正しいと決定するステップと、
    予想外の任意の操作が前記動的に生成されるオペレーションによって行われた場合には、前記動的に生成されるオペレーションは、前記アクセス要求について正しくないと決定するステップと
    備えることを特徴とする方法。
  10. 前記データストアは、1つまたは複数の行および列を有する1つまたは複数のテーブルを含むデータベースであり、前記第1のスナップショットおよび前記第2のスナップショットをキャプチャーされる前記部分は、前記データベース中の1つまたは複数のテーブルの1つまたは複数の行からのデータであることを特徴とする請求項に記載の方法。
  11. 前記検証するステップは、さらに
    前記データストアの前記制限のない部分に対して行われた任意の変更についての通知が前記データストアによって送られることを要求するステップと、
    前記データストアから受け取った任意の通知を解析して、前記アクセス要求を実行するために行われているべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正が行われたかどうかを決定するステップと
    を含むことを特徴とする請求項に記載の方法。
  12. 前記制限のない部分の一部に対するアクセスをロックする前記ステップは、
    アクセスをロックされる前記制限のない部分の前記一部におけるデータに対して1つまたは複数のアップデートトランザクションを開始するが、前記動的に生成されるオペレーションが行われた後まで、前記1つまたは複数のアップデートトランザクションを完了しないステップを含むことを特徴とする請求項に記載の方法。
  13. 前記アクセス要求が前記データストアからのデータを検索する要求である場合にのみ、前記制限のない部分の一部に対するアクセスをロックする前記ステップをさらに含むことを特徴とする請求項に記載の方法。
  14. データストアに対して動的に生成されるオペレーションが正しいかどうかを決定するためのシステムであって、前記オペレーションは、前記データストアに対するアクセス要求が実行されるために、前記アクセス要求に基づいて、前記データストアに理解できるフォーマットに生成されており、前記システムは、
    データストアにアクセスするために、セットアップアクションを実行する手段を備え前記セットアップアクションは前記アクセス要求に少なくとも部分的に基づいており、前記セットアップアクションを実行する手段は、
    前記データストアの一部分についてパーミッションを設定して、前記データストアの制限された部分および前記データストアの制限のない部分を確立し、前記データストアの制限のない部分だけに対するアクセスを可能にする手段
    前記制限のない部分の一部に対するアクセスをロックする手段
    予想外の任意の変更が、前記制限のない部分に対して行われたかどうかについての後続の検証を可能にする手段
    含み、前記予想外の変更は、前記アクセス要求を実行するために変更されるべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正を含み、予想外の任意の変更が、前記制限のない部分に対して行われたかどうかについての後続の検証を可能にする前記手段は、前記動的に生成されるオペレーションが行われる前に、前記制限のない部分の第1のスナップショットをキャプチャーする手段を含み、前記第1のスナップショットをキャプチャーされる前記部分は、前記アクセス要求を実行するために変更されるべきでない部分を含み、
    前記システムは、さらに
    前記動的に生成されるオペレーションが行われた後に、予想外の操作が、前記動的に生成されるオペレーションによって行われなかったことを検証する手段を備え、前記検証する手段は、
    前記動的に生成されるオペレーションが行われた後に、前記第1のスナップショットをキャプチャーされた前記部分の第2のスナップショットをキャプチャーする手段と、
    前記第1のスナップショットと前記第2のスナップショットとを比較する手段と、
    前記第1のスナップショットと前記第2のスナップショットが同じでない場合に、予想外の操作が、前記動的に生成されるオペレーションによって行われたと決定する手段と、
    前記第1のスナップショットと前記第2のスナップショットが同じである場合には、予想外の操作が、前記動的に生成されるオペレーションによって行われなかったと決定する手段と
    を含み、
    前記システムは、さらに
    予想外の操作が、前記動的に生成されるオペレーションによって行われなかった場合に、前記動的に生成されるオペレーションは、前記アクセス要求について正しいと決定する手段と、
    予想外の任意の操作が前記動的に生成されるオペレーションによって行われた場合には、前記動的に生成されるオペレーションは、前記アクセス要求について正しくないと決定する手段と
    を備えることを特徴とするシステム。
  15. 前記検証する手段は、さらに
    前記データストアの前記制限のない部分に対して行われた任意の変更についての通知が前記データストアによって送られることを要求する手段と、
    前記データストアから受け取った任意の通知を解析して、前記アクセス要求を実行するために行われているべきでない、前記制限のない部分におけるデータの任意の追加、削除、または修正が行われたかどうかを決定する手段と
    含むことを特徴とする請求項14に記載のシステム。
  16. 前記制限のない部分の一部に対するアクセスをロックする前記手段は、
    アクセスをロックされる前記データストアの前記一部におけるデータに対して1つまたは複数のアップデートトランザクションを開始するが、前記動的に生成されるオペレーションが行われた後まで、前記1つまたは複数のアップデートトランザクションを完了しない手段を備えることを特徴とする請求項14に記載のシステム。
JP2005221803A 2004-08-31 2005-07-29 データストアに対して動的に生成されるオペレーションを検証すること Expired - Fee Related JP4890811B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/931,075 US7457832B2 (en) 2004-08-31 2004-08-31 Verifying dynamically generated operations on a data store
US10/931,075 2004-08-31

Publications (3)

Publication Number Publication Date
JP2006072986A JP2006072986A (ja) 2006-03-16
JP2006072986A5 JP2006072986A5 (ja) 2008-09-11
JP4890811B2 true JP4890811B2 (ja) 2012-03-07

Family

ID=35355001

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005221803A Expired - Fee Related JP4890811B2 (ja) 2004-08-31 2005-07-29 データストアに対して動的に生成されるオペレーションを検証すること

Country Status (5)

Country Link
US (1) US7457832B2 (ja)
EP (1) EP1669904B1 (ja)
JP (1) JP4890811B2 (ja)
KR (1) KR101143121B1 (ja)
CN (1) CN1744061B (ja)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7299239B1 (en) * 2002-12-02 2007-11-20 Oracle International Corporation Methods for partitioning an object
JP2007264814A (ja) * 2006-03-27 2007-10-11 Fujitsu Ltd レプリケーションデータ作成プログラム、レプリケーションデータ反映プログラムおよびデータベース装置
US8065666B2 (en) 2006-06-02 2011-11-22 Rockwell Automation Technologies, Inc. Change management methodologies for industrial automation and information systems
GB0624577D0 (en) * 2006-12-08 2007-01-17 Skype Ltd Communication Systems
US7945946B2 (en) * 2007-02-06 2011-05-17 Red Hat, Inc. Attribute level access control
US8209294B2 (en) * 2007-06-15 2012-06-26 Oracle International Corporation Dynamic creation of database partitions
US8356014B2 (en) * 2007-06-15 2013-01-15 Oracle International Corporation Referring to partitions with for (values) clause
US8140493B2 (en) * 2007-06-15 2012-03-20 Oracle International Corporation Changing metadata without invalidating cursors
US8135688B2 (en) * 2007-06-15 2012-03-13 Oracle International Corporation Partition/table allocation on demand
US8676808B2 (en) 2009-07-09 2014-03-18 Dillon Software Services, Llc Data store interface that facilitates distribution of application functionality across a multi-tier client-server architecture
US8510344B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Optimistically consistent arbitrary data blob transactions
US8856089B1 (en) * 2010-08-27 2014-10-07 Amazon Technologies, Inc. Sub-containment concurrency for hierarchical data containers
US8510304B1 (en) 2010-08-27 2013-08-13 Amazon Technologies, Inc. Transactionally consistent indexing for data blobs
US8402061B1 (en) 2010-08-27 2013-03-19 Amazon Technologies, Inc. Tiered middleware framework for data storage
US8688666B1 (en) 2010-08-27 2014-04-01 Amazon Technologies, Inc. Multi-blob consistency for atomic data transactions
US8621161B1 (en) 2010-09-23 2013-12-31 Amazon Technologies, Inc. Moving data between data stores
US20120209823A1 (en) * 2011-02-14 2012-08-16 Nokia Corporation Method and system for managing database access contention
US8700567B2 (en) * 2011-02-28 2014-04-15 Hitachi, Ltd. Information apparatus
US10409835B2 (en) * 2014-11-28 2019-09-10 Microsoft Technology Licensing, Llc Efficient data manipulation support
CN107291710B (zh) * 2016-03-30 2020-07-03 杭州海康威视数字技术股份有限公司 一种用于分布式数据库系统的更新数据的方法及装置
KR101697301B1 (ko) * 2016-08-29 2017-01-17 주식회사 넷앤드 Dbms에 대한 보안을 강화하는 방법 및 시스템
CN110362534B (zh) * 2019-07-22 2023-05-12 深信服科技股份有限公司 一种快照验证方法、系统及电子设备和存储介质
US11860835B1 (en) * 2020-06-29 2024-01-02 Amazon Technologies, Inc. Efficient drop column requests in a non-relational data store

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5404499A (en) * 1990-01-24 1995-04-04 Logical Services Incorporated Semi-automatic program execution error detection
JPH06342396A (ja) 1990-07-02 1994-12-13 Internatl Business Mach Corp <Ibm> 共有データのアクセスを直列化する方法及び装置
US5408642A (en) * 1991-05-24 1995-04-18 Symantec Corporation Method for recovery of a computer program infected by a computer virus
US5193180A (en) * 1991-06-21 1993-03-09 Pure Software Inc. System for modifying relocatable object code files to monitor accesses to dynamically allocated memory
JPH07191888A (ja) 1991-12-31 1995-07-28 Internatl Business Mach Corp <Ibm> データベース・マネージャにアクセスするデータベース・アクセス要求の処理方法及びシステム
US5440723A (en) 1993-01-19 1995-08-08 International Business Machines Corporation Automatic immune system for computers and computer networks
US5440735A (en) * 1993-10-08 1995-08-08 International Business Machines Corporation Simplified relational data base snapshot copying
US5537540A (en) * 1994-09-30 1996-07-16 Compaq Computer Corporation Transparent, secure computer virus detection method and apparatus
US5668999A (en) * 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5717911A (en) * 1995-01-23 1998-02-10 Tandem Computers, Inc. Relational database system and method with high availability compliation of SQL programs
US5812828A (en) * 1995-06-01 1998-09-22 Centerline Software, Inc. Function simulation
US5907709A (en) * 1996-02-08 1999-05-25 Inprise Corporation Development system with methods for detecting invalid use and management of resources and memory at runtime
US6760903B1 (en) * 1996-08-27 2004-07-06 Compuware Corporation Coordinated application monitoring in a distributed computing environment
US6721941B1 (en) * 1996-08-27 2004-04-13 Compuware Corporation Collection of timing and coverage data through a debugging interface
US5930795A (en) 1997-01-21 1999-07-27 International Business Machines Corporation Supporting dynamic tables in SQL query compilers
US5987557A (en) 1997-06-19 1999-11-16 Sun Microsystems, Inc. Method and apparatus for implementing hardware protection domains in a system with no memory management unit (MMU)
JP3685651B2 (ja) * 1999-06-04 2005-08-24 沖電気工業株式会社 相互接続装置及びアクティブQoSマッピング方法
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
US7111307B1 (en) * 1999-11-23 2006-09-19 Microsoft Corporation Method and system for monitoring and verifying software drivers using system resources including memory allocation and access
US7032110B1 (en) * 2000-06-30 2006-04-18 Landesk Software Limited PKI-based client/server authentication
US6725240B1 (en) 2000-08-08 2004-04-20 International Business Machines Corporation Apparatus and method for protecting against data tampering in an audit subsystem
US6981245B1 (en) * 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
US6704745B2 (en) * 2000-12-11 2004-03-09 Microsoft Corporation Transforming data between first organization in a data store and hierarchical organization in a dataset
WO2002065285A1 (en) 2001-02-14 2002-08-22 Invicta Networks, Inc. Systems and methods for creating a code inspection system
US7058663B2 (en) * 2001-03-13 2006-06-06 Koninklijke Philips Electronics, N.V. Automatic data update
EP1410140B1 (en) * 2001-03-28 2017-02-15 NDS Limited Digital rights management system and method
WO2003003642A2 (en) * 2001-06-29 2003-01-09 Ve Enterprises Llc System and method for editing web pages in a client/server architecture
US7035859B2 (en) * 2001-08-08 2006-04-25 International Business Machines Corporation Method and system for intra-table referential integrity for relational database systems
US7194475B2 (en) * 2001-10-30 2007-03-20 International Business Machines Corporation Method, system, and program for performing an impact analysis of program statements in at least one source code file
US7249133B2 (en) * 2002-02-19 2007-07-24 Sun Microsystems, Inc. Method and apparatus for a real time XML reporter
US7571318B2 (en) 2002-03-27 2009-08-04 Advanced Micro Devices, Inc. Method and apparatus for improved security in a data processor
JP2003303125A (ja) * 2002-04-10 2003-10-24 Ricoh Co Ltd データ管理装置、データ管理プログラム及び記録媒体
US7752197B2 (en) 2002-10-03 2010-07-06 International Business Machines Corporation SQL query construction using durable query components
US7437261B2 (en) * 2003-02-14 2008-10-14 Advantest Corporation Method and apparatus for testing integrated circuits
JP4292882B2 (ja) * 2003-03-18 2009-07-08 株式会社日立製作所 複数のスナップショット維持方法及びサーバ装置及びストレージ装置
US7305393B2 (en) * 2003-04-29 2007-12-04 International Business Machines Corporation Mounted filesystem integrity checking and salvage
US7171413B2 (en) * 2003-08-29 2007-01-30 International Business Machines Corporation Two phase intermediate query security using access control
US7457817B2 (en) * 2003-12-12 2008-11-25 Oracle International Corporation Versioning in an integration platform
WO2006089092A2 (en) * 2005-02-16 2006-08-24 Ziyad Dahbour Hierarchal data management

Also Published As

Publication number Publication date
EP1669904A1 (en) 2006-06-14
JP2006072986A (ja) 2006-03-16
CN1744061A (zh) 2006-03-08
US20060047658A1 (en) 2006-03-02
KR101143121B1 (ko) 2012-05-24
EP1669904B1 (en) 2017-09-27
CN1744061B (zh) 2010-10-06
US7457832B2 (en) 2008-11-25
KR20060050223A (ko) 2006-05-19

Similar Documents

Publication Publication Date Title
JP4890811B2 (ja) データストアに対して動的に生成されるオペレーションを検証すること
KR101099199B1 (ko) 데이터베이스 복구 중의 스냅샷 질의를 위한 시스템 및 방법
US7386609B2 (en) Method, system, and program for managing devices in a network
US8655859B2 (en) Concurrency control for extraction, transform, load processes
CN106415538B (zh) 使用共享文件访问-rest接口的文件服务
JP5735104B2 (ja) ファイルシステムのチェックポイント
US7933881B2 (en) Concurrency control within an enterprise resource planning system
TW202008196A (zh) 基於中心化結算與區塊鏈存證的交易方法及系統
US7636946B2 (en) Unwanted file modification and transactions
US7895172B2 (en) System and method for writing data dependent upon multiple reads in a distributed database
JP3512439B2 (ja) チェックイン・チェックアウトモデルにおける施錠方式
US11720545B2 (en) Optimization of chaincode statements
JP2006072986A5 (ja)
US10943027B2 (en) Determination and visualization of effective mask expressions
KR20060116140A (ko) 저장 플랫폼에서의 로킹 및 아이솔레이션을 위한 시스템 및방법
US11720607B2 (en) System for lightweight objects
US11163888B2 (en) Detecting second-order security vulnerabilities via modelling information flow through persistent storage
CN109246077B (zh) 分布式并发交易校验方法、装置和计算机存储介质
CN116303510A (zh) 资源转移事务处理方法、装置、计算机设备和存储介质
US8635331B2 (en) Distributed workflow framework
Qiu et al. A deep study of the effects and fixes of server-side request races in web applications
Krogh MySQL Concurrency [M]
US7487187B2 (en) Method and apparatus for two stage transaction handling
CN112783969B (zh) 请求处理方法及装置、计算机系统和可读存储介质
US20060136392A1 (en) Database modification history

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080729

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080729

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110311

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20110613

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20110616

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110707

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111215

R150 Certificate of patent or registration of utility model

Ref document number: 4890811

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees