[解決済み】データベースのシャーディングとパーティショニングの比較
質問
最近、スケーラブル・アーキテクチャについて読んでいます。その中で、データベースに関して常に出てくる言葉が2つあります。 <項目 シャーディング と パーティショニング . 説明を調べても、結局よくわからない。
スタックオーバーフローの専門家は、私が基本的なことを正しく理解するのを助けてくれるでしょうか?
- とはどのような違いがあるのでしょうか? シャーディング と パーティショニング ?
- というのは本当でしょうか? 「すべてのシャード化されたデータベースは本質的に(異なるノードにわたって)パーティション化されているが、すべてのパーティション化されたデータベースは必ずしもシャード化されていない」。 ?
解決方法は?
パーティショニングは、テーブルやデータベース間でデータを分割することの総称です。シャーディングはパーティショニングの一種であり、水平パーティショニングと呼ばれるものの一部です。
ここでは、(通常)複数のインスタンスまたはサーバーにスキーマを複製し、データを探すためにどのインスタンスまたはサーバーを探すか、何らかのロジックまたは識別子を使用します。この種の識別子は、しばしば「シャード・キー」と呼ばれます。
一般的なキーレスロジックは、アルファベットを使ってデータを分割することです。A-Dはインスタンス1、E-Gはインスタンス2など。顧客データはこれによく適しているが、ある文字が他の文字よりも一般的であることを考慮に入れて分割しないと、インスタンス間のサイズが多少間違って表現されることになる。
もう一つの一般的な手法は、インスタンス間で一意のキーを保証するキー同期システムまたはロジックを使用することである。
よく知られている例としては、Instagramが初期にパーティショニングをどのように解決したかが勉強になります(下記リンク参照)。彼らはごく少数のサーバでパーティショニングを開始し、Postgresを使って最初からデータを分割していました。その数少ない物理シャー ドに数千の論理シャー ドを配置していたと思います。2012年の彼らの素晴らしい記事をこちらでお読みください。 インスタグラムエンジニアリング - シャーディングとID
こちらも合わせてご覧ください。 http://www.quora.com/Whats-the-difference-between-sharding-and-partition
関連
-
[解決済み】MySQL: グループ関数の無効な使用
-
[解決済み】MySQLユーザーDBにパスワードカラムがない - OSXへのMySQLインストール
-
[解決済み] SQLZOO - select from world チュートリアル #13
-
[解決済み] mysqladmin: 'localhost'のサーバーへの接続に失敗しました。
-
[解決済み] ルートユーザーでログインしているのに、phpMyAdminがデータベースを作成する権限がないと言う
-
[解決済み] mysqlのテーブルからユニークキーを削除する方法
-
[解決済み] MySQLデータベースの名前を素早く変更する(スキーマ名を変更する)方法は?
-
[解決済み] MySQLデータベースのテーブルのサイズを取得する方法は?
-
[解決済み] mysqlデータベースのサイズを取得する方法は?
-
[解決済み] MySQLの データベースへの **all** 特権付与
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】MySQL 派生テーブルはすべて独自のエイリアスを持つ必要があります。
-
[解決済み】MySQLのforeachループ
-
[解決済み】MySQLを使用してランダムでユニークな8文字の文字列を生成する方法
-
[解決済み】MySQLで日付を比較する
-
[解決済み] MySQLの グループ関数の無効な使用
-
[解決済み] mysql.pluginテーブルを開くことができません。mysql_upgradeを実行し、作成してください。
-
[解決済み] エラー 1044 (42000)。データベース 'db' へのユーザー ''@'localhost'' のアクセスが拒否されました。
-
[解決済み] mysqladminのフラッシュホストでブロックを解除する方法
-
[解決済み] Mysql: const テーブルを読み込んだ後、不可能な場所に気づいた。
-
[解決済み] 1行目の列 'id' に不正な整数値 '' があります。