1

私のサイトでは多くの製品を利用できますが、それらは完全に異なるサイト (ドメイン) に分類されます。

私の質問は、すべての製品を 1 つのデータベースにまとめて ID を使用してサイトを区別する方がよいでしょうか、それともサイトごとにテーブルや DB を設定する必要があるのでしょうか?

ここに私の考えがあります

別々のデータベース

  • バックエンドからの読み取りが容易
  • より良い分類
  • バックアップがより困難になる
  • スキーマを変更する必要がある場合は、すべてのデータベースにプッシュする必要があります

同じデータベース

  • すべてが 1 か所に
  • 扱いにくくなる可能性があります
  • 1 つのデータベースのファイル サイズが膨大になり、ルックアップに問題が生じる可能性があります

どの方法が最適で、その理由についてアドバイスをいただけますか?

4

4 に答える 4

1

あなたはあまり多くの詳細を提供しませんでした (これにより、適切な回答を提供することが難しくなります)。ただし、質問で使用する言葉を選択したことから、これは異なる「スキン」を持つ単一のアプリケーションであると私は信じるようになりました。

私のサイトでは多くの製品を利用できますが、それらは完全に異なるサイト (ドメイン)に分類されます。

私の仮定では、cool-widgets.com、awesome-sprockets.com、neato-things.com など、いくつかの異なるストア フロントを持つ 1 つの Web ストアを持つことになります。CSS スキンを除けば、これらはすべて同じです。またはそのような単純なもの。ストアの管理はすべて中央システムで行われ、ドメイン名は単にカテゴリ名として機能します。

そのため、任意の基準 (category_ name=='cool-widges.com') を使用して同じデータを 2 つの異なるコンテナーに分割することは、アンチパターンであるデータ分割です。ユーザー名 ([Users$A-to-M] と [Users$N-to-Z]) に基づいて 2 つの異なるユーザー テーブルが存在しないのと同じように、2 つの異なるテーブル (またはデータベース) を使用してもほとんど意味がありません。 ) カテゴリ名。

ユーザー管理、管理、注文処理、データ インポートなど、カテゴリ間で共通のコードが多数あります。ストア表示コードのカテゴリ。それだけでなく、分離のバグがより明白になります。価格比較ページには、3 つの店舗すべての商品が表示されます。アグリゲーションのバグははるかに少なくなり、4 つのストアのうち 3 つだけが更新されました。これがアンチパターンである理由です。

補足: はい、データの分割に用途があると言う前に (実際に使用されています)、それらの用途はパフォーマンスの問題が発生したずっと後に発生します。多くの本格的なデータベース プラットフォームでは、間抜けなデータ モデルを作成しないように、舞台裏でパーティショニングが許可されています。

于 2009-09-17T01:13:52.937 に答える
1

すべてのサイトでデータを共有する必要がある場合は、データ転送が不要になるため、同じデータベースを共有することをお勧めします。また、データはより集中化されています。

すべてのサイトでデータを共有する必要がない場合は、サイトごとに 1 つのデータベースを分割するとよいでしょう。テーブル構造を更新する難しさについて言えば、データベースの変更を単純に記録し (SQL ファイルに ALTER、UPDATE、DELETE クエリを保存)、同じ SQL ファイルで他のデータベースを更新するだけです。

別のデータベースに保存することも、セキュリティに役立つ場合があります。サイトごとに異なるユーザー権限を設定できます。1 つが侵害された場合、他のサイトを保護します。

また、データベースが明確に分割されている場合、データベースを簡単に維持および追跡できます。

于 2009-09-15T06:49:09.770 に答える
0

すでに述べたように、どちらのオプションにも長所と短所があります。2 つの店舗について話しているので、おそらくそれほど重要ではありません。

ただし、自問したいいくつかの質問があります。

  • 本当に 2 店舗になるのでしょうか、それともそれ以上になるのでしょうか? 複数ある場合は、1 つのデータベースの方が優れている可能性があります。
  • 製品は本当に同じですか?商品の種類が異なるため (たとえば、自動車と食品、保存する情報の量と性質がまったく異なるため)、1 つの一般的なデータベースに商品を絞り込む必要がある場合は、そうしないでください。代わりに 2 つのデータベース/テーブルを使用してください。

中心的な質問は、将来的により精巧になる可能性が最も高いのは、店舗ですか、それとも製品ですか?

于 2009-09-15T06:45:23.787 に答える
0

別のデータベースの方が簡単だと思います。新しいストア データベースを構築できるクイック スタート テンプレート データベースを使用できます。共通のデータベースを作成して、共通のテーブルとストアとそのデータベースのリストを含めることもできます。修飾名を使用して同じサーバー内の任意のデータベースにアクセスできるようになった後、次のことを確認します。

SELECT value FROM CommonDB.currencies WHERE type='euro';
SELECT price FROM OldTownDB.Products WHERE id=newtownprodid;
于 2009-09-15T06:57:05.820 に答える