【MySQL互換/派生】MariaDB の特徴について【アザラシ】


技術営業部の大原です。

今回はMySQLから派生したMySQL互換のDBである「MariaDB」の特徴について記載します。
ちなみに「MySQL」の「マイ」は開発者の長女の名前、「MariaDB」の「マリア」は次女の名前です。

※ 本記事は2020年9月時点での内容です。

MariaDB独自の主な仕様・機能(MariaDB 10.3 以降)

元々 MySQLの互換・派生という位置付けで登場したMariaDBですが、最近ではMariaDBの方がアップデートが早く、また本家のMySQLにはない、MariaDB独自の仕様になっている仕様や機能も多くあります。

ここでは MariaDB独自の仕様・機能をまとめてみました。
※ MySQL ⇔ MariaDB では、双方でアップデートを繰り返すので、今後にMySQLがMariaDBの仕様・機能を逆輸入する可能性は十分にあります。

項目 概要
IDの強制終了 指定したID のクエリを強制終了
正規表現エンジンの変更 正規表現エンジンの変更による、正規表現の機能強化
削除結果の取得 DELETE ... RETURNING 構文を使うと、削除対象が1つのテーブルの場合、削除結果を返す。
BLOB列・テキスト列の初期値設定 BLOB列(巨大バイナリデータ型)とTEXT列に初期値を設定できる
動的SQLの実行 OracleDatabaseのように、文字列から強制的にSQLを生成する
システムバージョニングテーブル データ更新日時を記録し、データ履歴を保存する機能
Oracle互換モード OracleDatabase のSQLが使えるモード
テーブル値コンストラクタ データの組み合わせをその場で生成する機能
アプリケーションファンクション ストアドファンクションとして集計関数を定義できる機能
シーケンステーブル 連番を生成する機能
FORループ FOR構文を使ってループできる機能
アプリケーション期間テーブル 時刻を任意に設定できる

MariaDBのオススメ機能

先ほどはMySQLにはない、MariaDBの独自の仕様・機能を記載しましたが、その中でもオススメのポイントを「3つ」ご紹介します。

● システムバージョニングテーブル:

・DBデータを変更(更新)するときは 上書きが基本ですが、この システムバージョニングの機能を有効にすれば、すべての変更の履歴が保存されます。履歴に残っているデータを明示 / 指定すれば、該当するデータを取得できるようになり、任意の時点のデータ分析 / 変更の監査 / 異なる時点のデータの比較が可能になります。

● Oracle互換モード:

・商用データベースのOracleDatabaseとの互換性を有効にする機能です。OracleDatabase独自の構文を使えたり、独自のストアドプロシージャ言語(PL/SQL)も実行できるため、OracleDatabaseからの移行をしやすくしています。

● シーケンステーブル:

・PostgresSQLにある、連番を管理するシーケンス機能のように、別のテーブルで連番を扱えます。現在の連番の値を確認したり、連番の再割り当てをしたりする操作が容易になります。

MariaDBの注意点(MySQLとの非互換性)

MariaDB と MySQLを比較した場合、仕様 / 機能として似通った部分は多くありますが、全てにおいて互換性があるわけでは無いので、下記のような項目に注意が必要です。

● 関数の違い(JSON や GTID の実装が異なる など)
● システム変数の違い(デフォルト値が異なる)
● 文字セット / 照合順序まではサポートされない

まとめ

以上、MariaDBに関する概要と特徴をご紹介しました。

普段MySQLを操作していれば、作法の違いはあれどMariaDBに取っ付きやすいはずです。


この記事をかいた人

About the author

大原 裕也

毎日Googleを巡回してます。