2017-03-11 12 views
0

私はこの主題が多くの人の間で議論されていることを知っていますが、私はあなたの意見を得たいと思う特定の問題があります。 これはコーディング上の問題ではないため、事前にお詫び申し上げます。複数テナントDB接続の管理

私は自己学習型の開発者であり、CS度に曝されていないか、いかなる種類のものでもありません。私が知っているすべてのものの大部分はウェブを通じて学ばれます。

フロントエンド用に角度を使用するマルチテナントアプリ、バックエンド/ api接続用のlaravel、データを保存するmysqlを開発する予定です。

私はテナントを識別するためにログイン時に入力する必要がある2文字または3文字(後で決定する)で識別される各テナントに固有のキーを割り当てることを予定しています。それをテナントと呼んでみましょう。 また、サブドメインを使用し、サブドメインをセパレーションのためのテナントIDとして取得することを検討しています。このシナリオのために私がテナントを持っていると仮定します。

また、laravelには2つの接続が定義されています。テナント接続(個々のテナントdbクレデンシャルを保持する)とマスター接続を言うことができます。

masterconnectionには、テナントキー、dbユーザー名、dbパスワード、db名、mysqlサーバーアドレスをそのテーブルの1つに保持するデータベースのdb資格情報が保持されます。

master資格者からdbクレデンシャルを取得すると、laravelはconfigフォルダ内のdatabase.phpファイルで初期化されたテナント接続を更新します。

すべてのAPI呼び出しで、laravelはテナント接続のためにmasterに接続してからdbを呼び出す必要があります。

あなたの意見や経験にはどのように実用的/適用可能ですか?

dbサーバーとアプリケーションサーバーが同じデータセンター内にある場合でも、これが発生する可能性はありますか?

マルチテナント環境で接続するには、この方法を使用しますか?

また、laravelへのすべてのAPI呼び出しで、私はJWTを通じてtenantidを送信する予定です。私は本当にローカルストレージにtenantidを保存するのが快適ではない。

ファイアウォールなどのツールを使用してlocalstorageを操作することはできますか?

私はdbを共有し、同じデータベースでスキーマを使用することを考えましたが、アプリは財務データを保持するように設計されているため、それらを分離することが最適と考えました。私は長所と短所を研究し、各テナントに別々のデータベースを使用することが最良であると判断しました。

ご意見をいただければ幸いです。 申し訳ありません申し訳ありません、間違ったスタックサイトに掲載されている場合。 長い読書時間は残念です。

答えて

0

ほとんどの質問は意見に基づいたものであり、それはある種の話題になります。私はコメントを追加するだけですが、それは合わないでしょう。

dbサーバーとアプリケーションサーバーが同じデータセンター内にあっても、これはどのようなレイテンシになる可能性がありますか?

私は10~20msの遅延が問題を課すとは思わない。いつかあなたがデータベースの問題に直面する場合、自動的にそれがテナントの間違いであると想定しないことが重要であるため、MySQLインデックスの基本を理解してください。通常は悪いインデックスです。

マルチテナント環境で接続するには、この方法を使用しますか?

私はこのように使用しています。唯一の違いは、私のアプリケーションはWeb App + APIではないということです。私はブレードを使用します。

また、laravelへのすべてのAPIコールで、私はJWTを通じてtenantidを送信する予定です。私は本当にローカルストレージにtenantidを保存するのが快適ではない。

プロジェクトの仕様がわかりません。各ユーザーが1人以上のテナントにアクセスできる場合は、これは良いアプローチのようです。各ユーザーがBelongsTo というユニークなテナントの場合は、なぜテナントIDがまったく気になりませんか?トークンで認証されたユーザーからテナントを奪ってください。

ローカルストレージは、ファイヤーバグなどの性質を持つツールを使用して操作できますか?

How to view or edit localStorage

関連する問題