6章パーティショニング

私たちがシーケンシャルな処理から離れ、コンピュータを制約しないようにしなければならないことは明らかです。私たちは定義を述べ、データについて優先順位づけと記述をしなければなりません。私たちが述べるべきは、手順ではなく関係性なのです。

――Grace Murray Hopper, “Management and the Computer of the Future”(1962)

5章では、レプリケーションについて議論しました。これは、同じデータのコピーを複数のノードに持つことでした。非常に大規模なデータセットの場合、あるいはクエリのスループットが非常に高い場合はこれだけでは十分ではありません。データをパーティションに分割する必要が出てきます。これはシャーディングとも呼ばれます†1

[注記]

用語の混乱

ここでパーティションと呼んでいるものは、MongoDB、Elasticsearch、SolrCloudではシャードと呼ばれています。これはHBaseではリージョン、Bigtableではタブレット、CassandraやRiakではvnode、CouchbaseではvBucketと呼ばれています。とはいえ最も確立されている用語はパーティショニングなので、本書ではこの呼び方を使っていきます。

通常、パーティションではそれぞれのデータの断片(各レコード、行、あるいはドキュメント)が厳密に1つのパーティションに属するものと定義されます。これを実現する方法はいくつもあり、本章ではそれらを詳しく見ていきます。実質上、それぞれのパーティションは独立した小さなデータベースですが、データベース全体としては複数のパーティションを同時に扱う操作がサポートされていることもあります。 ...

Get データ指向アプリケーションデザイン ―信頼性、拡張性、保守性の高い分散システム設計の原理 now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.