最初の背景:
マルチテナント アプリケーションを作成しようとしています。最初に平均スタックを使用して、テナントごとに複数のコレクション (order_tenant1、order_tenant2 など) を作成することを考えました。私たちのDBのコア要件としてトランザクションの必要性を感じたので、自分自身をRDBMSのようにmysqlとmariaDBに開放しまし た。関連するデータを取得、更新、挿入するためのビューを作成する方法を詳細に説明しているブログに出くわしました。 node.jsを使用しているため、テナントとビューのパラメーターは接続文字列を介して定義されます。非常に優れたmysqlのsequelizejsのORMが見つかりました。
実際の問題:
平均スタックの私の経験によれば、server.jsファイルでmongo接続を定義し、アプリケーションはアプリケーションの開始時にそれらの接続を確立してそれらを維持します。
どうすれば複数のsequelizejs(またはそのこととデータベース接続)オブジェクトを持つことができますか特定のテナントに属するユーザーに従ってデータベースに接続し、アプリケーションに適切なオブジェクトを提供して、ビジネス ロジックを実行する
1)アプリケーションが取得するすべてのリクエストで新しい接続オブジェクトを作成し、リクエストが処理された後にそれを閉じる必要がありますか?
2)または、ノード、エクスプレス、またはsequelizejsでこれを処理するより良い方法はありますか!?
編集:上記のブログで述べたように、tenant_id を列として含む行ベースのアプローチを使用することにしましたが、sequelizejs オブジェクトを介してデータベースへの dirrent 接続オブジェクトを維持する方法について苦労しています。 :1 は、接続文字列でテナント ID 1 の詳細を使用して作成されたデータベースと通信するための "db" というオブジェクトを使用してサーバー化する必要があるアプリケーションに要求を送信します。これは、テナント ID に属するユーザーと同じです。 :2同じオブジェクト、つまり「db」で提供する必要がありますが、提供する必要があるテナントごとに異なる接続文字列 (データベース接続オブジェクト) を維持したいため、接続文字列でテナント ID 2 の詳細を使用して作成する必要があります。