目次
MaxDB は、エンタープライズレベルのデータベースです。以前に SAP DB と呼ばれていたデータベース管理システムが、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 に変更されました。
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 年後期にリリースされました。
MaxDB は、クライアント/サーバ製品として動作します。インストレーション環境でオンライントランザクションを大量に処理する必要性を満たすために開発されました。オンラインバックアップとデータベース拡張がサポートされています。Microsoft クラスタサーバは複数サーバ導入に直接対応していますが、他のフェールオーバソリューションはマニュアルでスクリプト化する必要があります。データベース管理ツールは、Windows およびブラウザベースの導入の両方で提供されます。
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 には含まれていません。 時刻、イベント、警告によるジョブスケジューリングと、警告しきい値に基づくデータベース管理者へのメッセージ送信
最初の 7.5.00 バージョンの直後に公開される MaxDB バージョンには、以下の機能が含まれる予定です。これらの機能により、MaxDB と MySQL の相互運用性が確保されます。
MySQL プロキシでは、MySQL
プロトコルを使用して MaxDB
に接続できるようになります。これによって、mysql
コマンドラインユーザインタフェース、mysqldump
ダンプユーティリティ、または
mysqlimport
インポートプログラムと同様、MySQL
クライアントプログラムを MaxDB
に対して使用することができます。mysqldump
を使用すると、データをデータベースシステムからダンプし、他のデータベースシステムにエクスポート
(パイプ) するのが容易になります。
MySQL と MaxDB の間のレプリケーションは双方向でサポートされます。つまり、MySQL と MaxDB のいずれかをマスタレプリケーションサーバとして使用することができます。レプリケーション構文を集めて拡張し、両方のデータベースシステムで同じ構文が認識されるようにすることが長期的な計画となっています。 See 項4.11.1. 「はじめに」。
MaxDB 関連情報のメインページは http://www.mysql.com/maxdb です。http://www.sapdb.org の掲載情報はすべて、メインページに最終的に移動される予定です。
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 で追加。 |
ALPHA | SQL 関数 | 類似するものが存在しない。 |
ARRAY | データ型 | 実装されていない。 |
ASCII() | SQL 関数 | ASCII() 。ただし、異なった意味で実装されている。 |
AUTOCOMMIT | トランザクション。デフォルトでは
ON 。 | トランザクション。デフォルトでは
OFF 。 |
BOOLEAN | カラム型。BOOLEAN は
TRUE 、FALSE 、NULL
のみを値として受け取る。 | BOOLEAN を MySQL バージョン 4.1.0
で追加。BOOL
のシノニムであり、TINYINT(1)
にマッピングされている。NULL
のほか、TINYINT
と同じ範囲で整数値を受け取る。TRUE
と FALSE は、1
と 0
のエイリアスとして使用することができる。 |
CHECK | CHECK TABLE | CHECK
TABLE 。使用方法は類似しているが、同一ではない。 |
COLUMN | カラム型 | COLUMN 。ノイズワード。 |
CHAR() | SQL 関数 | CHAR() 。同一の構文。使用方法は類似しているが、同一ではない。 |
COMMIT | データ定義クエリの発行中にトランザクションの暗黙的なコミットが発生する。 | データ定義クエリの発行中(ただし、他のクエリも多数存在)にトランザクションの暗黙的なコミットが発生する。 |
COSH() | SQL 関数 | 類似するものが存在しない。 |
COT() | SQL 関数 | COT() 。構文と実装が一致する。 |
CREATE | SQL、データ定義言語 | CREATE |
DATABASE | SQL 関数 | DATABASE() 。DATABASE
は異なったコンテキストで使用される。たとえば
CREATE DATABASE |
DATE() | SQL 関数 | CURRENT_DATE |
DATEDIFF() | SQL 関数 | DATEDIFF() 。MySQL バージョン 4.1.1 で追加 |
DAY() | SQL 関数 | 類似するものが存在しない。 |
DAYOFWEEK() | SQL 関数 | DAYOFWEEK() 。初日(1 )のデフォルトは
MaxDB では月曜、MySQL
では日曜となっている。 |
DISTINCT | SQL 関数 AVG , MAX ,
MIN , SUM | DISTINCT 。ただし、SELECT
DISTINCT
という異なったコンテキストで使用される。 |
DROP | 特に DROP INDEX で | DROP
INDEX 。使用方法は類似しているが、同一ではない。 |
EBCDIC() | SQL 関数 | 類似するものが存在しない。 |
EXPAND() | SQL 関数 | 類似するものが存在しない。 |
EXPLAIN | 最適化 | EXPLAIN 。使用方法は類似しているが、同一ではない。 |
FIXED() | SQL 関数 | 類似するものが存在しない。 |
FLOAT() | SQL 関数 | 類似するものが存在しない。 |
HEX() | SQL 関数 | HEX() 。使用方法は類似しているが、同一ではない。 |
INDEX() | SQL 関数 | INSTR() または
LOCATE() 。構文と意味は類似しているが、同一ではない。 |
INDEX | USE INDEX , IGNORE INDEX
および類似するヒントが SELECT ... USE
INDEX と同様、SELECT
の直後で使用されている。 | USE INDEX , IGNORE INDEX
および類似するヒントが SELECT ... FROM
... USE INDEX
の場合と同様、SELECT の
FROM 節で使用されている。 |
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
ではサポートされない。 |
PI | SQL 関数 | PI() 。構文と実装は同一だが、かっこが必要とされる。 |
REF | データ型 | 類似するものが存在しない。 |
RFILL() | SQL 関数 | 類似するものが存在しない。 |
ROWNO | WHERE 節における述語 | LIMIT 節に類似している。 |
RPAD() | SQL 関数 | RPAD() 。実装が少し異なる。 |
RTRIM() | SQL 関数 | RTRIM() 。実装が少し異なる。 |
SEQUENCE | CREATE SEQUENCE , DROP SEQUENCE | AUTO_INCREMENT 。概念は類似しているが、実装が異なる。 |
SINH() | SQL 関数 | 類似するものが存在しない。 |
SOUNDS() | SQL 関数 | SOUNDEX() 。構文が少し異なる。 |
STATISTICS | UPDATE STATISTICS | ANALYZE 。概念は類似しているが、実装が異なる。 |
SUBSTR() | SQL 関数 | SUBSTRING() 。実装が少し異なる。 |
SUBTIME() | SQL 関数 | SUBTIME() 。MySQL バージョン 4.1.1 で追加 |
SYNONYM | データ定義言語: CREATE [PUBLIC]
SYNONYM 、RENAME
SYNONYM 、DROP 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() 。構文と実装が少し異なる。 |
USE | mysql
コマンドラインユーザインタフェースコマンド | USE |
USER | SQL 関数 | 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.