1.1.1

Table Of Contents
Figure 3: Partitioned Data in Buckets
If you set the redundant-copies for the table to be greater than zero, SQLFire 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.
Failure and Redundancy
If you have redundant copies of a partitioned table, you can lose servers without loss of data or interruption of
service. When a server fails, SQLFire automatically re-routes any operations that were trying to write to the
failed member to the surviving members.
SQLFire also attempts to re-route failed read operations to another server if possible. If a read operation returns
only a single row, then transparent failover is always possible. However, if an operation returns multiple rows
and the application has consumed one or more rows, then SQLFire cannot fail over if a server involved in the
query happens goes ofine before all the results have been consumed; in this case the application receives a
SQLException with SQLState X0Z01. All applications should account for the possibility of receiving such an
exception, and should manually retry the query if such a failure occurs..
Read operations are also retried if a server is unavailable when a query is performed. In this gure, M1 is reading
table values W and Y. It reads W directly from its local copy and attempts to read Y from M3, which is currently
ofine. In this case, the read is automatically retried in another available member that holds a redundant copy
of the table data.
63
Partitioning Tables