Node.js Sequelize がデータベースの読み取りと書き込みの分離を実装する方法
1. はじめに
同時実行性の高い Web アプリケーションを構築する場合、アプリケーション層で負荷分散ソリューションを採用することに加えて、データベースも高可用性と高同時実行性をサポートする必要があります。最も一般的に使用されるデータベース最適化ソリューションは、マスター/スレーブ レプリケーションを通じてデータを同期し、読み取りと書き込みの分離 (MySQL-Proxy) を通じてデータベースの同時負荷容量を向上させることです。
1. レプリケーションオプションと読み取りと書き込みの分離
Sequelize は読み取り/書き込みの分離をサポートしており、読み取りと書き込みのそれぞれに Sequelize インスタンスを作成するのがより便利です。インスタンスを作成するには、レプリケーション オプションを使用して読み取り/書き込みデータベースを個別に指定します。
Sequelize で読み取り/書き込みレプリケーションを使用するには、Sequelize の初期化時にオブジェクトをそのレプリケーション オプションに渡すことができます。このオブジェクトには読み取りと書き込みの 2 つのプロパティがあります。 write は単一のオブジェクト (つまり、書き込みは単一のサーバーによって処理されます) ですが、read はオブジェクトを含む配列です (つまり、読み取りは複数のサーバーによって処理されます)。各読み取りおよび書き込みサーバーには次の属性を含めることができます:
· host - データベース サーバーのホスト
· port - データベース サーバーのホスト ポート
· username - 検証ユーザー名
· パスワード - 検証パスワード
· データベース - 接続するデータベース
2. Sequelize 読み取り/書き込み分離の例
マスター/スレーブ レプリケーションを使用する複数のデータベース クラスターでは、レプリケーション オブジェクトの読み取り属性に設定できます。サーバー接続の 1 つ以上のコピーを渡すことができる配列。読み取り操作は、すべての SELECT クエリ操作 (読み取り操作) を処理する、データベース クラスター内のスレーブ ノードでの操作と同等です。レプリケーション オブジェクトの書き込み属性は、サーバー接続を表すオブジェクトであり、書き込み操作はすべての挿入、更新、および削除操作 (書き込み操作) を処理します。
var sequelize = new Sequelize('database', null, null, { dialect: 'mysql', port: 3306 replication: { read: [ { host: '192.168.1.33', username: 'itbilu.com', password: 'pwd' }, { host: 'localhost', username: 'root', password: null } ], write: { host: 'localhost', username: 'root', password: null } }, pool: { // 如果需要重写链接池,请在 pool 选项中修改 maxConnections: 20, maxIdleTime: 30000 }, })
すべてのグローバル設定はすべてのノードのコピーに適用されるため、インスタンスごとに個別に指定する必要はありません。上記の例では、データベース名とポート番号がすべてのノード レプリカに適用され、ユーザー名とパスワードのオプションも同様に適用されます。ノード レプリカがグローバル設定を使用しない場合は、レプリケーション オプションで個別に指定する必要があります。
注: Sequelize はマスター/スレーブ レプリケーション ノードとノード間のデータ同期 (レプリケーション) をセットアップしません。これらの操作は実際には MySQL (または使用するデータベース) によって完了します。 Sequelize は、マスター ノードとスレーブ ノードからのデータの書き込みまたは読み取りのみを担当します。
Sequelize は接続プールを使用してノードのコピーを管理します。
デフォルトのオプションは次のとおりです:
{ maxConnections: 10, minConnections: 0, maxIdleTime:1000 }

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











この記事では、NodeJS V8 エンジンのメモリとガベージ コレクター (GC) について詳しく説明します。

ノンブロッキングおよびイベント駆動に基づいて構築されたノード サービスには、メモリ消費量が少ないという利点があり、大量のネットワーク リクエストの処理に非常に適しています。大量のリクエストを前提として、「メモリ制御」に関する問題を考慮する必要があります。 1. V8 のガベージ コレクション メカニズムとメモリ制限 Js はガベージ コレクション マシンによって制御されます

ノード用の Docker イメージの選択は些細なことのように思えるかもしれませんが、イメージのサイズと潜在的な脆弱性は、CI/CD プロセスとセキュリティに大きな影響を与える可能性があります。では、最適な Node.js Docker イメージを選択するにはどうすればよいでしょうか?

Node 19 が正式リリースされましたので、この記事では Node.js 19 の 6 つの主要な機能について詳しく説明します。

Nodejs実行可能ファイルをpkgでパッケージ化するにはどうすればよいですか?次の記事では、pkg を使用して Node プロジェクトを実行可能ファイルにパッケージ化する方法を紹介します。

ファイル モジュールは、ファイルの読み取り/書き込み/開く/閉じる/削除の追加など、基礎となるファイル操作をカプセル化したものです。ファイル モジュールの最大の特徴は、すべてのメソッドが **同期** と ** の 2 つのバージョンを提供することです。 asynchronous**、sync サフィックスが付いているメソッドはすべて同期メソッドであり、持たないメソッドはすべて異種メソッドです。

イベント ループは Node.js の基本的な部分であり、メイン スレッドがブロックされていないことを確認することで非同期プログラミングが可能になります。イベント ループを理解することは、効率的なアプリケーションを構築するために重要です。次の記事では、Node のイベント ループについて詳しく説明します。お役に立てれば幸いです。

ノードが npm コマンドを使用できない理由は、環境変数が正しく設定されていないためです。解決策は次のとおりです: 1. 「システムのプロパティ」を開きます; 2. 「環境変数」->「システム変数」を見つけて、環境を編集します。変数; 3.nodejs フォルダーの場所を見つけます; 4.「OK」をクリックします。
