4

私は現在、特定の組織群のために専用のSaaSサービスを開発しているチームの一員です。私はPHPとmySQLの知識があるので、これらのプラットフォームで開発しています。これをクラウドにデプロイし、複数の国でリリースする予定です。

私はデータベース内の組織/メインユーザーを分離することになり、皆さんがどう思うかを見たかったのです。

SaaSが請求書やその他の多くの機密情報を管理する場合、mySQLサーバーでそれを配布するための最良のプロセスは何でしょうか。私は以下のオプションを考えました:

1)すべての情報を単一のデータベースの単一のテーブルに配置し、組織の識別行で区切る。-数千のユーザーと10,000の行がある場合、安全に見え、遅くなる可能性がありますか?

2)単一のデータベースを持っているが、ユーザーIDでテーブルを分離している。'1000_invoices'-やはり高速かもしれませんが、それほど安全ではありません。

3)組織のサインアップごとに個別のデータベースを作成し、データベースへのアクセスに特定のユーザーを使用し、データベース名をセッション/ Cookieに保存しますか?組織ユーザーごと。

とにかく、私はあなたたちが何が最良の選択肢になると思うのか疑問に思いましたか?上記でない場合、あなたは何をお勧めしますか?なぜ?また、セキュリティに関することは大歓迎です。これまで、大規模な複数組織のアプリケーションを使用したことはありません。前もって感謝します!

4

1 に答える 1

8

私は過去に多数のSaaSアプリケーションを開発しましたが、大規模な「パブリック」SaaSサービス(KashFlow、おそらくSalesforceなど)で使用される「単一アプリケーションの展開、単一データベース」のセットアップはあまり意味がないことがわかりました。理由は次のとおりです。

  • ナンバー1:機密情報を持つクライアント企業は、データがより「安全」であり、データがアプリケーション層を超えてパーティション化されている場合、これらの約束をより簡単に行えることを保証したいと考えています。
  • さまざまなクライアントが、独自の追加データベースフィールド、さまざまなログイン画面のビジュアルデザイン、さまざまな(またはカスタム)システム「モジュール」など、ソフトウェアアプリケーションをカスタマイズしたい場合があります。さまざまなアプリケーションインスタンスを使用すると、これが可能になります。
  • また、少なくとも最初はスケーリングが容易になります。単一のクライアントのアプリケーションを他のサーバーとは別の独自のサーバーにプロビジョニングすることで負荷分散が容易になりますが、単一のアプリケーションでは、スケーラブルにするために開発に長い時間を費やす必要があります。
  • データベースの主キーは操作が簡単です。顧客は、「CustomerID」の値が毎回1ではなく500ずつ増加する理由などの質問を始める可能性があります。
  • 世界中に顧客がいる場合は、巨大なアプリケーションを海外に展開したり、ユーザーに大陸間(つまり低速+遅延)接続を使用させたりするよりも、別の国(独自のローカルサーバーとDBサーバーを使用)で展開をプロビジョニングする方が簡単です。何千マイルも離れた場所にあるサーバーに。

アプリケーションソフトウェアの展開に加えて、数百、場合によっては数千のデータベースを管理するという余分な管理上の負担などの欠点がありますが、プログラムコードを大幅に簡素化することで、価値があります。さらに、多数のシェルスクリプトを使用すると、プロビジョニングと展開の自動化が簡単になります。

于 2012-06-21T23:28:02.540 に答える