私たちのアプリケーションはWeb上で実行され、ほとんどが照会ツールであり、いくつかのトランザクションを実行します。Oracleデータベースをホストします。アプリには、顧客ごとに常に異なるOracleのインスタンスがあります。顧客とは、会社の従業員にサービスを提供するために私たちに支払いをする会社であり、通常、顧客1人あたり10,000〜25,000人の従業員です。数百人のお客様をお迎えする予定です。私たちは数年ごとにメジャーリリースを行っており、その新しいリリースへの移行は困難です。お客様のサイトに数週間チームを配置し、新しい機能を説明し、そのお客様に合わせて運転データを設定する場合があります。
コストを削減するために、マルチクライアント化を検討しており、すべてのお客様を大規模なWindowsServer2008サーバー上の単一の共有Oracle11gインスタンスに配置します。それが賢明かどうか疑問に思います。
顧客ごとに個別のインスタンスを持つことにはいくつかの利点があります。これらが偽物かどうか教えてください。重要性の低下についての私の大まかな推測では:
お客様のMyCorpとYourCoは、スキーマに重大な変更が加えられたときに別々に移行できます。(マルチクライアントの場合、300人以上の顧客を一晩で移行します!?!)
MyCorpのデータは、他の顧客に影響を与えることなく、簡単にバックアップおよび(!!!)復元できます。
MyCorpのデータは、開発者がコードを正しく取得したり、DBAが構成を正しく取得したりすることなく、競合他社のYourCoのデータから安全に分離されます。
1人の顧客が災害に遭った場合(誰かが誤って全員の給与を2倍にし、給料日後にエラーが発見された場合)は他の顧客に影響を与えないため、複数のインスタンスのリスクは低くなります。すべてのお客様(おっと、新しいDBA、そして突然すべての参加者が同じSSNを持っている!?!)に影響を与えた災害により、当社が倒産する可能性があります。
1台のサーバーに1つのインスタンスがあると、単一障害点が発生し、ハリケーンによって建物が倒壊した場合、顧客ベース全体が廃業します。複数のサーバー上の複数のインスタンスにより、地理的な分散が可能になります。大災害がお客様の大部分に影響を与えることはなく、他の地域の影響を受けていないサーバーが障害のあるサーバーの負荷を引き受ける可能性があります。
データベースが小さいため、パフォーマンスが向上します(10,000行と約50テーブルの2,000,000行)。
MyCorpのオフィスが(ほとんど)1つの地域にある場合、MyCorpのインスタンスは地理的に同じ場所に配置できるため、ネットワークの遅延によってパフォーマンスが低下することはありません。同じ理由で、グローバルクライアントにより良いサービスを提供することができます。
MyCorpはデータベースを社内に持ち込みたいので、インスタンスを簡単にエクスポートして、MyCorpのデータを取得できます。
インスタンスを異なるサーバーに配置できるため、負荷分散が容易になります(これはWebファームを使用します)。
DEVまたはQAインスタンスが必要な場合、データがはるかに少ないため、実際のインスタンスのクローンを作成してデータを匿名化する方が簡単です。
それらは十分に小さいため、開発者は独自のインスタンスをローカルで実行できるため、VPNの煩わしさを感じることなく、空港で待機している間や飛行中にコードを処理できます。
Q1:個別のインスタンスの他の利点は何ですか?
データベーススキーマを変更し、すべての顧客を1つのOracleインスタンスにマージして、1台の大規模なサーバーで実行することを検討しています。
マルチクライアントインスタンスアプローチの利点は次のとおりです。最も重要なのは最初です(私のWAG)。これらが偽物である場合は、狙撃してください。
DBAは、数百ではなく1つのインスタンスを維持するだけでよいため、作業が少なくて済みます。DBAの作業が少ないということは、この変更の主な動機である安価なことを意味します。
たった1つのインスタンスで、DBAはパフォーマンスを最適化するためのより良い仕事をすることができます。適切なインデックスを追加し、SQLを確認する時間があります。
スキーマとアプリが1つしかないため、開発者はアプリケーションのデバッグと拡張が簡単になります(数百のインスタンスがある場合は、スキーマのバージョンごとに異なるバージョンのアプリがあり、数十のスキーマバージョンが存在する可能性があります)。 )。これにより、コストも削減されます。別の方法は、(1)この顧客が実行しているバージョン、および(2)対応する開発環境、コード、およびデータベースの再作成に苦労して、すべてのデバッグセッションを開始する必要があることです。(各パッチとリリースのコードとデータベースインスタンスを含む仮想マシンが必要です!)
オラクルのライセンスは、重さに関係なくサーバーごとに価格設定されているため、より安価です(または何か-私は主題について何も知りません)。
インスタンスが1つしかないため、データベースはWebセッションデータの実行可能な永続ストアになります。
一部のデータベース操作は、1つのマルチクライアントインスタンスを使用すると簡単になります。たとえば、参加者(またはその配偶者)がどの顧客のために働いているかについて迷っているときに参加者を見つけることができます。すべての名前が1つのテーブルにあります。顧客間での報告は簡単です。
Q2:1つのインスタンスに複数のクライアントがあることのその他の利点は何ですか?
Q3:どちらのアプローチが良いと思いますか(なぜ)?顧客ごとのインスタンス、または1つのインスタンスのすべての顧客?
マルチクライアントインスタンスが1つあると、移行がほぼ不可能になるのではないかと心配しています。これは取引のキラーです...
...古いものと新しいものの2つのマルチクライアントインスタンスを持つような妥協案がない限り。その場合、参加者の検索やレポート作成などのクロスインスタンスソリューションを設計して、顧客が1つのマルチクライアントインスタンスから次のインスタンスに何も中断することなく移動できるようにします。