SHOEISHA iD

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

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

SQLも使えるオブジェクトデータベース「CACHE'」を知る(AD)

第11回 CACHÉによるSQLの利用

SQLも使えるオブジェクトデータベース「CACHE'」を知る 11

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

Cache'は、リレーショナルデータベースシステム(RDBMS)ではありませんが、Caché SQLを使用することで、一般的なRDBMSと同様にSQL文でデータベースにアクセスできます。さらにODBCやJDBCもサポートしているため、これらの規格に則ったさまざまな製品、フレームワーク、ミドルウェア、開発環境との連携が可能です。

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

はじめに

 Cachéは、リレーショナルデータベースシステムではありませんが、Caché SQLを使用することにより、一般的なリレーショナルデータベースシステムと同じようにSQL文でデータベースにアクセスが可能です。さらにリレーショナルデータベースシステムにアクセスするための標準規格であるODBC、JDBCをサポートしていますので、これらの規格に則ったさまざまな製品、フレームワーク、ミドルウェア、開発環境との連携が可能です。

Caché SQLの機能概要

統一データアーキテクチャ

 「Caché SQL」は、Cachéのコアアーキテクチャである統一データアーキテクチャの1つのコンポーネントとして提供される機能です。Cachéのメタデータ定義(スキーマ)は、クラス定義と呼ばれますが、これは、オブジェクト指向の考え方に則った形で、オブジェクトの雛形を定義するもので、一般的なオブジェクト指向言語でクラスを定義することとほぼ同等です。それらとの大きな違いは、Cachéのクラスでは、そのクラス定義の属性として永続性を持たせることができる点で、これがCachéがデータベースとなりえる所以となります。

 1つのクラス定義は、他クラスへの参照、リレーションシップ、コレクションなどの関連を持つことができ、結果として、複雑なオブジェクトツリー構造を表現できます。これらの構造は、最終的には、下位の多次元データエンジンを通して、多次元配列データとして、Cachéデータベースに格納、参照されます。

 そして、その構造の各層をスライスすることにより、複数の2次元のテーブルとして表現可能になります。

 従って、1つのクラス定義(およびそれに関連するクラス定義)から構造の複雑さに応じて、複数(1-n)のテーブル定義が生成されて、各テーブル定義に対してSQLでのアクセスが可能になります(統一データアーキテクチャについては、連載第1回で解説)。

クラス定義の方法

 クラス定義は、Cachéクラス定義言語に基づいて定義する方法と、SQL標準で定義されているDDL言語を使って定義する2種類の方法が用意されています。

 いずれの方法を使っても、統一データアーキテクチャを通して、クラス定義とテーブル定義の2つが自動生成されるようになっています。またDDL言語は、各ベンダー固有のシンタックスもサポートしており、例えばOracleで定義されたDDL文をCachéにインポートして、クラス定義、テーブル定義を生成することも可能です。

SQLアクセス方法

 SQLを使ってCachéのデータベースにアクセスする方法には、以下の方法があります。

  • 管理ポータルのデータ管理SQLから直接SQL文を実行する
  • Caché ObjectScriptのプログラムの中に埋め込みSQL文として記述し、実行する
  • Caché ObjectScriptまたは、Caché Basicのプログラムの中で、ResultSetオブジェクトを生成し、そのコマンドとして動的SQL文を実行
  • ODBCに対応したツールからSQL文を発行する
  • Javaのプログラムの中で、JDBCを使用してSQL文を発行する

その他

インデックス

 Cachéでも、他のリレーショナルデータベースシステムと同様にクエリのスピードを向上するためにインデックスを利用できます。 インデックスの種類として、一般的なインデックスのほかに複雑な検索条件の実行の高速化に寄与するビットマップインデックス、集計の高速化を実現できるビットスライスインデックスが用意されています。

全文検索機能

 文字列の検索に関して、一般的な完全一致や前方一致だけでなく、中間一致も高速に検索可能な全文検索機能も用意されています。

トリガー

 一般的なリレーショナルデータベースシステムと同様にトリガーを定義することができます。

ストアドプロシジャ

 連続するSQL文を実行したり、複雑な処理をひとまとめにしてストアドプロシジャとして登録し、ODBC、JDBC等から実行し、結果を返すことが可能です。

ビュー

 一般的なリレーショナルデータベースシステムと同様にビューを定義することができます。

セキュリティ

 ユーザー単位、またはその上位概念であるロール単位にテーブルアクセスの制御が可能です。

 また、行単位セキュリティという機能があり、行単位にセキュリティ設定が可能です。

ストリームデータ(バイナリデータ、長い文字列データ)対応

 いわゆるBLOBやCLOBと呼ばれるデータをSQLからアクセスすることが可能です。

拡張機能

 Caché SQLには、一般的なリレーショナルデータベースにはないユニークな機能拡張があります。

暗黙JOIN

 明示的にJOINを指定して複雑なSQL文を記述する代わりに、特別な->演算子を使って関連テーブルからの値を取得する簡便な方法を提供します。

前方一致演算子

 文字列の前方一致検索を行う拡張演算子%STARTSWITHが用意されています。この演算子を使用すると、インデックスを利用した高速検索を行うことができます。

ユーザー定義関数

 Cachéのクラスメソッド(静的メソッド)をSQL文からユーザー定義関数として実行することができます。

次のページ
操作方法

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
SQLも使えるオブジェクトデータベース「CACHE'」を知る連載記事一覧

もっと読む

この記事の著者

インターシステムズジャパン(株) 佐藤 比呂志(サトウ ヒロシ)

テクニカルコンサルティングおよび教育サービス担当。昼夜、高速オブジェクトデータベースCACHE' と迅速なインテグレーションプラットフォームENSEMBLEの普及に奔走。ITmediaにて「隠れた財産ブログ」掲載中。

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

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2272 2008/09/05 11:03

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング