「最善の方法」の質問には注意してください。これは、この質問が意見に基づいているため、トピックから外れていることを示しています。
あなたのアプリケーションが完全にクローズドソースである場合 (私はそうだと思います)、それは問題ではありません。すべてのクライアント実装が全体的なソフトウェア パッケージの一部になるため、必要に応じてマスター データベースに直接アクセスできます。
そうは言っても、スケーラビリティと保守性のためには、認証 API インターフェイスを構築してそれを使用する方がおそらく良い考えです。そのため、クライアント ソフトウェアのデータベース接続コンポーネントを管理する必要はありません。
同意した。この種のシナリオでは、特にマルチテナンシーで答えを見つけるのは非常に困難です。
クローズドソースとはどういう意味ですか?
マスター データベースからデータを取得するための認証 API を使用できる場合、アプリケーション内でのみアクセスが許可され、外部からアクセスできないようにホストするにはどうすればよいでしょうか? 後で、外部ユーザーにもサービスを公開する必要があります。この場合、これを今から公開するか、後で別のサービスで作業する方が良いですか? NuSOAP 以外であなたが知っている最高の PHP Web サービス ライブラリは何ですか?
これで問題ありません。ユーザーはすべての実装に共通ですが、ロールは各クライアント実装に固有です。これは、最初に認証してから、ログインしたユーザーにクライアントの役割を割り当てるという点で、アプローチしている方法が正しいことを示しています。これをローカル データベースに対して確認し (明らかに)、ユーザーのセッションに割り当てる必要があります。彼らの訪問の間、それは固執します。
それは正しいです!ユーザーはすべての実装に共通であり、これはマスター データベースに保存され、個々のテナント データベースには保存されません。つまり、テナント アプリケーションごとに、テナントは請求単位、アカウント、したがって、これらの user_id と role_id はテナントのデータベースに格納されます。user_id がマスターデータベースのユーザーテーブルに直接マップされていないので、大丈夫かどうか尋ねたのはそのためです。
これは広すぎて答えられません。クライアントのデータはあなたのものではない可能性があるため、ここでも注意が必要です。
とりあえず、スーパー管理者がすべてのテナントのロールを知りたいと仮定しましょう。この場合、すべてのテナント データベースからデータを取得するにはどうすればよいでしょうか? これにはビューを使用しますか、それとも mysql を使用しているため、どうすればこれを達成できますか?
繰り返しますが、非常に大まかですが、各クライアント データベースのデータベース統計について MySQL サーバーにクエリを実行することで、このようなことを達成できると思います。また、クライアントのファイルをホストするサーバーにクエリを実行することで、ファイル ストレージについても同じことを行うことができると思います。
これについては非常に申し訳ありません。基本的には、テナント データベースの使用状況を追跡して、合意した量を超えているかどうかを確認したいと考えています。それが理由です。これを達成する方法があることを願っています。
また、サイトの画像はハードディスクに保存するのと、データベースにBLOBとして保存するのとではどちらが良いでしょうか?結局のところ、スケーラビリティと、より少ない帯域幅消費で画像をロードする方法について考える必要がありますか?