Noovolari Docs > Documentation > Consistency

Consistency

In this page

    Consistency

    Consistency involves the integrity of the data and should be considered within individual programs, databases, and application systems.

    This concept is strongly tied with data usability to enable correct recovery of potential failures.

    In this documentation, we will refer to three levels of consistency:

    • Crash-consistency
    • Transaction-consistency
    • Application-consistency

    Crash-consistency

    This kind of consistency ensures that system elements data are all related to a specific moment. Certainly, without this, there would be no guarantee that all information could be restored. It results in that all of the interrelated data components are preserved as they were at any single instant in the past.

    Contemporary file-systems implements this behavior with techniques like file-system checker or journaling. By default, a snapshot is crash-consistent because it relies on techniques implemented by the file-system.

    For example, consider the failure of a single logical volume containing data from one or several applications. If the only option is to restore that volume from a crash consistent backup, the data contained in the restored volume could not be consistent with the other volumes, and additional recovery steps must be undertaken.

    Transaction-consistency

    A transaction is a logical unit of work that may include any number of file or database updates.
    Transaction consistency occurs only before any transaction starts, following the completion of a successful transaction, before the next transaction begins, and when the persistence layer is closed or stopped. After a failure, the data will not be transaction consistent if transactions were in-flight.
    The techniques used to implement transaction consistency generally flush all I/O operations from memory to the persistence layer and stops any subsequent I/O operation, until the snapshot starts.
    The same logic can be applied to any file-system or application that works with persisted data. It’s important to note that only the primitives on which these techniques are not built on are generally available. The actual implementation of the technique must be done and maintained.

    Application-consistency

    Similar to transaction consistency but on a bigger scale. Instead of data integrity within the scope of a single system element or transaction, data must be consistent within the boundaries of many different components of one or more applications.
    Application consistency is the state in which all related data are in sync and represents the reliable status of the application.

    Any Question?

    Write us, we'll call you back as soon as possible!