stackoverflowポッドキャストから、Fog CreekはFogbugzの顧客ごとにデータベースを使用していることを覚えています。これは、Fogbugz On Demandサーバーに何万ものデータベースがあることを意味すると思います。
Webアプリの開発を始めたばかりで、同様の問題を解決する必要があります(独自の分離データを持つ多くの顧客)。
顧客ごとにデータベースを使用する場合、どのような問題が予想されますか?どうすれば解決できますか?
私の最初の考え
顧客ごとのデータベースの利点
- よりシンプルなデータベーススキーマ
- シンプルなバックアップ-他の顧客に実際に影響を与えることなく、各顧客を順番にバックアップできます。
- 特定の顧客データを簡単にエクスポートできます。
- キャッシュパフォーマンスの向上-よりアクティブなテーブルの1つへの書き込みは、書き込みを実行した単一の顧客にのみ影響します。
- ハードウェア全体で簡単に拡張できます。たとえば、1台から2台のサーバーに移動する必要がある場合、顧客の半分を新しいサーバーに移動するだけです。
欠点
- MySQLは5,000個のデータベースに対応できますか?パフォーマンスは低下しますか?
- スキーマへの変更は、すべてのデータベースに複製するのが難しい場合があります。スキーマのバージョン管理や、データベースをあるバージョンから別のバージョンに移行する方法を理解するスクリプトなど、このための自動化された計画が本当に必要になります。
- すべてのお客様に共通することを行うことは、厄介または不可能かもしれません
- 上記と似ていますが、すべてのお客様に対して実行したい分析は不可能かもしれません。たとえば、すべての顧客の使用状況をどのように追跡する必要がありますか?
USE CompanyData;