1. ホーム
  2. database

[解決済み】シャーディングとは何ですか、なぜそれが重要なのですか?

2022-04-12 08:31:50

質問

シャーディングとは、切り刻まれたデータ(シャード)を、文脈上意味のある扱いやすいアグリゲートに戻すことだと理解しているつもりです。 これは正しいのでしょうか?

更新情報 : 私はここで苦労しているようです。 私の意見では、アプリケーション層はデータをどこに保存するかを決定する役割を担うべきではないと思います。 せいぜい、ある種のシャードクライアントであるべきだと思います。 どちらの回答も、「何をするか」については答えていますが、「なぜそれが重要か」という点については答えていません。 明らかにパフォーマンスが向上する以外に、どのような意味があるのでしょうか? その利益はMVC違反を相殺するのに十分なのか? シャーディングは非常に大規模なアプリケーションで重要なのか、それとも小規模なものにも適用できるのか?

どのように解決するのか?

シャーディングは、データベースの水平パーティショニングの別名です。この用語を検索すると、より明確に理解できるかもしれません。

から ウィキペディア :

水平パーティショニングとは、データベーステーブルの行を列で分割するのではなく、別々に保持する設計原理である(正規化の場合)。各パーティションはシャードの一部を構成し、シャードは別のデータベースサーバーや物理的な場所に配置されることがあります。利点は、各テーブルの行数が減ることです(これにより、インデックスのサイズが小さくなり、検索性能が向上します)。シャーディングがデータの現実的な側面(ヨーロッパの顧客とアメリカの顧客など)に基づいている場合、適切なシャードメンバーシップを簡単かつ自動的に推測し、関連するシャードのみにクエリーを発行することが可能であろう。

シャーディングについて、もう少し詳しく説明します。

<ブロッククオート

まず、各データベースサーバーは同じテーブル構造を持ち、同一であること。次に、データレコードはシャーデッドデータベースで論理的に分割されます。パーティションド・データベースとは異なり、完全なデータレコードは1つのシャードのみに存在し(バックアップや冗長性のためのミラーリングがない限り)、すべてのCRUD操作はそのデータベースだけで実行されます。しかし、これは論理的なデータベースをより小さな部分に組織化する異なる方法を表しています。

更新してください。 MVCを壊すことはないでしょう。データを格納する正しいシャードを決定する作業は、データアクセスレイヤーによって透過的に行われるでしょう。そこでは、データベースのシャード化に使用した基準に基づいて、正しいシャードを決定する必要があります。(アプリケーションの具体的な側面に基づいて、データベースをいくつかの異なるシャードに手動でシャードしなければならないように)。そして、データベースから/データベースへのデータのロードとストアの際に、正しいシャードを使用するように注意する必要があります。

もしかしたら この例 をJavaのコードで書くと、多少わかりやすくなります(だいたいは ハイバーネートシャード プロジェクト) で、実際のシナリオでどのように動作するのかを説明します。

を解決するために、" why sharding "です。主に超大規模なアプリケーションにのみ使用され たくさん のデータ。まず、データベースへの問い合わせの際の応答時間を短縮することができます。次に、1台の大きなサーバーでは足りなくなる可能性がある代わりに、より安価なローエンドマシンを使ってデータをホスティングできるようになります。