1

この質問は、私の友人が使用しているいくつかのビジネス ソフトウェアの最近の更新に動機付けられています。彼らのアーキテクチャは、これまで Access データベースに基づいていたため、非常に低速でした。データセットを複数の mdb ファイル (sales.mdb、products.mdb、stock.mdb など) に分割していました。彼らは現在、SQL Server Express に移行しており、この構造を維持しています。これらのデータセットごとにテーブルを使用する代わりに、SQL Server 2008 Express の同じインスタンスに異なるデータベースを作成しました。

SQL Server に関する私の (確かに限られた) 理解からすると、これは賢明ではないように思えます。異なるテーブル間の JOIN を防ぎ、1 つではなく 2 つの DB 接続を維持するために販売と在庫のデータを必要とするプログラムが必要になるからです。

ソフトウェア ベンダーのコンサルタントの 1 人は、これにより SQL Express の RAM の制限である 1 GB の物理メモリを回避できると主張しました。彼は、これはデータベースごとであると述べていますが、MSDN から収集した情報によると、実際にはインスタンスごとであるため、ここでは何も得られません。

同じビジネス ドメインのデータをテーブルではなくデータベースに分割する正当な理由はありますか? (私が考えることができるのは、テーブルごとではなくデータベースごとにアクセスを制限できるということですが、これはこの特定のケースでは関係ありません。プログラムのすべてのモジュールがすべてのデータベースにアクセスできます。)

4

2 に答える 2

2

データベース間で結合を作成できるため、これは大きな問題ではありません。一般に、分割する非常に正当な理由がない限り、すべてを 1 つのデータベースに保持することをお勧めします。これらの理由は互換性に関係している可能性があります。たとえば、互換モード 80 のデータベースに対して実行する必要のあるアプリケーションがある場合や、何か - 一部のデータをその互換性レベルで別のデータベースに分離することを選択する場合があります。または、別のサーバーに簡単に移動できるようにしたい機能の大部分がある場合 (データ移行または ETL など)。

アプリケーションに制限があるようです。

于 2012-12-18T05:59:04.723 に答える
1

SQL Server Express のバージョンによっては、データベースを分割すると、より多くのデータ ストレージを使用できる場合があります (2005 には 4 GB のデータベース制限があり、2008 には 10 GB です)。

インスタンスあたりの 1 GB RAM の制限に加えて、SQL Server Express もインスタンスあたり 1 CPU に制限されていると思います。

HABOさんの意見に賛成です。データベース全体で参照整合性を強制することはできず、すべてアプリケーション内で管理する必要があります。

于 2012-12-18T08:03:12.477 に答える