1

マルチテナントSQLServerデータベースの上に配置されたSoftwareasa Service(SaaS)Webアプリケーションを維持しています。システムには約200のテーブルがあり、これは100列をわずかに超える最大のテーブルであり、最終的にデータベースのサイズは約10ギガバイトでした。データを入力してレポートを実行するたびに、約25のクライアント企業がアプリケーションを使用しています。

シングルインスタンスアーキテクチャは非常に効果的に機能しています。毎月すべてのクライアントにリリースされる新機能を設計および開発することができます。各クライアントエクスペリエンスは、フィーチャートグル、データディクショナリのカスタマイズ、CSSスキニングなどを使用して構成できます。

私たちの典型的なクライアントは、いくつかの支店、1つの本社、そして時には独自の社内ITソフトウェア開発チームを持つ企業です。

現在直面している問題は、マルチテナントデータベースに現在保存されているデータに基づいて、レポート、データウェアハウジング、ダッシュボードを開発するために、いくつかのクライアントが独自の内部プロジェクトに取り組んでいることです。これらのプロジェクトの数と洗練度は時間の経過とともに増加する可能性が高いと考えており、効果的に対応したいと考えています。

現在、クライアントがテーブルからレコードの完全なダウンロードを取得するために呼び出すことができるセキュリティで保護されたXMLWebサービスを公開する「ライト」ソリューションがあります。それらはテーブルを指定し、それを固定数の列を返す専用のストアドプロシージャにマップします。現在、クライアントは、管理しているローカルSQLデータベースに一晩で約20個のテーブルをプルしています。一部のクライアントは、これらのテーブルのいくつかに数万のレコードを持っています。

この「ライト」アプローチにはいくつかの欠点があります。1)各クライアントは独自のデータプルメカニズムを開発および維持し、すべてのロギング、エラー処理などを処理する必要があります。2)データベーススキーマは絶えず拡張および変更されています。呼び出しているストアドプロシージャの列数は固定されていますが、既存の列を展開すると(たとえば、varchar(50)をvarchar(100)に変換する)、ローカルの列サイズを突然超えたため、プルが失敗することがあります。データベース。3)クライアントごとに構築された何百もの異なるストアドプロシージャと、それらの特定のダウンロードの期待値を蓄積し始めています。これは管理の面倒です。4)より多くのデータを求めるクライアントの要求に対応するのに苦労しています。「シェル」スキーマ(つまり、データが含まれていないデータベースのコピー)を提供し、プルする必要のあるテーブルを選択するように依頼します。

長い質問で申し訳ありませんが、私が探しているのは、他のチームが成功を収めているこの問題へのアプローチです。すべてのデータを最も簡単に使用できる方法で安全に公開したいと考えていますが、データ交換のネゴシエーションやスキーマ変更後のクリーンアップという絶え間ないプロセスに巻き込まれることはありません。

何があなたのために働いたのですか?

ありがとう、

マイケル

4

1 に答える 1

0

私は数年前に同様の演習を行ったSaaS企業で働いてきましたが、ここではおそらくWebサービスが最良のソリューションです。ちなみに、あなたの「欠点」の1つは実際には利点です。データのタイミングと量に関する各顧客のニーズは異なるため、顧客は独自のデータプルを実行するように奨励されるべきです。

ここで、LITEソリューションの代わりに、テーブルごとに個別のCRUD呼び出しと優れたフィルタリング機能を備えたWSDLを構築することを検討する必要があります。また、各テーブルのレコードの変更時刻があることを確認してください。このようにして、顧客は各テーブルをヒットし、最後にプルしたときから更新されたレコードのみをすぐにプルできます。

簡単でしょうか。チャンスではありませんが、スケーラビリティが必要な場合は、それが唯一のルートです。

幸運を祈ります。

于 2012-11-14T23:50:11.273 に答える