| ユーザフォーラムで議論/質問 | マニュアル検索 | ハイライト | ハイライトオフ | ポータル | php spot |
優先読み込みMongoDB 2.2 およびドライバのバージョン 1.3.0 以降では » 優先読み込み をサポートします。これを使えば、レプリカセット環境内でクエリを mongod インスタンスに振り分ける方法を制御できます。 優先読み込みは接続ごとに指定することもできるし、 データベース単位やコレクション単位でも指定できます。 上位で設定された優先順位がデフォルトで引き継がれます (たとえば、MongoCollection の優先読み込み設定は、それに対応する MongoDB インスタンスでの定義を引き継ぎます)。 優先読み込みの指定は、モードとタグセットの組み合わせで行います。 mongod インスタンスの優先順位をどのように決めるのかを指定するのがモードで、 ふさわしい mongod インスタンスの条件を指定するのが » タグセット です。 mongod のインスタンスがそれにふさわしいと認められるのは、直近の mongod インスタンスからの ping 時間が 15ms 以内に収まるときだけです。 優先読み込みのモード警告
MongoClient::RP_PRIMARY 以外のすべての優先読み込みモードは、 古いデータを返す可能性があります。 セカンダリがプライマリの操作を受け取るにはある程度時間がかかるからです。 MongoClient::RP_PRIMARY 以外のモードを選ぶ場合は、 最新のデータではなくてもアプリケーションがうまく動くように作っておかないといけません。
タグセット» タグセット を使うと、カスタムパラメータに基づいて読み込み操作の対象を特定のメンバーに絞り込めます。 タグセットでは、読み込み操作の対象となるメンバーを特定のデータセンターに絞り込んだり、 レポーティングや分析など操作種別ごとにその対象の mongod インスタンスを絞り込んだりできます。 タグセットを指定できるのは、優先読み込みが次のモードの場合です。
優先読み込みモードが MongoClient::RP_PRIMARY の場合はタグセットを指定できません。 タグを適用できるのはセカンダリメンバーを選ぶときだけ (ただし、NEAREST モードのときは例外) です。 優先読み込みの指定優先読み込みの設定方法は二通りあります。一つは MongoClient::__construct() に渡す接続 URI で指定する方法で、 このときはクエリ文字列の構文を使います。もうひとつはコアクラスのセッターメソッド群を使う方法で、 このときはタグセット用の配列構文を使います。 優先読み込みモードをクエリ文字列で指定する場合、 readPreferenceTags の値用のタグセットは、 コロンで区切ったキー/値のペアをカンマでつなげた形式になります。
警告
マッチするタグセットをドライバが見つけられない場合は、読み込みが失敗します! 適切な代替策を用意しておくのはプログラマの役割です。たとえば readPreferenceTags の値が空なら "no tag set preference" を使うなどです。
例1 接続 URI でのクエリ文字列構文による優先読み込みの設定
<?php
例2 タグセット用の配列構文による優先読み込みの設定
<?php |
各種マニュアル:
PHPマニュアル |
PEARマニュアル |
Smarty(英語)マニュアル |
PHP-GTKマニュアル |
「優先読み込み」をGoogle検索
|