web-dev-qa-db-ja.com

WordPress内でデータレイヤーを切り替えることは可能ですか?

WordPressはプラグインを使用して間違いなく非常にカスタマイズ可能ですが、カスタマイズの可能性はすべて基礎となるアーキテクチャによって定義された制限を確実に持っています。

WPアーキテクチャとソースコードに精通している人のために:

WPで使用されるデータ層をカスタマイズして別のデータストア(MySQLの代わりにファイル(または別のデータベースシステム)など)を使用するために必要な作業は何でしょうか。 WordPressアーキテクチャはレイヤを切り替える可能性があるという意味でレイヤ化されていますか? UI層は見かけ上非常に簡単に切り替えることができます(どんなテーマでもこれが可能です)、しかし他の層、すなわちデータ層はどうですか?

4
Marek

Wordpressはnotに置き換え可能なデータベース層を持つように設計されています。コンピューターサイエンスは、同じアプリケーション内のさまざまなデータベースをさまざまな抽象化レベルで扱うために、いくつかの異なる概念を持っています。Wordpressはそのようなことを利用する傾向がありません。もっと単純な言葉で言うと:まったく違います。

しかし、ワードプレスはそれ自身のコードを他のコード、例えばデータベースクラス全体に置き換える機能を提供します。これは、データベース層全体を置き換えるのに必ずしも十分ではありません(読むこと:通常は十分です)が、いじるのに役立ちます。たとえば、 HyperDB を置き換えるWPDBクラスは、新しいデータベース層を完全に追加するのではなく、1つではなく複数のMySQLサーバーを処理します。これはよく知られた例です。 (これはPHPでするのは悪い習慣と考えられています、 より良い方法があります が、それができることの良い例です)。

データベースクラスを置き換えることに加えて、Wordpressには能力があり、さらに多くのコードを置き換えることができ、完全に変更することができます。独自のデータベース層に関するすべてを処理する独自のディストリビューションを作成する。

データベース層全体を置き換える方法の実際の例を見たいのであれば、Wordpressにまったく異なるタイプのデータベースサーバー(ここでは、ハードコードされたMySQLではなくMSSQL)を使用させるために、フルディストリビューションとパッチをここで見つけます。 :

SQL Server Distro&Patch上のWordPress

それはあなたがそのようなデータベース層がどのように実装されることができるか研究することができるフリーソフトウェアです、ウェブサイトは同様にその話題に関するより多くの情報を提供します。

ヒント:Wordpressと戦わないでください。 MySQLにこだわり、それだけです。それ以外の場合は、自分のニーズに合うように設計された他のものを探してください。仕事に適したツールを選ぶだけです。

5
hakre

可能性があります:wpdbの代わりに HyperDB を参照してください。 HyperDBはWordPressにパーティション分割と複製を追加します。パーティション化は、複数のデータベースに接続し、テーブル名を使用してクエリを実行するデータベースを決定することによって機能します。

結局、$wpdbはSQLクエリを取得するだけで、そのクエリ内のデータを使用して自由に実行できます。 HyperDBは、元のwpdbクラスとまったく同じようにMySQLに問い合わせます。それを異なるデータベースに拡張するには、準拠していないクエリを実行する前にそれらを修正する必要があります。データストアがSQLをまったく受け入れない場合は、受信したクエリを使用している他のAPIに変換する必要があります。何でも十分な時間と労力で可能ですが、それは私にとってかなり悲惨な仕事のように思えます。 ;)

2

このコーデックスページ が見つかり、WordPressを開発する人々によって提案されたおよび/または計画された解決策の概要を含む。それがどのように出てくるのか見てみましょう。

0
Marek