Understanding Where Data Is Stored

GemFire XD uses a table's partitioning column values and the partitioning strategy to calculate routing values (typically integer values). It uses the routing values to determine the "bucket" in which to store the data.

Each bucket is then assigned to a server, or to multiple servers if the partitioned table is configured to have redundancy. The buckets are not assigned when the table is started up, but occurs lazily when the data is actually put into a bucket. This allows you to start a number of members before populating the table.

Note: If you intend to immediately load a new, partitioned table with data, use the SYS.CREATE_ALL_BUCKETS procedure to create the buckets before loading data. This best practice ensures that partitions are balanced even if you rapidly load data into the table using concurrent threads.

Partitioned Data in Buckets

If you set the redundant-copies for the table to be greater than zero, GemFire XD designates one of the copies of each bucket as the primary copy. All writes to the bucket go through the primary copy. This ensures that all copies of the bucket are consistent.

The Group Membership Service (GMS) and distributed locking service ensure that all distributed members have a consistent view of primaries and secondaries at any moment in time across the distributed system, regardless of membership changes initiated by the administrator or by failures.