[解決済み】シャーディングとは何ですか、なぜそれが重要なのですか?
質問
シャーディングとは、切り刻まれたデータ(シャード)を、文脈上意味のある扱いやすいアグリゲートに戻すことだと理解しているつもりです。 これは正しいのでしょうか?
更新情報 : 私はここで苦労しているようです。 私の意見では、アプリケーション層はデータをどこに保存するかを決定する役割を担うべきではないと思います。 せいぜい、ある種のシャードクライアントであるべきだと思います。 どちらの回答も、「何をするか」については答えていますが、「なぜそれが重要か」という点については答えていません。 明らかにパフォーマンスが向上する以外に、どのような意味があるのでしょうか? その利益はMVC違反を相殺するのに十分なのか? シャーディングは非常に大規模なアプリケーションで重要なのか、それとも小規模なものにも適用できるのか?
どのように解決するのか?
シャーディングは、データベースの水平パーティショニングの別名です。この用語を検索すると、より明確に理解できるかもしれません。
から ウィキペディア :
水平パーティショニングとは、データベーステーブルの行を列で分割するのではなく、別々に保持する設計原理である(正規化の場合)。各パーティションはシャードの一部を構成し、シャードは別のデータベースサーバーや物理的な場所に配置されることがあります。利点は、各テーブルの行数が減ることです(これにより、インデックスのサイズが小さくなり、検索性能が向上します)。シャーディングがデータの現実的な側面(ヨーロッパの顧客とアメリカの顧客など)に基づいている場合、適切なシャードメンバーシップを簡単かつ自動的に推測し、関連するシャードのみにクエリーを発行することが可能であろう。
シャーディングについて、もう少し詳しく説明します。
<ブロッククオートまず、各データベースサーバーは同じテーブル構造を持ち、同一であること。次に、データレコードはシャーデッドデータベースで論理的に分割されます。パーティションド・データベースとは異なり、完全なデータレコードは1つのシャードのみに存在し(バックアップや冗長性のためのミラーリングがない限り)、すべてのCRUD操作はそのデータベースだけで実行されます。しかし、これは論理的なデータベースをより小さな部分に組織化する異なる方法を表しています。
更新してください。 MVCを壊すことはないでしょう。データを格納する正しいシャードを決定する作業は、データアクセスレイヤーによって透過的に行われるでしょう。そこでは、データベースのシャード化に使用した基準に基づいて、正しいシャードを決定する必要があります。(アプリケーションの具体的な側面に基づいて、データベースをいくつかの異なるシャードに手動でシャードしなければならないように)。そして、データベースから/データベースへのデータのロードとストアの際に、正しいシャードを使用するように注意する必要があります。
もしかしたら この例 をJavaのコードで書くと、多少わかりやすくなります(だいたいは ハイバーネートシャード プロジェクト) で、実際のシナリオでどのように動作するのかを説明します。
を解決するために、"
why sharding
"です。主に超大規模なアプリケーションにのみ使用され
たくさん
のデータ。まず、データベースへの問い合わせの際の応答時間を短縮することができます。次に、1台の大きなサーバーでは足りなくなる可能性がある代わりに、より安価なローエンドマシンを使ってデータをホスティングできるようになります。
関連
-
mysql reports Access denied; you need (at least one of) SUPER privilege(s) for this operation
-
DB2v10.5Express-Cのインストール
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JSONPとは何か、なぜ作られたのか?
-
[解決済み] MVPとMVC、その違いは何ですか?
-
[解決済み] メソッドと関数の違いは何ですか?
-
[解決済み] Subversionリポジトリにおける「branch」、「tag」、「trunk」の意味とは?
-
[解決済み] (関数型)リアクティブプログラミングとは?
-
[解決済み] アプリケーション開発者が陥りやすいデータベース開発の失敗例【終了しました
-
[解決済み】「INNER JOIN」と「OUTER JOIN」の違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
ORA-65096 無効な共通ユーザー名またはロール名
-
アプリケーションから DB2 SQL Error が報告され続けます。SQLCODE=-302, SQLSTATE=22001, SQLERRMC=null, DRIVER=4.17.29
-
PDOデータベース接続エラー。SQLSTATE[HY000] [2002] そのようなファイルやディレクトリはありません。
-
db2 エラー sqlcode=-420 自動型変換問題
-
Linuxでmysql-5.7.30をインストールするための詳細な手順
-
ビューの作成 SQL: SQL Server でのビューの作成
-
データベース接続の問題点基礎となるデータベースから接続を取得できない!
-
[解決済み] postgresql のセッション/接続を切断する
-
[解決済み] VARCHAR(255) が(他の長さではなく)頻繁に使用されているのを見るのは、何か理由があるのでしょうか?
-
[解決済み] サロゲートキーとナチュラルキー/ビジネスキーの比較【終了しました