第8章 MaxDB の概要

目次

8.1. MaxDB の歴史
8.2. ライセンスとサポート
8.3. MaxDB の基本概念
8.4. MaxDB と MySQL の相違点
8.5. MaxDB と MySQL の相互運用性
8.6. MaxDB 関連リンク
8.7. MaxDB の予約語

MaxDB は、エンタープライズレベルのデータベースです。以前に SAP DB と呼ばれていたデータベース管理システムが、MaxDB という新しい名前になりました。

8.1. MaxDB の歴史

SAP DB の歴史は 1980 年代初めにさかのぼります。その当時、SAP DB は Adabas(商用製品の 1 つ)として開発されました。以来、このデータベースは数回にわたって名称が変更されています。ドイツのウォルドルフに本社を構える SAP AGがデータベースシステムの開発を引き継いだ時点では、SAP DB という名称でした。

SAP では、堅牢な SAP アプリケーションのすべてに対応する単一のストレージシステムとして機能するように、データベースシステムを進化させました。それが R/3 です。SAP DB は、サードパーティ製データベースシステム(Oracle、Microsoft SQL Server、IBM の DB2 など)に代わる選択肢として提供されました。2000 年 10 月、SAP AG は GNU GPL ライセンス(see 付録?H. GNU General Public License)に基づき SAP DB を公開し、オープンソースソフトウェアとしました。2003 年 10 月、SAP AG の顧客のうち 2,000 社以上は、自社のメインデータベースシステムとして SAP DB を使用していました。また、他の 2,000 社以上は、自社のメインデータベースとは別の独立したデータベースシステムとして SAP DBを使用し、APO/LiveCache ソリューションの一部としていました。

2003 年 5 月、MySQL AB と SAP AG の間で技術パートナーシップが形成されました。このパートナーシップにより、MySQL AB は SAP DB の開発をさらに推進し、名称を変更することができます。また、GNU GPL(see 付録?H. GNU General Public License)に基づきこのデータベースを使用する際の制限に拘束されることを望まない顧客に対し、名称が変更された SAP DB の商用ライセンスを販売する権利も付与されます。2003 年 8 月、MySQL AB によって SAP DB の名称は MaxDB に変更されました。

8.2. ライセンスとサポート

MySQL AB から配布された他の製品に関して提供されたライセンス((項1.4.3. 「MySQL ライセンス」)に基づき、MaxDB も使用することが可能です。したがって、GNU 一般公衆利用許諾契約書(付録?H. GNU General Public License)と商用ライセンス(項1.4. 「MySQL のサポートとライセンス」)に基づき MaxDB を使用できるようになります。

MySQL では、SAP ユーザ以外の顧客に対して MaxDB サポートを提供する予定です。

そのような再ブランド化バージョンの第 1 弾として、MaxDB 7.5.00 が 2003 年後期にリリースされました。

8.3. MaxDB の基本概念

MaxDB は、クライアント/サーバ製品として動作します。インストレーション環境でオンライントランザクションを大量に処理する必要性を満たすために開発されました。オンラインバックアップとデータベース拡張がサポートされています。Microsoft クラスタサーバは複数サーバ導入に直接対応していますが、他のフェールオーバソリューションはマニュアルでスクリプト化する必要があります。データベース管理ツールは、Windows およびブラウザベースの導入の両方で提供されます。

8.4. MaxDB と MySQL の相違点

MaxDB と MySQL の主な違いを以下に示します (概要であり、完全なものではありません)。

  • MaxDB は、クライアント/サーバシステムとして動作します。MySQL は、クライアント/サーバシステムまたは組込システムとして実行することができます。

  • MySQL によってサポートされているプラットフォームの一部では、MaxDB が動作しない場合もあります。たとえば、MaxDB は IBM の OS/2 では動作しません。

  • MaxDB では、クライアント/サーバ通信に専用ネットワークプロトコルが使用されます。それに対し MySQLでは、TCP/IP(SSL 暗号化あり/なし)、ソケット(UNIX ライクなシステムの場合)、名前付きパイプ(Windows NT ファミリシステムの場合)のいずれかが使用されます。

  • MaxDB は、ストアドプロシージャをサポートしています。MySQL の場合、ストアドプロシージャの導入はバージョン 5.0 からとなります。MaxDB では SQL 拡張を介したトリガのプログラミングもサポートしていますが、この機能は MySQL 5.1 で予定されています。MaxDB は、ストアドプロシージャ言語のデバッガを内蔵しています。また、ネストされたトリガのカスケードが可能で、アクションおよび行単位の複数トリガをサポートします。

  • MaxDB のディストリビューションには、テキストベース、グラフィカルベース、Web ベースのいずれかのユーザインタフェースが含まれています。MySQL のディストリビューションには、テキストベースのユーザインタフェースしか含まれていません。グラフィカルユーザインタフェース(MySQL Control Center)は、主要ディストリビューションとは別に提供されます。MySQL の Web ベースユーザインタフェースは、サードパーティから提供されています。

  • MaxDB がサポートする多数のプログラミングインタフェースは、MySQL でもサポートされています。ただし、RDO、ADO、.NET は MaxDB ではサポートされておらず、いずれも MySQL ではサポートされています。MaxDB では、C/C++ でのみ埋め込み SQL がサポートされます。

  • 以下の管理機能は MaxDB に含まれていますが、MySQL には含まれていません。 時刻、イベント、警告によるジョブスケジューリングと、警告しきい値に基づくデータベース管理者へのメッセージ送信

8.5. MaxDB と MySQL の相互運用性

最初の 7.5.00 バージョンの直後に公開される MaxDB バージョンには、以下の機能が含まれる予定です。これらの機能により、MaxDB と MySQL の相互運用性が確保されます。

  • MySQL プロキシでは、MySQL プロトコルを使用して MaxDB に接続できるようになります。これによって、mysql コマンドラインユーザインタフェース、mysqldump ダンプユーティリティ、または mysqlimport インポートプログラムと同様、MySQL クライアントプログラムを MaxDB に対して使用することができます。mysqldump を使用すると、データをデータベースシステムからダンプし、他のデータベースシステムにエクスポート (パイプ) するのが容易になります。

  • MySQL と MaxDB の間のレプリケーションは双方向でサポートされます。つまり、MySQL と MaxDB のいずれかをマスタレプリケーションサーバとして使用することができます。レプリケーション構文を集めて拡張し、両方のデータベースシステムで同じ構文が認識されるようにすることが長期的な計画となっています。 See 項4.11.1. 「はじめに」

8.6. MaxDB 関連リンク

MaxDB 関連情報のメインページは http://www.mysql.com/maxdb です。http://www.sapdb.org の掲載情報はすべて、メインページに最終的に移動される予定です。

8.7. MaxDB の予約語

MySQL と同じく MaxDB にも、特殊な意味を持つ多数の予約語があります。 予約語は通常、データベース名やテーブル名など、識別子の名称として使用することはできません。MaxDB の予約語、予約語の使用コンテキスト、対応する予約語が MySQL に存在するかどうかの区別が、以下の表に示されています。対応する予約語が存在する場合、MySQL での意味は一致することもあれば、多少異なることもあります。MaxDB がどの点で MySQL と異なるかを示すことが主な目的なので、この一覧は完全な内容ではありません。

MySQL の予約語一覧については、See 項6.1.7. 「MySQL での予約語の扱い」 を参照してください。

MaxDB で予約済MaxDB での使用コンテキスト対応する MySQL の予約語
@識別子の前に付けることができる(``@table'' など)。使用できない。
ADDDATE()SQL 関数ADDDATE()。MySQL バージョン 4.1.1 で追加。
ADDTIME()SQL 関数ADDTIME()。MySQL バージョン 4.1.1 で追加。
ALPHASQL 関数類似するものが存在しない。
ARRAYデータ型実装されていない。
ASCII()SQL 関数ASCII()。ただし、異なった意味で実装されている。
AUTOCOMMITトランザクション。デフォルトでは ONトランザクション。デフォルトでは OFF
BOOLEANカラム型。BOOLEANTRUEFALSENULL のみを値として受け取る。BOOLEAN を MySQL バージョン 4.1.0 で追加。BOOL のシノニムであり、TINYINT(1) にマッピングされている。NULL のほか、TINYINT と同じ範囲で整数値を受け取る。TRUEFALSE は、10 のエイリアスとして使用することができる。
CHECKCHECK TABLECHECK TABLE。使用方法は類似しているが、同一ではない。
COLUMNカラム型COLUMN。ノイズワード。
CHAR()SQL 関数CHAR()。同一の構文。使用方法は類似しているが、同一ではない。
COMMITデータ定義クエリの発行中にトランザクションの暗黙的なコミットが発生する。データ定義クエリの発行中(ただし、他のクエリも多数存在)にトランザクションの暗黙的なコミットが発生する。
COSH()SQL 関数類似するものが存在しない。
COT()SQL 関数COT()。構文と実装が一致する。
CREATESQL、データ定義言語CREATE
DATABASESQL 関数DATABASE()DATABASE は異なったコンテキストで使用される。たとえば CREATE DATABASE
DATE()SQL 関数CURRENT_DATE
DATEDIFF()SQL 関数DATEDIFF()。MySQL バージョン 4.1.1 で追加
DAY()SQL 関数類似するものが存在しない。
DAYOFWEEK()SQL 関数DAYOFWEEK()。初日(1)のデフォルトは MaxDB では月曜、MySQL では日曜となっている。
DISTINCTSQL 関数 AVG, MAX, MIN, SUMDISTINCT。ただし、SELECT DISTINCT という異なったコンテキストで使用される。
DROP特に DROP INDEXDROP INDEX。使用方法は類似しているが、同一ではない。
EBCDIC()SQL 関数類似するものが存在しない。
EXPAND()SQL 関数類似するものが存在しない。
EXPLAIN最適化EXPLAIN。使用方法は類似しているが、同一ではない。
FIXED()SQL 関数類似するものが存在しない。
FLOAT()SQL 関数類似するものが存在しない。
HEX()SQL 関数HEX()。使用方法は類似しているが、同一ではない。
INDEX()SQL 関数INSTR() または LOCATE()。構文と意味は類似しているが、同一ではない。
INDEXUSE INDEX, IGNORE INDEX および類似するヒントが SELECT ... USE INDEX と同様、SELECT の直後で使用されている。USE INDEX, IGNORE INDEX および類似するヒントが SELECT ... FROM ... USE INDEX の場合と同様、SELECTFROM 節で使用されている。
INITCAP()SQL 関数類似するものが存在しない。
LENGTH()SQL 関数LENGTH()。構文は同一だが、実装が少し異なる。
LFILL()SQL 関数類似するものが存在しない。
LIKE比較LIKE。ただし、MaxDB に用意されている拡張 LIKE は MySQL の REGEX に類似している。
LIKE ワイルドカードMaxDB では、``%''、``_''、``ctrl + アンダースコア''、``ctrl + ↑''、``*''、``?'' が LIKE ワイルドカードとして比較でサポートされる。MySQL では、``%'' と ``_'' が LIKE ワイルドカードとして比較でサポートされる。
LPAD()SQL 関数LPAD()。実装が少し異なる。
LTRIM()SQL 関数LTRIM()。実装が少し異なる。
MAKEDATE()SQL 関数MAKEDATE()。MySQL バージョン 4.1.1 で追加
MAKETIME()SQL 関数MAKETIME()。MySQL バージョン 4.1.1 で追加
MAPCHAR()SQL 関数類似するものが存在しない。
MICROSECOND()SQL 関数MICROSECOND()。MySQL バージョン 4.1.1 で追加
NOROUND()SQL 関数類似するものが存在しない。
NULLカラム型。比較NULL。オーバーフローまたはゼロ除算の原因となる算術演算から返される特別な NULL 値が、MaxDB でサポートされる。そのような特別な値は、MySQL ではサポートされない。
PISQL 関数PI()。構文と実装は同一だが、かっこが必要とされる。
REFデータ型類似するものが存在しない。
RFILL()SQL 関数類似するものが存在しない。
ROWNOWHERE 節における述語LIMIT 節に類似している。
RPAD()SQL 関数RPAD()。実装が少し異なる。
RTRIM()SQL 関数RTRIM()。実装が少し異なる。
SEQUENCECREATE SEQUENCE, DROP SEQUENCEAUTO_INCREMENT。概念は類似しているが、実装が異なる。
SINH()SQL 関数類似するものが存在しない。
SOUNDS()SQL 関数SOUNDEX()。構文が少し異なる。
STATISTICSUPDATE STATISTICSANALYZE。概念は類似しているが、実装が異なる。
SUBSTR()SQL 関数SUBSTRING()。実装が少し異なる。
SUBTIME()SQL 関数SUBTIME()。MySQL バージョン 4.1.1 で追加
SYNONYMデータ定義言語: CREATE [PUBLIC] SYNONYMRENAME SYNONYMDROP SYNONYM類似するものが存在しない。
TANH()SQL 関数類似するものが存在しない。
TIME()SQL 関数CURRENT_TIME
TIMEDIFF()SQL 関数TIMEDIFF()。MySQL バージョン 4.1.1 で追加
TIMESTAMP()SQL 関数TIMESTAMP()。MySQL バージョン 4.1.1 で追加
DAYOFMONTH()DAYOFYEAR() の引数としてのTIMESTAMP()SQL 関数類似するものが存在しない。
TIMEZONE()SQL 関数類似するものが存在しない。
TRANSACTION()現行トランザクションの ID を返す。類似するものが存在しない。
TRANSLATE()SQL 関数REPLACE()。構文と実装が一致する。
TRIM()SQL 関数TRIM()。実装が少し異なる。
TRUNC()SQL 関数TRUNCATE()。構文と実装が少し異なる。
USEmysql コマンドラインユーザインタフェースコマンドUSE
USERSQL 関数USER()。構文は同一だが、実装が異なる。かっこが必要とされる。
UTC_DIFF()SQL 関数UTC_DATE()UTC_DIFF() の結果を計算する手段を提供する。
VALUE()SQL 関数、COALESCE() のエイリアスCOALESCE()。構文と実装が一致する。
VARIANCE()SQL 関数類似するものが存在しない。
WEEKOFYEAR()SQL 関数WEEKOFYEAR()。MySQL バージョン 4.1.1 で追加

This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.

アダルトレンタルサーバー