1. ホーム
  2. マイスル

[解決済み】データベースのシャーディングとパーティショニングの比較

2022-04-04 13:21:57

質問

最近、スケーラブル・アーキテクチャについて読んでいます。その中で、データベースに関して常に出てくる言葉が2つあります。 <項目 シャーディング と パーティショニング . 説明を調べても、結局よくわからない。

スタックオーバーフローの専門家は、私が基本的なことを正しく理解するのを助けてくれるでしょうか?

  • とはどのような違いがあるのでしょうか? シャーディング パーティショニング ?
  • というのは本当でしょうか? 「すべてのシャード化されたデータベースは本質的に(異なるノードにわたって)パーティション化されているが、すべてのパーティション化されたデータベースは必ずしもシャード化されていない」。 ?

解決方法は?

パーティショニングは、テーブルやデータベース間でデータを分割することの総称です。シャーディングはパーティショニングの一種であり、水平パーティショニングと呼ばれるものの一部です。

ここでは、(通常)複数のインスタンスまたはサーバーにスキーマを複製し、データを探すためにどのインスタンスまたはサーバーを探すか、何らかのロジックまたは識別子を使用します。この種の識別子は、しばしば「シャード・キー」と呼ばれます。

一般的なキーレスロジックは、アルファベットを使ってデータを分割することです。A-Dはインスタンス1、E-Gはインスタンス2など。顧客データはこれによく適しているが、ある文字が他の文字よりも一般的であることを考慮に入れて分割しないと、インスタンス間のサイズが多少間違って表現されることになる。

もう一つの一般的な手法は、インスタンス間で一意のキーを保証するキー同期システムまたはロジックを使用することである。

よく知られている例としては、Instagramが初期にパーティショニングをどのように解決したかが勉強になります(下記リンク参照)。彼らはごく少数のサーバでパーティショニングを開始し、Postgresを使って最初からデータを分割していました。その数少ない物理シャー ドに数千の論理シャー ドを配置していたと思います。2012年の彼らの素晴らしい記事をこちらでお読みください。 インスタグラムエンジニアリング - シャーディングとID

こちらも合わせてご覧ください。 http://www.quora.com/Whats-the-difference-between-sharding-and-partition