• サイトデザイン工事中です。ご意見をお寄せください
  • 赤色のリンクは、まだ日本語Codexに存在しないページ・画像です。英語版と併せてご覧ください。(詳細

このWikiはいつでも誰でも編集できます

代替データベースの使い方

提供:WordPress Codex 日本語版
移動: 案内, 検索

現在のところ、公式な WordPress のディストリビューションは MySQL データベースエンジンのみに対応しています。多くの方が他のデータベースエンジン(特にオープンソース PostgreSQL)対応への要望を求めてきました。このページは同トピックに関して以前に英語版フォーラムで行われた議論のまとめであり、WordPress による他のデータベースの対応へのしっかりしたロードマップを確立するために書かれました。

既存のプロジェクトにて他のデータベースエンジンへの対応を追加するために最も一般的なのは、ソースコードを完全に書き直し、あるエンジンへの参照部分を別のものと入れ替えるという方法です。つまり、選択したデータベースエンジンに対応する移植版を作成するということです。

WordPress 移植版作成の欠点は、元のコードベースと同期させ、機能やセキュリティ改善等を最新に保つのが難しいという点です。これは、キーナン・ティムズの WordPress 1.2 向け PostgreSQL 移植版を見ても明らかです。このプロジェクトは現在セキュリティに問題があり、古くなってしまっています。さらに最近ではアーウィン ・ウォルフによる 移植版も Source Forge にあります

これは素晴らしい最初の一歩であり一部のニーズに答えるには十分かもしれませんが、移植という方法は最新のセキュリティ対策や機能を手に入れたい多くのユーザーにとって理想的ではありません。より良い解決策は、代替データベース対応を WordPress に統合するという方法でしょう。しかし、こちらの方法は移植しやすいクエリを書ために開発者が協調努力し、適切な抽象レイヤをまとめる必要があります。

データベースの課題

  1. 現在のコードベースは非常に MySQL を中心としたものとなっている。WordPress はデータベースコールを実装するために ezSQL クラスを使ってはいるが、これは抽象化レイヤと呼ぶには適切ではない。異なるデータベースにおける異なる SQL 構文の実装(リテラルの引用符囲い、クエリ構文の制限、大文字小文字の区別、など)には ezSQL では対応しておらず、一般的なクエリコールが提供されているだけである。つまり、多大な数のクエリを再度書かなければならず、非常に大規模な作業となってしまう。
  2. データベースを使って動くプラグインは現在の実装に依存しており、MySQL 向けのコードになっている。もしデータベース抽象化レイヤへの完全対応に向けて WordPress のコードをすべて書き換える場合、データベース実装の急激なシフトが起こった際にはデータベースアクセスに依存するプラグインなどが使えなくなる可能性が高い。
  3. 現在の標準データベース抽象化レイヤ(ADOdbPear DB)は非常に規模が大きく複雑であり、WordPress と同様もしくはそれ以上の依存性に相当することになってしまう。これは、WordPress のポータビリティやインストールの簡単さに影響を与える可能性がある。

解決策

現状維持

現在の開発版の方向性を続ける。データベース独立性については WordPress コア開発者はほとんど重きをおいておらず、他のデータベースに対応するにはフォーク(分岐)が必要だと言えます。

良い点:

悪い点:

PostgreSQL 対応の拡張

ezSQL を拡張し、MySQL と PostgreSQL が同様にうまく作動するために必要な抽象化レイヤを含める方法です。

これは ezSQL の Postgres や MySQL 抽象化を設定に含め、これら2つの間を汎用化する必要なメソッドを追加するというだけのことです(例: limitQuery メソッドなど)。全体の SQL クエリを書き直し、PostgreSQL/MySQL 互換にし、ezSQL の独自拡張を使って互換性のないところを処理します。ユーザーは wp-config.php 内でどちらのデータベースを使用するか設定し、それ以降何も考える必要はありません。


良い点:

悪い点:

WordPress 独自のデータベース抽象化レイヤ

データベースから関連する情報を取ってくるための WordPress 内のすべてのクエリ(およびクエリブロック)をサブルーチンに変換します。もしくはさらに適切な手段としてオブジェクトメソッドを使うという方法です。

これらの関数にコードを追加することによって、新しく別のデータベースへ対応することができます。ある情報ブロックを取得する際、特定のデータベースに対する最適化を関連する関数に追加することもできます。

例えばフロントページの投稿とそのコメント数を取得する場合、サブクエリに対応しているデータベースばらクエリ1つで完了しますが、レガシー MySQL では最低でも表示する投稿数プラス1つのクエリが必要です。MySQL を使っている場合も、レガシープラグインが動作できるようにするべきです。

良い点:

悪い点:

完全なデータベース抽象化レイヤ

WordPress 内のすべてのクエリを、ADOdb や Pear DB などのデータベース抽象化レイヤを使った関数に変換する方法です。

良い点:

悪い点:

開発コスト

多くの人が(過去のフォーラム議論を参照)上記のような WordPress 代替データベース選択肢のいずれかへの開発コストに対して寄付をする提案をしている。


最新英語版: WordPress Codex » Using_Alternative_Databases最新版との差分

個人用ツール
名前空間
変種
操作
このサイトについて
特集
サーバ別情報
リファレンス
ドキュメント整備
ツールボックス
他の言語