読み込み設定 (read preference)
項目一覧
Overview
レプリカセットのどのノードから読み取るかを選択するには、 Java Reactive Streams ドライバーを使用して読み込み設定 (read preference) を構成します。 さらに、読み取り保証を構成することで、レプリカセットやシャーディングされたクラスターから読み取られたデータの整合性と分離プロパティを制御できます。 このガイドでは、 MongoDB Java Reactive Streams ドライバーを使用して 読み込み設定 (read preference) と読み取り保証 (read concern) を構成する方法を学習できます。
読み込み設定( 読み込み設定 (read preference) )と読み取り保証( 読み取り保証 (read concern) )は、次のレベルで構成できます。
MongoDBデプロイの場合
データベース用
コレクション用
配置レベルでの読み込み設定(read preference)の構成
配置レベルで次の方法で読み込み設定( 読み込み設定 (read preference) )を構成できます。
次のコードに示すように、
MongoClientSettings
インスタンスを作成します。MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .readPreference(ReadPreference.secondary()) .build()); 次のコードに示すように、
ConnectionString
インスタンスを作成します。MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?readPreference=secondary");
データベースまたはコレクション レベルでの読み込み設定(read preference)の構成
読み込み設定( 読み込み設定 (read preference) )は、データベースまたはコレクションレベルで次の方法で構成できます。
次のコードに示すように、
withReadPreference()
メソッドを使用してMongoDatabase
で を実行します。MongoDatabase database = mongoClient.getDatabase("test") .withReadPreference(ReadPreference.secondary()); 次のコードに示すように、
withReadPreference()
メソッドを使用してMongoCollection
で を実行します。MongoCollection<Document> collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.secondary());
MongoDatabase
とMongoCollection
インスタンスは不変です。 既存のMongoDatabase
またはMongoCollection
インスタンスでwithReadPreference()
を呼び出すと、新しい インスタンスが返されますが、メソッドが呼び出されるインスタンスには影響しません。
次の例では、 collectionWithReadPref
インスタンスの読み込み設定( 読み込み設定 (read preference) )はprimaryPreferred
で、 collection
の読み込み設定( 読み込み設定 (read preference) )は影響を受けません。
MongoCollection<Document> collectionWithReadPref = collection.withReadPreference(ReadPreference.primaryPreferred());
配置レベルでの読み取り保証の構成
配置レベルで次の方法で読み取り保証 (read concern)を構成できます。
次のコードに示すように、
MongoClientSettings
インスタンスを作成します。MongoClient mongoClient = MongoClients.create(MongoClientSettings.builder() .applyConnectionString(new ConnectionString("mongodb://host1,host2")) .readConcern(ReadConcern.MAJORITY) .build()); 次のコードに示すように、
ConnectionString
インスタンスを作成します。MongoClient mongoClient = MongoClients.create("mongodb://host1:27017,host2:27017/?readConcernLevel=majority");
データベースまたはコレクション レベルでの読み取り保証の構成
読み取り保証 (read concern)は、データベースまたはコレクションレベルで次の方法で構成できます。
次のコードに示すように、
withReadConcern()
メソッドを使用してMongoDatabase
で を実行します。MongoDatabase database = mongoClient.getDatabase("test") .withReadConcern(ReadConcern.MAJORITY); 次のコードに示すように、
withReadConcern()
メソッドを使用してMongoCollection
で を実行します。MongoCollection<Document> collection = database.getCollection("restaurants") .withReadConcern(ReadConcern.MAJORITY);
MongoDatabase
とMongoCollection
インスタンスは不変です。 既存のMongoDatabase
またはMongoCollection
インスタンスでwithReadConcern()
を呼び出すと、新しい インスタンスが返されますが、メソッドが呼び出されるインスタンスには影響しません。
次の例では、 collWithReadConcern
インスタンスにはAVAILABLE
の読み取り保証がありますが、 collection
の読み取り保証には影響がありません。
MongoCollection<Document> collWithReadConcern = collection.withReadConcern(ReadConcern.AVAILABLE);
読み取り保証、読み込み設定 (read preference)、書込み保証 (write concern) の組み合わせ
MongoClientSettings
、 MongoDatabase
、またはMongoCollection
インスタンスをビルドすると、読み取り保証、読み込み設定(read preference)、書込み保証(write concern)の組み合わせを含めることができます。
たとえば、次のコードでは、コレクション レベルで 3 つすべてを設定します。
collection = database.getCollection("restaurants") .withReadPreference(ReadPreference.primary()) .withReadConcern(ReadConcern.MAJORITY) .withWriteConcern(WriteConcern.MAJORITY);
詳細情報
読み込み設定( 読み込み設定 (read preference) ) の詳細については、 MongoDB Serverマニュアルの読み込み設定(read preference)ガイドを参照してください。 読み取り保証 ( 読み取り保証 (read concern) ) の詳細については、 MongoDB Serverマニュアルの「読み取り保証 (read concern) 」のガイドを参照してください。