0

Wordpressのデータモデルは、その「メタ」テーブル(別名、wp_postmeta、wp_commentmeta、wp_usermeta)を通じて拡張性を提供します。この名前/値ペアのリンクは非常に柔軟で、WordpressのAPIによってサポートされています。それを祝うすべての正当な理由ですが、トランザクションにぶら下がっている拡張属性がたくさんある場合は、パフォーマンスが大幅に低下する可能性もあります。たとえば、「血液検査」と呼ばれるカスタム投稿タイプがあり、血液分析から得られる30〜40の異なる測定値をキャプチャできるようにしたいとします。このwp_postmeta結合を各テストに使用することは実用的ですか?おそらくそうではありません。

完全にオーダーメイドでテーブルを左右に作成することもできますが、私が疑問に思っているのは、少なくとも「80/20ルール」を作成し、静的な数の追加列を提供する汎用拡張テーブルを作成する方法がないことです。 SQLで検索可能な属性を配置し、SQL以外の検索可能な属性をほぼ無制限に拡張できるJSONオブジェクトの列で終了しますか?以下の図のようなもの:

2つのモデルを比較する

これを行うことで、Wordpress APIを拡張して、ほとんどの開発でこの構造の違いをほとんど無視できるようになると考えていました。このようなもの:

登録APIの例:

$my_meta_ext = new WP_Meta_Extension( 'post' );
$my_meta_ext->add_tran_type( 'blood-measurement' , ( 'col1' => 'total-cholesterol' , 'col2' => 
'triglycerides', 'col3' => 'etc');

使用法APIの例:

add_ext_meta ( $term_id, 'blood-measurement.total-cholesterol', $meta_value );

さて、これがグループに対する私の明確な質問です:

  1. これは意味がありますか?これに価値がありますか?このようなものはすでに「プラグイン」形式(またはその他)で存在しますか?
  2. すべてのタイプ(別名、投稿、コメント、ユーザーなど)で1つの拡張テーブルを使用する場合、効率的なmySQLでインデックスを作成できますか?タイプごとにテーブルを作成する方がよいでしょうか。
  3. デフォルトのワードプレス拡張モデルのパフォーマンスが低下し始めたときに、誰かが(完全に証明されていなくても)何らかの指標を持っていますか?
  4. このようなことをすでに行っている場合...モデルを拡張するときに学んだ重要な教訓はありますか?これはどれほど複雑な作業ですか?
4

1 に答える 1

0

私はこのトピックをロンドンの専門の WordPress ワーキング グループに提出しました。回答には至りませんでしたが、こののソリューションが非常に価値があるという明確な合意が得られました。さらに、これに対処するためのプラグインを開発する目的で、GIT リポジトリを開始することにしました (ロンドンのグループ、またはこれを読んで助けてくれると感じている皆さんの寛大なサポートがあれば幸いです)。

リポジトリは次の場所にあります。

https://bitbucket.org/ksnyder/wp-database-extension/

現時点では、アイデア、高レベルの設計、インターフェイスの仕様のみが存在し、実際のコードは存在しないことを理解してください。もちろん、それは変わりますし、この取り組みを手伝ってくれるなら、もっと早く変わるでしょう (注意してください、私は分散開発を実行した個人的な経験はありませんが、どこかで学ぶ必要があります)。

于 2012-06-13T21:03:20.743 に答える