About
In its most basic form, consistency refers to data values in one data set being consistent with values in another data set at the same point in time.
In an other form, consistency, also known as atomic consistency or linearizability, guarantees that once a write completes, all future reads will reflect that value of the write.
When all applications or thread, see the same data at the same point in time, the system is in a consistent state.
A strict definition of consistency specifies that two data values drawn from separate data sets must not conflict with each other, although consistency does not necessarily imply correctness.
Even more complicated is the notion of consistency with a set of predefined constraints. More formal consistency constraints can be encapsulated as a set of rules that specify consistency relationships between values of attributes, either across a record or message, or along all values of a single attribute.
However, be careful not to confuse consistency with accuracy or correctness.
Other definitions, context:
- From an algorithm perspective, consistency means that a function always produces the same result for a given input value.
- Consistency is also known as deterministic in mathematical terms
- In the context of databases (“transactional databases”), consistency is enforced through transactions that must preserve the integrity constraints (the declared consistency rules) of the database.
Consistency means that after you do a successful write, future reads will always take that write into account. Otherwise, you may have an eventual consistency.
Developing applications on top of a system that fails to guarantee strong consistency without bugs is extremely challenging.
Level
- “causal consistency”,
- “session consistency”,
- “bounded staleness consistency”
This level provide useful guarantees that reduce complexity for application developers.
Same idea than Transaction - Isolation (Level|Degree) - (Locking Level ?)
Implementation
Database
Oracle Database for instance maintains data consistency by using:
- a multi version consistency model
- and various types of locks and transactions.
ETL
The best way to ensure consistency is to publish the data once. Storing calculated fact ensures that all users and reporting applications refer to it consistently. A single publishing run also reduces the extract tansformation load (ETL) development effort. as well the ongoing data management and disk storage burden.
Example
Rule
An example of a consistency rule verifies that within a corporate hierarchy structure, the sum of the number of employees at each site should not exceed the number of employees for the entire corporation
Code
// Assign the value 10 to x
x = 1;
// Read the variable x, add 8 and assign the total to the variable Y
y = x + 1;
- In a consistent system, the value for y will be x.
- In a inconsistent system, there’s a chance it might be 1 (since the original value of x was 0 or NA).
Consistency Context
Consistency may be defined within different contexts:
- Between one set of attribute values and another attribute set within the same record (record-level consistency)
- Between one set of attribute values and another attribute set in different records (cross-record consistency)
- Between one set of attribute values and the same attribute set within the same record at different points in time (temporal consistency)
- Consistency may also take into account the concept of reasonableness, in which some range of acceptability is imposed on the values of a set of attributes.