MongoDB で読み取りをスケーリングしたい。これを行うには、マスター/スレーブ レプリケーションまたはレプリカ セットをセットアップできますが、Mongo への接続を次のように作成すると、次のようになります。
from pymongo import ReplicaSetConnection, ReadPreference
from pymongo.errors import ConnectionFailure
try:
connection = ReplicaSetConnection("somehost:10000", replicaSet='myapp_repl',
read_preference=ReadPreference.SECONDARY)
except ConnectionFailure ...
また:
from pymongo.master_slave_connection import MasterSlaveConnection
from pymongo.errors import ConnectionFailure
try:
master = Connection(host="somehost", port=10000)
slave1 = Connection(host="somehost", port=10001)
slave2 = Connection(host="somehost", port=10002)
connection = MasterSlaveConnection(master, slaves=[slave1, slave2])
except ConnectionFailure ...
pymongoドライバーは、レプリカ セットのセカンダリ/スレーブ間でクエリを分散します。この状況では、プライマリ/マスターはクエリを処理しないため、2 つのノードがある場合、1 つのノードのみがクエリを処理するため、読み取り機能は強化されません。マスターとスレーブ (プライマリとセカンダリ) の両方でクエリを処理するにはどうすればよいですか?