Docs Menu

Docs HomeGo

CRUD 操作の実行を変更

項目一覧

  • Overview
  • 書込み保証 (write concern)
  • 読み取り保証(read concern)
  • 読み込み設定 (read preference)
  • 詳細情報

このガイドでは、MongoDB Go ドライバーがレプリカセットの書込み保証読み取り保証、 読み込み設定( read preference ) 構成を使用して、作成、読み取り、更新、削除(CRUD)操作を実行する方法を変更する方法を学習します。

次のレベルで、書込み保証、読み取り保証、読み込み設定(read preference)のオプションを設定できます。

  • クライアント レベル。オーバーライドされない限り、すべての操作実行にデフォルトを設定します

  • セッション レベル

  • トランザクション レベル

  • データベース レベル

  • コレクション レベル

  • クエリ レベル

レプリカセット内のデータの整合性と可用性をカスタマイズする必要がある場合は、このガイドをお読みください。

書込み保証 (write concern) は、挿入やアップデートなどの書込み (write) 操作が成功として返される前に、この操作を確認する必要があるレプリカセット内のデータを保持するノードの数を示します。 デフォルトでは、 書込み保証 (write concern) では、書込み (write) 操作が成功と見なされる前に、 プライマリ レプリカセット のノードのみが書込み (write) 操作を確認する必要があります。

MongoDB Go ドライバーには、レプリカセットの書込み保証 (write concern) を指定できる writeconcernパッケージが用意されています。 OptionタイプのSetWriteConcern()メソッドを使用して書込み保証(write concern)を設定します。 Option型では、書込み保証を指定するための次のメソッドがあります。

方式
説明
J()
The client requests acknowledgement that write operations are written to the journal. For more information, see the Write Concern specification.

Parameter: bool
W()
The client requests acknowledgement that write operations propagate to the specified number of mongod instances. For more information, see the Write Concern specification.

Parameter: int
WMajority()
The client requests acknowledgement that write operations propagate to the majority of mongod instances. For more information, see the Write Concern specification.

Parameter: none
WTagSet()
The client requests acknowledgement that write operations propagate to the specified mongod instance. For more information, see the Write Concern specification.

Parameter: string

Tip

または、接続文字列で書込み保証 (write concern) を指定することもできます。詳細については、サーバー マニュアルの「書込み保証(write concern) オプション」に関する記述を参照してください。

次のコードは、書込み保証 (write concern) を指定して、2 つのレプリカセット ノードに確認応答を要求する方法を示しています。 次に、コードはこのオプションを持つClientを作成します。

uri := "mongodb://<hostname>:<port>"
wc := writeconcern.W(2)
opts := options.Client().ApplyURI(uri).SetWriteConcern(writeconcern.New(wc))
client, err := mongo.Connect(context.TODO(), opts)

読み取り保証(read concern)オプションを使用すると、クライアントがクエリから返すデータを決定できます。 デフォルトの読み取り保証 (read concern) レベルは "local" です。つまり、クライアントはインスタンスの最新データを返しますが、そのデータがレプリカセットのノードの過半数に書き込まれたことは保証されません。

MongoDB Go ドライバーにはreadconcernパッケージが用意されており、レプリカセットの読み取り保証(read concern)を指定できます。 ReadConcernタイプのSetReadConcern()メソッドを使用して読み取り保証を設定します。 ReadConcernタイプでは、読み取り保証を指定するための次のメソッドがあります。

方式
説明
Available()
クエリはインスタンスからデータを返しますが、そのデータがレプリカセットのノードの大半に書き込まれたことを保証するものではありません。 詳細については、「読み取り保証 (read concern) 」の仕様を参照してください。
Linearizable()
クエリは、 majorityの 書込み保証(write concern) を使用して発行され、読み取り操作の開始前に確認されたすべての成功した書込みを反映したデータを返します。 詳細については、「読み取り保証 (read concern) 」の仕様を参照してください。
Local()
クエリは、インスタンスの最新データを返します。 詳細については、「読み取り保証 (read concern) 」の仕様を参照してください。
Majority()
このクエリは、レプリカセット内の過半数のノードに書き込まれたことが確認されたインスタンスの最新データを返します。 詳細については、「読み取り保証 (read concern) 」の仕様を参照してください。
Snapshot()
クエリでは、特定の時点におけるmongodインスタンスのデータの完全なコピーが返されます。 マルチドキュメントトランザクション 内の操作でのみ使用できます。 詳細については、「読み取り保証 (read concern) 」の仕様を参照してください。

次のコードは、「majority」の読み取り保証(read concern)を指定する方法を示しています。 次に、コードはこのオプションを持つCollectionを選択します。

rc := readconcern.Majority()
opts := options.Collection().SetReadConcern(rc)
database := client.Database("myDB")
coll := database.Collection("myCollection", opts)

読み込み設定(read preference)オプションは、MongoDB クライアントが読み取り操作を レプリカセット のノードにルーティングする方法を指定します。 デフォルトでは、アプリケーションの読み取り操作は、 レプリカセット 内の プライマリ を対象に行われます。

読み込み設定 (read preference) は、読み込み設定 (read preference) モードと、オプションのタグセット リストmaxStalenessSecondsオプション、およびヘッジされた読み取りオプションで構成されています。

MongoDB Go ドライバーには、レプリカセットの読み込み設定(read preference)を指定できるreadprefパッケージが用意されています。 読み込み設定(read preference)を設定するには、 SetReadPreference()メソッドをReadPrefタイプで使用します。 ReadPref型には、読み込み設定(read preference)を指定するための次のメソッドがあります。

方式
説明
Nearest()
クライアントは、指定されたレイテンシのしきい値に基づいて、プライマリまたはセカンダリである、ランダムに選択された適格なレプリカセットのメンバーから読み取ります。 詳細については、読み込み設定(read preference) サーバー マニュアルのエントリを参照してください。
Primary()
クライアントは、現在のレプリカセット プライマリ ノードから読み取ります。 詳細については、読み込み設定(read preference) サーバー マニュアルのエントリを参照してください。
PrimaryPreferred()
クライアントは、ほとんどの場合、プライマリ ノードからデータを読み取ります。 プライマリが使用できない場合、操作はセカンダリ ノードから読み取られます。 詳細については、読み込み設定(read preference) サーバー マニュアルのエントリを参照してください。
Secondary()
クライアントはレプリカセットの セカンダリ メンバーから読み取ります。 詳細については、読み込み設定(read preference) サーバー マニュアルのエントリを参照してください。
SecondaryPreferred()
クライアントはほとんどの場合、セカンダリ ノードからデータを読み取ります。 セカンダリが使用できない場合、操作はプライマリ ノードから読み取られます。 詳細については、読み込み設定(read preference) サーバー マニュアルのエントリを参照してください。

Tip

または、接続文字列で読み込み設定(read preference)を指定することもできます。詳細については、サーバーマニュアルの「読み込み設定(read preference)オプション」に関する記述を参照してください。

次のコードは、セカンダリ ノードから読み取るための読み込み設定 (read preference) を指定する方法を示しています。 次に、コードはこのオプションを持つDatabaseを選択します。

rp := readpref.Secondary()
opts := options.Database().SetReadPreference(rp)
database := client.Database("myDB", opts)

このガイドの概念の詳細については、次のサーバー ドキュメントを参照してください。

←  コマンドの実行集計 →
フィードバックを送る
© 2022 MongoDB, Inc.

会社概要

© 2022 MongoDB, Inc.