SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

japan.internet.com翻訳記事

ADO.NETでのデータ取得を高速化するためのヒント

DataSetを使うことによるパフォーマンス低下の計測

  • X ポスト
  • このエントリーをはてなブックマークに追加

Web開発者はスピードを大切にします。高速化したいのにADO.NETを使った最適なデータ取得の方法が分からないという方には、本稿の内容が参考になるでしょう。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 本稿では、ADO.NETを使ってデータにアクセスするいくつかの方法のベンチマーク評価を行います。このベンチマークの結果が、お使いのアプリケーションでデータアクセスを行う方法の参考になれば幸いです。本稿のねらいはADO.NETの説明ではありません。ADO.NETについては、役に立つ参考資料がMicrosoftから出ていますので、そちらを参照してください(PRC1または新しいヘルプファイルにあります)。ただし、ADO.NETの構造のごく簡単な紹介だけはしておきましょう。

ADO.NETの基本事項

 ADO.NETは、データへのアクセスと操作を行う新しいアーキテクチャを提供します。VB6の頃のADOとはまったく別物です。ADO.NETにより、データアクセスおよびデータ操作の新しい方法が利用できます。

 ADO.NETのコアとなる機能を提供するのがManaged ProviderDataSetです。

1. Managed Provider

 Managed Providerには、次の4つのクラスがあります。

  • Connection
  • Command
  • DataReader
  • DataAdapter

 ConnectionCommandの両クラスは、旧バージョンのADOにあるものとほぼ同じです。Connectionクラスから派生したオブジェクトは、データソースへの接続に使用されます。また、Commandクラスの派生オブジェクトは、ストアドプロシージャの実行とパラメータ情報の設定、それにデータの修正と引渡しに使用されます。

 DataReaderクラスは、データソースに対する読み取り専用で前方参照のみのアクセスを提供します。このオブジェクトについては、後でベンチマーク評価を行います。Managed Providerの最後のコンポーネントはDataAdapterクラスです。DataAdapterは、もう1つのコアコンポーネントであるDataSetがManaged Providerに接続するためのチャネルの役割を果たします。

2. DataSet

 DataSetクラスは、メモリ内のDataTable、列、行、制約、およびリレーションで構成されています。また、DataSetクラスは、テーブル間のリレーションの設定、データの取得と更新を行うためのインターフェイスを提供します。DataSetが持つ最大のメリットの1つは、XmlDataDocumentとの同期がとれることでしょう。DataSetXmlDataDocumentに対する階層的なアクセスをリアルタイムに行うことができます。

 現時点では、Managed Providerには2つのバージョンがあります。それぞれのバージョンは.NET Framework内の異なる名前空間によって表現されています。1つ目のSystem.Data.SQLClientは、SQL Server 7.0以降へのアクセス機能を提供します。2つ目のManaged ProviderはSystem.Data.OleDbという名前空間の内部にあり、どんなOleDbソースのアクセスにも使用できます。SQLClient Providerは、Microsoft SQL Serverのワイヤフォーマット(TDS)を利用しています。そのため、OleDbプロバイダを介してデータにアクセスするよりも優れたパフォーマンスが得られるはずです。後述のパフォーマンステストでは、両方の種類のManaged Providerについて測定を行います。

 ADO.NETの一般的な構造を図で示すと、次のようになります。

 この図では、データソースからデータを取得する2とおりの経路が示されています。1つ目は、Managed ProviderコンポーネントのDataReaderを介する経路です。2つ目はDataSetを通る経路で、Managed ProviderのDataAdapterクラスを介してデータソースにアクセスします。

 この堅牢なDataSetオブジェクトは、テーブル間のリレーション確立のような機能を実行するときに利用できます。DataReaderは、読み取り専用で前方参照のみのデータ取得を行います。本稿のテストでは、このDataReaderではなくDataSetを使う際のパフォーマンス低下を計測してみたいと思います。

次のページ
テスト内容

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
japan.internet.com翻訳記事連載記事一覧

もっと読む

この記事の著者

japan.internet.com(ジャパンインターネットコム)

japan.internet.com は、1999年9月にオープンした、日本初のネットビジネス専門ニュースサイト。月間2億以上のページビューを誇る米国 Jupitermedia Corporation (Nasdaq: JUPM) のニュースサイト internet.comEarthWeb.com からの最新記事を日本語に翻訳して掲載するとともに、日本独自のネットビジネス関連記事やレポートを配信。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

Craig Davis(Craig Davis)

11年の開発キャリアを持ち、そのうち6年はWeb開発に従事。現在はMicron社の重要技術部門のWeb開発マネージャとして勤務。電子メールの宛先はcraig@chilibean.com

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/277 2006/04/11 19:08

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング