0

製品テーブルを多数の小さなテーブルに分割し、そのテーブルを別のサーバーに配置したいと考えています。しかし、私にはいくつかの問題があります。製品IDでデータベースをシャーディングする場合。誰かが 1 つの製品カテゴリをリストするときに、すべての製品をいくつかのカテゴリに属する​​ようにするにはどうすればよいですか。誰もが良い理想を得ますか?

4

2 に答える 2

0

これは良い質問です。いくつかのレコードを別のデータベースに配置するだけで、他のテーブルでそれらのレコードとの結合を行うつもりがない場合は、アプリケーションにレコード 1-10000 をシャード 1 に挿入するように指示するだけです。シャード 2 では 10001 -20000 です。しかし、シャード 1 からシャード 2 へのクエリを実行したい場合、それは機能せず、dbShardsのような製品が必要になります。dbShards は優れたシャーディング ツールであり、優れたレビューが寄せられています。また、アプリケーションの全体的なシャーディング戦略を開発するのにも役立ちます。

それが役立つことを願っています。

于 2011-04-20T15:22:39.027 に答える
0

シャーディングの基本的な問題は常に同じです。最初からシャーディングの方法がわからないということです。

テーブルに 1 億行がない場合は、シャーディングを気にする必要がないことは明らかです。シャードは、どのタイプのクエリ パフォーマンスも解決していません。

私は一度、DB で人気があり問題となるものを推測しようとしましたが、惨めに失敗しました。これで、その問題が発生したときに対処する必要があることがわかりました。また、将来このような変更を可能にするために、適切でクリーンなコードを作成する必要があることを理解しています (たとえば、リポジトリ パターンを確認してください)。

また、データベースのパフォーマンスに関する基本的な知識も必要です。それに加えて、遅いクエリを修正し (slowlog は開始するのに適しています)、結合操作を無視します。

于 2015-07-12T21:58:29.203 に答える