SHOEISHA iD

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

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

SQL Anywhereの魅力を探る(AD)

SQL Anywhereのインストールと概要
(SQL Anywhere 11対応版)

SQL Anywhereの魅力を探る 2 改訂版

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

 SQL Anywhereは、組込み・中小規模ビジネス・モバイル分野などで特に普及している、省リソースで高速な処理を実現するリレーショナルデータベースです。この連載では、その魅力を紹介していきます。第2回は、SQL Anywhereのインストール方法および、GUIツールやアーキテクチャの概要について説明します(本稿は既存の記事を最新版に合わせてバージョンアップしたものです)。

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

 本稿は、森脇氏が執筆した『使える! SQL Anywhere』(翔泳社刊)のP.18~31を抜粋し修正した記事に、森山氏が最新版の内容を一部加筆して再構成されています。

2.1 インストール

 今回はまず、SQL Anywhereのインストール方法を説明する。インストール自体は簡単なので、ここでは、わかりにくい部分のみ取り上げる。

 今回は評価目的のため、アイエニウェア社のWebページから無償版のDeveloper Editionをダウンロードして利用する。ダウンロードに日本語マニュアルもダウンロードしておくと良い。

 それ以外の用途でも無償で利用できるライセンスが用意されているので、参考として以下に記す。各エディションには、あらかじめユーザ登録(無償)が必要だ。詳細は同Webページを参照していただきたい。

無償で利用できるEditionの種類
Edition 用途および有効日数
Developer Edition 開発・テストに限り無償で無期限使用可能。実運用環境への適用には別途ライセンスの購入が必要です。
Educational Edition 高等教育以上の教育機関での教育用途、非商用リサーチ、学問のための使用に限り、無償で無期限使用可能。学校内システムでの利用にはライセンスの購入が必要です。
Web Edition ブラウザベースのクライアントアプリケーションへの適用に限り無制限(ただし、WebサーバとDBサーバを同一筐体で使用する等、若干の制限あります)。

2.1.1 Windows版のインストール

 「setup.exe」を実行すると、以下の画面が表示され、[SQL Anywhere 11のインストール]ボタンを押すとインストールが開始される。

 登録キーの入力画面が表示されたら、Developer Edition登録キーを入力する。

 インストール途中で以下の画面が表示され、セットアップタイプを選択することができる。

 [すべて]を選択した状態で[次へ]ボタンを押すと、すべての機能がインストールされる。

 また、必要な機能をインストールしたい場合は[カスタム]を選択し[次へ]ボタンを押すと、以下の画面が表示され機能を選択できる。

図2.1 : カスタム セットアップ
図2.1 : カスタム セットアップ

 この画面で表示されている、選択可能な機能の意味は次のとおりである。

表2.1 : カスタム セットアップで選択可能な機能
分類 機能 説明
データベース SQL Anywhere Windows用の全機能搭載リレーショナル・データベース
SQL Anywhere for Windows Mobile Windows Mobile用の全機能搭載リレーショナル・データベース
Ultra Light 小型デバイス用のコンパクトなリレーショナル・データベース
同期とメッセージング Mobile Link 他社データベース間とのデータ同期を可能にするコンポーネント
QAnywhere Mobile Linkをインフラとしたメッセージ通信するコンポーネント
SQL Remote SQL Anywhere間のデータベース同期コンポーネント
管理ツール SQL AnywhereとMobile Linkサーバの監視用ツール
サンプル 各種機能のサンプル
高可用性 SQL Anywhereデータベースのミラーリングを行うコンポーネント
ライセンス情報の入力

 有償製品版のインストールではライセンス情報を入力する必要がある。ライセンス数を入力し、ライセンスのタイプを選択する。なお、Developer Editionをインストールする場合は、この画面は表示されない。

 

図2.2 : ライセンス情報の入力
図2.2 : ライセンス情報の入力

2.1.2 インストールされる環境変数

 インストールされる環境変数として、以下のものがある。

SQLANY11

 SQL Anywhereがインストールされたディレクトリを示す。本稿でも、インストールされたディレクトリを%SQLANY11%で示す。デフォルトでは、「C:\Program Files\SQL Anywhere 11」になる。

SQLANYSAMP11

 サンプルプログラムなどで利用される。%SQLANYSAMP11%で示すディレクトリは、デフォルトでは、「C:\Documents and Settings\All Users\Documents\SQL Anywhere 11\Samples」になる。

2.2 GUIツール

2.2.1 Sybase Central

 Sybase Centralは、GUIによるデータベース管理ツールで、データベースの作成やテーブルの作成など、SQL Anywhere管理のあらゆる操作が行える(図2.3)。また、テーブルのデータを表示して修正することもできるので、簡単なデータ操作も可能だ(図2.4)。

図2.3 : Sybase Centralのユーティリティのメニュー。データベースの作成やバックアップなどのメニューなどが並んでいる([表示]⇒[フォルダ]と[表示]⇒[サーバ・メッセージと実行されたSQL]を選択した状態)
図2.3 : Sybase Centralのユーティリティのメニュー。データベースの作成やバックアップなどのメニューなどが並んでいる([表示]⇒[フォルダ]と[表示]⇒[サーバ・メッセージと実行されたSQL]を選択した状態)
図2.4 : Sybase Centralでのスキーマ表示。テーブルのスキーマを表示させたところ。カラムの追加や修正などをデータベース起動中に行える。また、データタブでデータ一覧を表示可能。
図2.4 : Sybase Centralでのスキーマ表示。テーブルのスキーマを表示させたところ。カラムの追加や修正などをデータベース起動中に行える。また、データタブでデータ一覧を表示可能。

 各オブジェクトの操作は、右ペインのタブや左ペインのオブジェクトを右クリックすると表示されるポップアップメニューから行う。なお、左ペインでテーブルを選択してからコピーすると、Sybase Central内でコピーできる。また、メモ帳などにペーストすると、テーブルスキーマのSQL文がテキスト表示される。

 [サーバ・メッセージと実行されたSQL]ウィンドウの赤枠のタブ(図2.5)を選択すると、Sybase CentralからGUIで操作した内容をSQLとしても確認することもできる。実行されたSQL文を確認したり、別途スクリプトを用意する時などにも参考になる。

図2.5 : SQLを表示した例
図2.5 : SQLを表示した例

2.2.2 Interactive SQL

 Interactive SQLは、SQL Anywhereに接続してSQL文を実行するためのツールだ。GUIとコマンドラインの両方で利用できる。GUIで利用すると、SELECT文などのSQLが返す結果セットはテーブル形式で表示される。また、SQL文の実行時間やオプティマイザが選択したクエリプランも表示できるので、SQL文のチューニングに役立つ。

図2.6 : Interactive SQL。テーブルのデータを一覧表示させたところ
図2.6 : Interactive SQL。テーブルのデータを一覧表示させたところ

 Interactive SQLの実行コマンドであるdbisql.exeに対して-noguiオプションを付けて実行すると、対話的にSQLを実行できる。次に実行例を示す。

$ dbisql -c "dsn=SQL Anywhere 11 Demo"  -nogui
(DBA)> select top 5 id, surname, givenname from customers order by id;
id          surname              givenname
-----------------------------------------------------
101         Devlin               Michaels
102         Reiser               Beth
103         Niedringhaus         Erin
104         Mason                Meghan
105         McCarthy             Laura
(5 ロー)
実行時間 : 0.312 秒
(DBA)> exit
$ 

 dbisqlコマンドの引数にSQL文指定すると、そのSQL文が実行される。

$ dbisql -c "dsn=SQL Anywhere 11 Demo" "select * from customers"

SQL文のバッチ処理

 dbisqlコマンドの引数にファイル名を指定した場合は、そのファイル(コマンドファイル)に書かれたSQL 文が実行される。

$ dbisql -c "dsn=SQL Anywhere 11 Demo" a_command_file.sql

 このとき、コマンドファイル内の変数をパラメータ化して、コマンドファイルを汎用化したい場合もあるだろう。Interactive SQLのREADコマンドを用いると、コマンドファイルにパラメータを渡すことができるので、バッチスクリプトを書く際に便利だ。たとえば、次のようなコマンドファイル「select_product.sql」を用意する。

PARAMETERS MIN_QUANTITY;
SELECT * from products
 WHERE quantity > {MIN_QUANTITY};

 MIN_QUANTITYがパラメータだ。100という数字を渡すには、次のようなコマンドを実行すればよい。

$ dbisql -c "dsn=SQL Anywhere 11 Demo" read c:\select_product.sql 100

2.2.3 高速ランチャ機能

 Sybase CentralとInteractive SQLには、起動を速くする高速ランチャ機能がついている。1度目の起動を終了してもバックグラウンドプロセスが残り、2度目以降の起動が高速になる。この機能はデフォルトでオンになっているので、バックグラウンドプロセスのメモリ使用量などが気になる場合は、[ツール]-[オプション]から、高速ランチャ機能を無効にするとよい。

2.3 SQL Anywhereのアーキテクチャ

2.3.1 データベースのファイル構成

 データベースを構成するファイルには、(1)データベースファイル、(2)トランザクションログファイル、(3)テンポラリファイルの3種類がある(図2.7)。

図2.7 : データベースのファイル構成
図2.7 : データベースのファイル構成

データベースファイル(*.db)

 データベースファイルには、スキーマ、データ、インデックスなど、すべてのデータベース情報が記録される。デフォルトではデータベースファイルは1つだけだが、テーブルやインデックス単位でデータベースファイルを増やせる(上限は合計12ファイル)。次のような場合に複数のデータベースファイルを持つとよい。

1. ディスクI/Oの分散によるパフォーマンスの向上

 複数のディスク(HDD)があるとき、複数のデータベースファイルを用意して別々のディスクに配置すれば、データベースファイルへのディスクI/O(入出力)が分散されるので、パフォーマンスが向上する。

2. OSによるファイルサイズの制限

 通常、データベースファイルのサイズは、データが増えるに従って自動的に拡張されるので、日々監視するような必要はない。しかし、データ量が増えてデータベースファイルのサイズが大きくなり、OSのファイルサイズ制限にひっかかりそうなときは、データベースファイルを複数に分けてその制限を回避するとよい。

 なお、保存するデータ量があらかじめ把握できる場合は、データベースファイル作成時にファイルサイズを確保しておくことで、ファイルのフラグメンテーションの発生を抑制できる。

 SQL Anywhereのデータベースファイルやトランザクションログファイルの形式はOSによらず共通なので、ファイルをコピーするだけでデータベースを移行できる。たとえば、Windows CE上のデータベースファイルをWindowsにコピーしたり、Windows上のデータベースファイルをLinuxにコピーしたりすれば、移行先でそのデータベースを利用できる。

 それぞれのデータベースファイルは、1:1に対応するDBSPACE名で論理的に区別される。

データベース内のオブジェクトの種類
 データベースのオブジェクトには次のようなものがあり、これらすべてがデータベースファイルに保存される。
  • テーブル
  • 主キー、外部キー
  • インデックス
  • ビュー
  • ストアドプロシージャ、トリガ
  • ユーザ、グループ
  • Javaオブジェクト

トランザクションログファイル(.log)

 トランザクションログとは、データがコミット(COMMIT)されるごとに記録されるログのことで、トランザクションログファイルに保存される。デフォルトでは、1つのトランザクションログファイルがある。設定により、トランザクションログなしで運用したり、(1つ増やして)2つのトランザクションログファイルを利用したりすることも可能だ。

 2つのトランザクションログファイルを利用したものを、トランザクションログミラー機能と呼ぶ。2つのファイルに対して同じログを同時に書き込み、冗長化することで耐障害性を高めている(トランザクションログミラーファイルの拡張子は.mlg)。

 一方、トランザクションログファイルを使わずにデータベースを運用することも可能だが、パフォーマンスや耐障害性の点から、トランザクションログファイルの利用を推奨する。

テンポラリファイル(.tmp)

 テンポラリファイルは自動的に作成・削除され、SQLによるデータのソートや結合処理でキャッシュが足りないときなどに利用される。テンポラリファイルが作成される場所は次の環境変数で指定できる。

  1. SATMP
  2. TMP
  3. TMPDIR
  4. TEMP

 これらの環境変数を順番に調べ、最初に定義されている場所が選ばれる。いずれも定義されていなければ、データベースサーバのカレントディレクトリが選ばれる。

 データベースやトランザクションログファイルと別のディスクにテンポラリファイルを配置すれば、ディスクI/Oが分散され、パフォーマンスの向上が期待できる。

2.3.2 データベースサーバの構成

 データベースサーバは、1つ以上のデータベースを管理できる(上限は255)。データベースサーバは1つのプロセスであり、クライアントからの接続処理、SQL文の解析や最適化、ファイルアクセスなどのすべての処理をマルチスレッドで実行する。マルチCPUに対応しているので、CPUの数を増やすことでパフォーマンスを向上させることができる(図2.8)。

図2.8 : データベースサーバの構成
図2.8 : データベースサーバの構成
SQL Anywhereのプロセスモデル
 SQL Anywhereのプロセスモデルは、1プロセス/マルチスレッドだが、さらにファイバと呼ばれる仕組みが利用されている。ファイバとは、カーネルスレッド内につくられたユーザレベルでの「軽量スレッド」である。ファイバ間でのコンテキストスイッチは、カーネルスレッドよりも軽いのが特徴で、SQL Anywhereの「軽さ」がこのような点からもみてとれる。

 データベースサーバには、次の2種類がある。

  1. ネットワークサーバ
  2. パーソナルサーバ

 ネットワークサーバは全機能を搭載している。一方、ネットワーク接続など一部の機能を制限したのがパーソナルサーバで、次のような制限がある。

  • 同一マシンからの接続のみを受け付ける(ネットワーク接続不可)
  • 同時接続は10台まで
  • 1CPUのみ利用可能(マルチCPU機能には対応しない)

 このような制限があるため、パーソナルサーバはソフトウェア組み込み時や開発時などで使用されることが多い。

SQL AnywhereでのCPUの数え方
 SQL AnywhereでのCPUの数え方はいわゆるソケット単位であり、コア単位ではない。たとえば、デュアル・コアCPUやクワッド・コアCPUであっても1CPUである。

2.3.3 キャッシュ割り当て

 SQL Anywhereのプロセスは1つなので、考慮すべきキャッシュ領域も1つだけだ。デフォルトでは、SQL Anywhereのキャッシュサイズは自動的に増減する。データベース処理にもっとキャッシュが必要であれば増やし、必要なければ減らす。上限下限のサイズを指定することもできるので、その範囲内でサイズが調節される。なお、デフォルトの上限サイズは、Windowsでは256MBである。大量のメモリを使用可能なときは、データベースサーバの起動時に上限サイズを大きく設定するとよい。自動調整機能を使わずに、キャッシュサイズを固定することも可能だ。設定方法などについては、次回の「2.5 動的キャッシュ割り当て」で解説する。

次回

 次回は、データベースの作成・起動の方法や、ユーザ作成の方法について紹介する。社内評価や開発を目的としたSQL Anywhereの利用であれば、無償のDeveloper Editionを利用できるので、ぜひ一度、実際に試していただきたい。

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

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

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4484 2009/10/15 14:00

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング