SQL Anywhere Studioと.NET

NET と .NET Framework

Microsoft .NET は、XML ベースの Web サービス・プラットフォームです。. NET を利用することで、オペレーティング・システム、デバイス、プログラミング言語に関係なく、インターネット・プロトコルを使用してアプリケーション間で通信を行い、データを共有することができます。

.NET Framework は、.NET 環境用のプログラミング・モデルで、分散環境でのアプリケーション開発を簡単に行うことができるように設計されています。

この.NET Framework には、2 つの主要コンポーネントがあります。

  • Common Language Runtime 管理・保護されたアプリケーション実行環境。ランタイム実行時にコードを管理し、メモリやスレッドの管理などのタスクを処理します。C#、Visual Basic、C++ などのサポートされている .NET 言語を、仮想マシンで実行します。
  • Common Class Library サポートされているすべての言語で利用可能な共通クラスのライブラリ。.NET の登場以前は、言語ごとに異なる Windows API を使用していました。

Microsoft が提供する .NET Compact Frameworkは、スマート・デバイス用 .NET Framework のサブセットで、XML Web サービス用の管理コードをスマート・デバイスに提供するものです。また、これを使用することで、セキュアでダウンロード可能なアプリケーションを、PDA や携帯電話などの Microsoft がサポートするデバイスで実行することができます。

SQL Anywhere Studio などのデータ管理ソフトウェアの場合、「.NET をサポートしている」とは、次の 2 つを意味します。

  • .NET Framework とプログラミング
  • XML のサポート。特に、XML フォーマットでデータを利用し、関数を Web サービスとして利用することができる

SQL Anywhere Studio と .NET の統合のポイント

SQL Anywhere Studio はさまざまな形で .NET をサポートしています。

  • Adaptive Server Anywhere は、Adaptive Server Anywhere Data Provider を利用することで、ADO.NET インタフェースをサポートしています。また、標準の .NET OLE DB と ODBC Data Provider もサポートしています。
  • Adaptive Server Anywhere は、XML をエクスポートし、XML データを文字列としてデータベースに格納することができます。
  • Mobile Link は、サポートしている .NET 言語を使用して同期スクリプトを記述できます。

以下の項では、これらの機能の詳細について、また.NET サポート拡張機能およびオプションについて、説明します。

ADO.NET と .NET データプロバイダ

ADO.NET は、ODBC、DAO、RDO、OLE DB、ADO と同様のデータ・アクセス API で、Microsoft が提供してしている、Microsoft .NET Framework 用の推奨データ・アクセス・コンポーネントです。.NET データ・プロバイダは、データ・ストアへのアクセスを提供し、アプリケーションがデータ・ソースのデータの取り出しと変更を実行できるようにするためのツールです。 ADO.NET では、データを .NET アプリケーションで使用しやすくするために、データ・プロバイダ (管理プロバイダとも呼ぶ) を使用します。

Microsoft が提供する .NET Framework には、SQL Server .NET Data Provider と OLE DB .NET Data Provider の 2 つのデータ・プロバイダが含まれています。SQL Server .NET Data Provider は、それを使用してMicrosoft SQL Server バージョン 7.0 以降のデータベースへの接続ができます。また、OLE DB .NET Data Provider は、それを使用することで一般的なリレーショナル・データベース・システム (Adaptive Server Anywhere など) や、OLE DB プロバイダを利用可能なデータ・ソースにアクセスすることができます。また、.NET Framework では、Microsoft の ODBC .NET Data Provider もサポートしています。

Adaptive Server Anywhere バージョン 7.x および 8.x 付属の OLE DB ドライバは、.NET Framework 付属の OLE DB と ODBC のデータ・プロバイダを使用を通じて ADO.NET をサポートしています。これを使用することで、サポートしている .NET 言語で標準の ADO.NET インタフェースを使用して、Windows CE を除くすべての Windows プラットフォーム用アプリケーションを開発できます。一方Windows CE 用 Compact .NET Framework は、Microsoft データベースのドライバだけをサポートしています。

Adaptive Server Anywhere を OLE DB .NET Data Provider とともに使用する例については、http://www.ianywhere.com/developer/technotes/sas_adonet.html の「Connecting to a SQL Anywhere Database Using ADO.NET」を参照してください。

また、SQL Anywhere Studio 8.0.1 以降では、Adaptive Server Anywhere ..NET データプロバイダ も使用可能です。このプロバイダは、Windows CE を含むすべての Windows プラットフォームで、Adaptive Server Anywhere へのネイティブ・アクセスを提供しています。

ADO.NET プログラミング・インタフェース

各管理プロバイダは、以下のクラスを実装しています。これらのクラスは、データベースの操作と管理用の標準オブジェクトです。

  • Connection データ・ソースに接続
  • Command データ・ソースに対してコマンド (SQL 文またはストアド・プロシージャ) を実行
  • DataReader コマンドの結果を、前方専用、読み取り専用で戻す
  • DataAdapter DataSet にデータを格納し、データ更新を処理
  • Parameters パラメータを Command オブジェクトに引き渡す
  • Transaction COMMIT および ROLLBACK の機能を提供
  • Error、Exception エラーか警告メッセージ、またはその両方の処理と収集を実行

DataSet は、ADO.NET において重要なオブジェクトの 1 つです。データベースから取り出したデータ用の非接続型ストアで、DataTable、DataRow、DataColumn、DataRelation の各オブジェクトのコレクションでもあります。また、DataSet は、Microsoft が ADO.NET アーキテクチャの一部として提供する汎用オブジェクトで、プロバイダの DataAdapter を使用して、DataSet にデータを格納し、DataSet 内のデータを変更、DataAdapter を使用して変更をデータベースに適用できます。管理プロバイダやデータベース・ドライバから独立していて、XML 内のデータまたはスキーマ情報の読み取りと書き込みに使用できます。

DataSet からデータベースを更新する場合には、注意が必要です。DataSet で行った変更は、接続されていないときに実行されます。つまり、データベース内の対応ローに対してアプリケーションがロックを設定していないため、DataSet の変更をデータベースに適用するときには発生する可能性のある不一致を解決するように、アプリケーションを設計してください。

Mobile Link は、レプリケーション環境で不一致を解決するためのソリューションを提供しています。Mobile Link は、中央の統合データベースと多数のリモート・データベースの間で双方向の同期を行うための、セッションベースのリレーショナル・データベース同期システムですが、一部のデータを選択して同期させることができます。また、異なるリモート・データベース内のデータが変更された場合に不一致を解決できる機能を備えています。

Adaptive Server Anywhere .NET データプロバイダ

Adaptive Server Anywhere .NET データプロバイダ は、SQL Anywhere Studio 用のネイティブ .NET データ・プロバイダです。サポートしている他のプロバイダとは異なり、Adaptive Server Anywhere と直接通信を行うため、ブリッジ・テクノロジは必要ありません。また、Windows CE でも実行できます。

.NET データ・プロバイダは、iAnywhere.Data.AsaClient ネームスペースを実装しており、C# や Visual Basic .NET など、.NET がサポートする言語でプログラムを記述し、Adaptive Server Anywhere のデータにアクセスできます。

Adaptive Server Anywhere .NET データプロバイダ は日本語版SQL Anywhere Studio 8.0.2より同梱されています。

Adaptive Server Anywhere .NET データプロバイダ の主要機能のいくつかを以下に示します。

  • アプリケーションの柔軟性 Adaptive Server Anywhere .NET データプロバイダ は、DataReader や DataAdapter をはじめとするすべてのクラスをサポートしています。
  • .NET 言語のサポート Adaptive Server Anywhere .NET データプロバイダ は、C# や Visual Basic .NET など、.NET がサポートするすべての言語で使用できます。
  • 接続プーリングのサポート Adaptive Server Anywhere .NET データプロバイダ は、接続プーリングをサポートしています。これにより、アプリケーションはデータベースへの接続を繰り返し作成し直すのではなく、既存の接続を再利用できるため、パフォーマンスが向上する可能性が上がります。
  • 優れたパフォーマンス Adaptive Server Anywhere .NET データプロバイダ は直接的な実装で、OLE DB や ODBC のブリッジを必要としません。そのため、.NET OLE DB Data Provider よりも高速です。
  • Microsoft Windows の広範なサポート Adaptive Server Anywhere .NET データプロバイダ は、Windows と Windows CE の両方のプラットフォームをサポートしています。現時点で Microsoft は、Windows CE 上のデータにアクセスするための OLE DB または ODBC の管理プロバイダを提供していないため、Adaptive Server Anywhere .NET データプロバイダ は、.NET Compact Framework を Windows CE .NET で使用して Adaptive Server Anywhere にアクセスする唯一の方法です。

XML とリレーショナル・データベース

XML (拡張マークアップ言語) は、構造化データをテキスト・フォーマットで表すための記述言語です。XML は、HTML のような単純なマークアップ言語として設計されていますが、SGML のような柔軟性も備えているため、特定のデータ・フォーマットはなく、各アプリケーションに合わせてタグ名や構造を再定義できます。XML ドキュメントでは、文書型定義 (DTD) または XML スキーマを使用して、XML ファイルで使用される構造、要素、属性を定義しています。

.NET は、XML を汎用データ交換フォーマットとして使用し、XML ベースの SOAP (シンプル・オブジェクト・アクセス・プロトコル) がプロセス間通信メカニズムとして使用されています。

XML とリレーショナル・データベースの間のデータ交換方法は複数存在します。

  • XML をリレーショナル・データベースにインポート
  • XML をリレーショナル・データベースからエクスポート
  • XML ドキュメントをデータベースに格納
  • XML クエリを実行
  • XML ビューを作成
  • Web サービスを使用

SQL Anywhere Studio 8.0.2より、XML のエクスポートと、XML ドキュメントのAdaptive Server Anywhere データベースへの文字列としての格納をサポートしています。また、サード・パーティ製ツールを使用するか、あるいはアプリケーションを自分で設計すれば、XML を Adaptive Server Anywhere データベースにインポートできます。XML サポートの拡張、XML クエリ、XML ビュー、Web サービスのサポートについては、今後の iAnywhere Solutions からの発表をお待ちください。

リレーショナル・データベースへの XML のインポート

XML をリレーショナル・データベースにインポートするには、アプリケーションで XML を解析し、テーブルの挿入、削除、更新を行う SQL 文を生成する方法があります。これを実行するためのパーサおよびツールは複数あります。

ADO.NET DataSet オブジェクトを使用して、データかスキーマのいずれか、またはその両方を XML ドキュメントから DataSet に読み込むことができます。ReadXml メソッドは、スキーマとデータの両方が含まれる XML ドキュメントからのデータを DataSet に格納し、ReadXmlSchema メソッドは、XML ドキュメントからスキーマだけを読み取ります。XML ドキュメント内のデータを DataSet に格納した後は、DataSet の変更をテーブルに適用して更新できます。

これらのメソッドを、Adaptive Server Anywhere 8.0.2で使用し、XML ドキュメントからデータベースにデータをインポートできます。

リレーショナル・データベースからの XML のエクスポート

SQL Anywhere Studio バージョン 8 では、XML を Interactive SQL からエクスポートできます。OUTPUT 文では、生成する XML ファイルにクエリ結果を出力する XML フォーマットを指定でき、生成される XML ファイルは、UTF-8 でコード化され、DTD が埋め込まれています。XML ファイルでは、バイナリ・データは 2 桁の 16 進数値文字列に変換され、バイナリ値が文字データ (CDATA) ブロックにコード化されます。

Adaptive Server Anywhere 8.0.2を XML としてエクスポートするには、ADO.NET DataSet オブジェクトを使用するか、アプリケーション内で結果セットをまとめて XML ドキュメントに変換します。

また、ADO.NET DataSet オブジェクトを使用して、DataSet の内容を XML ドキュメントに保存することができます。DataSet にデータを格納した後 (データベースに対してクエリを実行した後など) は、データセットのスキーマのみ、またはスキーマとデータの両方を XML ファイルに保存できます。WriteXml メソッドは、スキーマとデータの両方を XML ファイルに保存し、WriteXMLSchema メソッドは、スキーマだけを XML ファイルに保存します。

また、SQL クエリを実行し、その結果をアプリケーションで XML にまとめることもできます。

リレーショナル・データベースへの XML の格納

Adaptive Server Anywhere の8.0.1では、LONG VARCHAR データ型を使用して、XML ドキュメントを Adaptive Server Anywhere データベースに格納することができます。XML ドキュメントは、文字列として格納されます。

XML に対するクエリ

XML をデータベースに格納した後は、それに対してクエリを実行できます。現時点では、クエリを実行するには、XML Query プロセッサをアプリケーションで使用します。

予定:Adaptive Server Anywhere での .NET サポート

本書の「予定」の項で説明する機能の多くは現在開発中で、SQL Anywhere Studio の次期メジャー・リリースで実現される予定です。SQL Anywhere Studio の今後のバージョンでは、Adaptive Server Anywhere の XML サポートを拡張する以下の機能が追加される予定です。

リレーショナル・データを XML としてエクスポート

Adaptive Server Anywhere から XML を直接エクスポートする方法は 2 つあります。1 つは、Microsoft が採用しているような、結果を XML ドキュメントとして取り出すことができる FOR XML 句を SELECT 文で使用する方法です。この句には、XML 出力のフォーマットを指定できるモードを設定します。

  • RAW 結果セット内の各ローを XML のロー要素として表示
  • AUTO ネストされた XML 要素としてクエリ結果を戻す
  • EXPLICIT このモードでは、ネストについての情報を指定するクエリを記述し、結果の XML の形式を指定できます。

もう 1 つは、SQL/XML を使用する方法です。ANSI および ISO 委員会は、SQL を XML と合わせて使用できるように、XML を SQL 言語に機能的に統合する SQL/XML を検討しています。リレーショナル・データベースで SQL/XML のサポートを提供することで、XML データをデータベース内で処理することができます。

XML のインポート

今後の Adaptive Server Anywhere では、Microsoft が採用しているような、XML ドキュメントをローセットに分割する OpenXML プロシージャを実装する可能性があります。

OpenXML は、任意の SQL クエリの FROM 句で呼び出します。XML ドキュメントは引数として引き渡されますが、この引数には、評価結果が XML 文字列になる任意の式を指定できます。ローセットのスキーマを指定するには、引数を追加します。XPATH は、XML ドキュメント内の一致するノード・セットなど、XML に対するクエリを実行できるクエリ・プロセッサで、1 つまたは複数の XPATH クエリを使用して、XML ドキュメントから抽出するノードの指定、およびローセット内にそれらのノードを格納する方法の指定を行います。そして、クエリの条件を満たす要素が XML ドキュメントから抽出され、結果セットとして戻されたら、この結果を操作します。

XML の格納

将来的には、XML のデータ型の追加など、データベースに格納された XML オブジェクトを操作可能にする拡張が行われる予定です。これにより、XML データをより効率的に格納することができます。

XML に対するクエリ

Adaptive Server Anywhere の今後のバージョンには、XML のデータ型およびそのクエリ機能が追加される予定です。このクエリ機能は、XPath 言語か、World Wide Web Consortium (W3C) が現在開発している XQuery 言語のいずれかがベースになります。

XML ビューの使用

ビューは、データベースにオブジェクトとして格納される SELECT 文です。ビューを使用して、1 つまたは複数のテーブル内のローまたはカラムのサブセットを取得できます。リレーショナル・スキーマが何らかの方法で XML スキーマにマッピングされているとすると、これは、XML ビューと見なすことができますが、データベース内に格納されている SELECT 文がテーブル・ビューであるのと同様です。

SQL を使用してリレーショナル・ビューに対するクエリを実行できるのと同様に、XML クエリ言語を使用して XML ビューに対するクエリを実行できます。また、XML データ型を利用して XML クエリをサポートする代わりに、この方法を使用することもできます。

Web サービス

Web サービスはプログラム可能なアプリケーション・ロジックで、HTTP、SOAP (シンプル・オブジェクト・アクセス・プロトコル)、XML などの Web プロトコルを使用して、インターネット経由で別の場所にある他のアプリケーションからアクセスできます。プラットフォームや言語に依存しないように設計されています。

WSDL (Webサービス記述言語) は、Web サービスおよびそのアクセス方法を定義するために使用される、XML ベースの言語です。また、UDDI (Universal Description Discovery and Integration) は、Web サービス用のレジストリで、検索エンジンに似ていますが、Web サービスに使用します。Web サービスには、WSDL と UDDI のいずれも必須ではありませんが、これらを使用することで、Web サービスの検索 (UDDI を使用) および使用 (WSDL 情報を使用) が簡単になります。

Adaptive Server Anywhere のストアド・プロシージャを Web サービスとして使用

Web サービスを Adaptive Server Anywhere でサポートする方法として、HTTP サーバおよび SOAP 要求マネージャをデータベース・サーバに統合するということがあります。これにより、HTTP を使用して SOAP 要求を Adaptive Server Anywhere に送信し、Adaptive Server Anywhere から応答を HTTP クライアントに戻すことができます。

データベース・サーバに SOAP 要求マネージャがある場合は、データベース内のストアド・プロシージャを Web サービスとして公開することができます。SOAP をサポートすることで、WSDL を Web サービス用に自動生成することも可能になります。

他にも、HTTP を使用して利用可能なサービスがあります。たとえば、データベース・クエリ・サービスなどが考えられます。データベース・クエリ・サービスでは、クエリ要求を送信し、それに対して Adaptive Server Anywhere がクエリ結果を戻します。このデータベース・クエリ・サービスでは、XML (SOAP エンベロープなし) を使用して、HTTP による単純で高速なデータベース・アクセスが可能です。

また、今後のリリースでは、Web サービスをストアド・プロシージャとして呼び出すことも可能になる予定です。

Mobile Link の .NET サポート

Mobile Link は、統合データベースと呼ばれるメイン・データベースと、多数のリモート・データベースの間で双方向の同期を行うための、セッションベースの同期システムです。

Mobile Link の同期スクリプト

同期スクリプトを使用して、Mobile Link の同期サーバの動作を制御します。一般的に、同期スクリプトは、統合データベースの SQL 言語のストアド・プロシージャとして、または Java で記述します。

SQL Anywhere Studio 8.0.2 では、サポートしている .NET プログラミング言語を使用して Mobile Link 同期スクリプトを記述することもできます。これにより、.NET Common Language Runtime のすべての機能を利用できます。また、C#、Visual Basic .NET、あるいは他のサポートしている .NET 言語でスクリプトを記述することができます。

また、.NET の同期ロジックを使用することで、複数のデータベース・プラットフォームにまたがって処理を実行でき、RDBMS 間での移植性を実現します。Mobile Link を使用して、アプリケーション・サーバ、Web サーバ、ファイルのデータにアクセスしできる他、iAnywhere のクラスを同期ロジックで使用し、統合データベースの同期接続でデータにアクセスできます。たとえば、サーバの authenticate_user イベントで、外部サーバを使用してユーザの ID およびパスワードを確認する .NET スクリプトを記述できます。

また、スクリプトを使用して、統合データベースにアップロードされたデータがコミットされる前に、そのデータにアクセスして操作することもできます。たとえば、コミットされる前に変更を拒否し、他のリモートにその変更が適用されないようにすることが可能です。外部プログラムを使用して統合データベース上のデータにアクセスする場合は、コミットされるまでは更新の表示または取り消しはできません。

予定:Mobile Link での .NET サポート

現時点でデータは、ODBC データ・ソース経由で、スクリプトのロジックがプロシージャに格納されている統合データベースに送信されます。今後の拡張により、Java または .NET のランタイム環境を通してデータを直接受け渡すことで、より簡単にアプリケーション・サーバに接続し、テーブルのメタデータを処理できるようになる予定です。

Ultra Light の .NET サポート

Ultra Light は、Adaptive Server Anywhere の代替として使用される軽量データベースで、Palm や Windows CE プラットフォームなどの小型デバイスでリレーショナル・データベース・アプリケーションを構築・導入するために使用します。

SQL Anywhere Studio 8.0.2 からは、Ultra Light Component Suite が含まれました。これは、AppForge (Visual Basic 6 開発環境)、eMbedded Visual Basic、Java の各アプリケーション開発環境専用に構築されたコンポーネントを提供しています。

まとめ

SQL Anywhere Studio は、現時点でもさまざまな .NET サポートを提供してますが、今後のリリースではさらにサポートを拡張していきます。

ADO.NET インタフェースは、OLE DB および ODBC を利用することで完全にサポートしている上、Windows CE で実行するアプリケーションを含む .NET アプリケーションへのネイティブ・アクセスはAdaptive Server Anywhere の .NET データプロバイダ で提供しています。Adaptive Server Anywhere データベースで XML のインポート、エクスポート、格納も可能です。

Mobile Link は、サポートしている .NET 言語で同期スクリプトを記述することで、.NET Common Runtime Languages の全機能を利用できます。

本書の「予定」の項で説明する機能の多くは現在開発中で、SQL Anywhere Studio の次期メジャー・リリースで実現される予定ですが、この製品のリリース日はまだ発表されていません。.NET サポートの拡張については、iAnywhere Solutionsの発表をお待ちください。

法的注意

Copyright(C) 2000-2003 iAnywhere Solutions,Inc. All rights reserved. Adaptive Server、iAnywhere、iAnywhere Solutions、SQL Anywhereは、米国法人iAnywhere Solutions, Inc.または米国法人Sybase,Inc.とその系列会社の米国または日本における登録商標または商標です。その他の商標はすべて各社に帰属します。Mobile Linkの技術には、Certicom,Inc.より供給を受けたコンポーネントが含まれています。これらのコンポーネントは特許によって保護されています。本書に記載された情報、助言、推奨、ソフトウェア、文書、データ、サービス、ロゴ、商標、図版、テキスト、写真、およびその他の資料(これらすべてを”資料”と総称する)は、iAnywhere Solutions,Inc.とその供給元に帰属し、著作権や商標の法律および国際条約によって保護されています。また、これらの資料はいずれも、iAnywhere Solutions, Inc.とその供給元の知的所有権の対象となるものであり、iAnywhere Soluttions, Inc.とその供給元がこれらの権利のすべてを保有するものとします。資料のいかなる部分も、iAnywhere Solutionsの知的所有権のライセンスを付与したり、既存のライセンス契約に修正を加えることを認めるものではないものとします。資料は無保証で提供されるものであり、いかなる保証も行われません。iAnywhere Solutionsは、資料に関するすべての陳述と保証を明示的に拒否します。これには、商業性、特定の目的への整合性、非侵害性の黙示的な保証を無制限に含みます。iAnywhere Solutionsは、資料自体の、または資料が依拠していると思われる内容、結果、正確性、適時性、完全性に関して、いかなる理由であろうと保証や陳述を行いません。iAnywhere Solutionsは、資料が途切れていないこと、誤りがないこと、いかなる欠陥も修正されていることに関して保証や陳述を行いません。ここでは、「iAnywhere Solutions」とは、iAnywhere Solutions, Inc.とSybase, Inc.またはその部門、子会社、継承者、および親会社と、その従業員、パートナー、社長、代理人、および代表者と、さらに資料を提供した第三者の情報元や提供者を表します。* 本書は、米国iAnywhere Solutions, Inc.が作成・テストしたものを日本語に翻訳したものです。

1023454