構築中のオンラインマーケットプレイス製品では、データベースシャーディングソリューションを実装する必要があります。私はシャーディングが初めてで、このフォーラムの記事を読んだ後に、ビジネスエンティティを使ったディレクトリベースのシャーディング戦略が適していると感じています。しかし、私は、このような断片化されたソリューションで採用する非正規化とデータ同期のベストプラクティスについてはまだ明確ではありません。 3つのコアエンティティ、サプライヤ、顧客、および注文があります。私は、注文データの処理の大部分がサプライヤの管理者によって実行されるため、サプライヤIDに基づいてデータベースを破棄することを計画しています。これにより、サプライヤの注文が1つのdbインスタンスからフェッチされ、クロスdbフェッチが排除されます。しかし、この場合、顧客が注文情報を見ると、そのデータは複数のDBインスタンスに存在し、複数のデータベースフェッチが必要になります。そのようなシナリオが分割されたソリューションに現れたときに通常行われる処理。データベースシャーディング戦略
5
A
答えて
11
シャーディングを必要としない可能性が99.9%あると思います。
場合は、シャーディングを必要とする:あなたのデータベースの挿入/更新速度が近くにある、または超えている、あなたはコスト効率ができますが、すでに耕作されている購入し、
- など、あなたの読取り問合せ、レポート作成、バックアップの最も上の読み取り専用で複製する奴隷
- からあなたのマスターサーバーから任意の非必須または無関係更新重いワークロードを移動するための機能分割を行っている
上記の3つすべてに「はい」と明言できない場合は、断片化する必要はありません。
読む
http://www.mysqlperformanceblog.com/2009/08/06/why-you-dont-want-to-shard/
2
データベースシャーディングは、データベースのサイズが複数のTBようになる前であっても、非常に有効であることができます。私たちの主な理由は、メモリ/ CPUとディスクの比率が著しく変化し、MySQLなどのDBMS製品が最近使用されたインデックスとデータをメモリに格納する上で非常に優れているためです。
データシャーディングの問題については、この手法が役立ちます。
一般的なルックアップテーブルに対してグローバルテーブルレプリケーションを頻繁にお勧めしますが、カスタマーオーダーと同じようにアクティブなものはあまり役に立ちません。
いずれの場合でも、シャーディングは非常に費用対効果の高い方法で実装することができ、書き込みのために線形にスケーリングすることができます。
1
また、あなたはまた、あなたはまた、複数のスレーブとマスタースレーブレプリケーションに見ることができ、高速アクセス
のためにデータをキャッシュするようにmemcacheを使用することができ、そのようなMongoDBのかカサンドラ
としてのNoSQLのDBを試してみたいことがあります。
関連する問題
- 1. デフォルト戦略の戦略パターン
- 2. 戦略
- 3. Railsフラグメントキャッシュ戦略
- 4. JIRAコンポーネント戦略
- 5. バックアップ戦略
- 6. Openlayers bbox戦略
- 7. ソフトウェアデザイン戦略
- 8. solrインデックス戦略
- 9. プロジェクト/コードリリース戦略
- 10. 集約戦略
- 11. Golangログ戦略
- 12. UMLデータフローダイアグラム戦略
- 13. ELBルーティング戦略
- 14. データベースプルーニングの戦略
- 15. OAuth2ベアラトークンリフレッシュ戦略
- 16. ロギング戦略
- 17. フェッチ戦略
- 18. Nhibernateフェッチ戦略
- 19. バレーキャッシュアップデート戦略
- 20. UITableViewCellの戦略
- 21. デザインパターン - 戦略パターン
- 22. リファクタリングヘルプ - 戦略パターン
- 23. GPSのトラッキングアプリケーション(戦略)
- 24. ドッカーのボリュームコンテナ戦略
- 25. バージョン管理戦略
- 26. 戦略パターンのバリエーション
- 27. パフォーマンステスト戦略Webアプリケーション
- 28. Firebase +グライド、キャッシング戦略
- 29. kubernetes戦略的マージパッチ
- 30. MendeleyカスタムOAuth戦略
ありがとうございました。まったく同感です。しかし、私が断片化しなければならないと仮定すると、与えられた問題に対してそれを行うための適切な戦略は何か。私の球場の見積もりによれば、DBは過去/過去のデータがないと約1 TBのサイズになります。 – cosmos
私は誰もあなたにそれを教えてくれるとは思っていませんし、アプリケーションのどの部分がデータベースと最も競合しているかについての詳細な情報がない場合はありません。あなたがシャーディングしているなら、他のほとんどの道を尽くしたでしょう。アクセスパターンにもよりますが、1Tbはそれほど大きくなく、1つのボックスでも機能します(関連するフェイルオーバーなど) – MarkR