Append-only is a property of
computer data storage such that new data can be appended to the storage, but where existing data is
immutable
In object-oriented and functional programming, an immutable object (unchangeable object) is an object whose state cannot be modified after it is created.Goetz et al. ''Java Concurrency in Practice''. Addison Wesley Professional, 2006, Section 3.4 ...
.
Access control
Many
file systems' Access Control Lists implement an "append-only" permission:
*
chattr
is the command in Linux that allows a user to set certain attributes of a file. is the command that displays the attributes of a file.
Most BSD-like systems, including macOS, have always had an analogous command to set the attributes, bu ...
in Linux can be used to set the append-only flag to files and directories. This corresponds to the flag in
.
*
NTFS ACL has a control for "Create Folders / Append Data", but it does not seem to keep data immutable.
Many
cloud storage
Cloud storage is a model of computer data storage in which the digital data is stored in logical pools, said to be on "the cloud". The physical storage spans multiple servers (sometimes in multiple locations), and the physical environment is t ...
providers provide the ability to limit access as append-only. This feature is especially important to mitigate the risk of
data loss for
backup
In information technology, a backup, or data backup is a copy of computer data taken and stored elsewhere so that it may be used to restore the original after a data loss event. The verb form, referring to the process of doing so, is "back up", w ...
policies in the event that the computer being backed-up becomes infected with
ransomware
Ransomware is a type of malware from cryptovirology that threatens to publish the victim's personal data or permanently block access to it unless a ransom is paid off. While some simple ransomware may lock the system without damaging any files, ...
capable of deleting or encrypting the computer's backups.
Data structures
Many
data structures and
databases implement
immutable objects
In object-oriented and functional programming, an immutable object (unchangeable object) is an object whose state cannot be modified after it is created.Goetz et al. ''Java Concurrency in Practice''. Addison Wesley Professional, 2006, Section 3.4 ...
, effectively making their data structures append-only. Implementing an append-only data structure has many benefits, such as ensuring data
consistency, improving
performance
A performance is an act of staging or presenting a play, concert, or other form of entertainment. It is also defined as the action or process of carrying out or accomplishing an action, task, or function.
Management science
In the work place ...
,
and permitting
rollbacks.
The prototypical append-only data structure is the
log file
In computing, logging is the act of keeping a log of events that occur in a computer system, such as problems, errors or just information on current operations. These events may occur in the operating system or in other software. A message or lo ...
. Log-structured data structures found in
Log-structured file systems and databases work in a similar way: every change (transaction) that happens to the data is logged by the program, and on retrieval the program must combine the pieces of data found in this log file.
[ ]Blockchain
A blockchain is a type of distributed ledger technology (DLT) that consists of growing lists of records, called ''blocks'', that are securely linked together using cryptography. Each block contains a cryptographic hash of the previous block, a ...
s add cryptography to the logs so that every transaction is verifiable.
Append-only data structures may also be mandated by the hardware or software environment:
* All objects are immutable in purely functional programming languages, where every function is pure and global states do not exist.
* Flash storage cells can only be written to once before erasing. Erasing on a flash drive works on the level of pages with cover many cells at once, so each page is treated as an append-only set of cells until it fills up.
* Hard drives that use shingled magnetic recording cannot be written to randomly because writing on a track would clobber a neighboring, usually later, track. As a result, each "zone" on the drive is append-only.[
Append-only data structures grow over time, with more and more space dedicated to "stale" data found only in the history and more time wasted on parsing these data. A number of append-only systems implement ''rewriting'' (copying garbage collection), so that a new structure is created only containing the current version and optionally a few older ones.]
See also
* Access control list
* Cloud storage
Cloud storage is a model of computer data storage in which the digital data is stored in logical pools, said to be on "the cloud". The physical storage spans multiple servers (sometimes in multiple locations), and the physical environment is t ...
* Comparison of file hosting services
* Data structure
In computer science, a data structure is a data organization, management, and storage format that is usually chosen for efficient access to data. More precisely, a data structure is a collection of data values, the relationships among them, a ...
* Purely-functional data structure
In computer science, a purely functional data structure is a data structure that can be implemented in a purely functional language. The main difference between an arbitrary data structure and a purely functional one is that the latter is (strongl ...
* Log-structured merge-tree
* Certificate Transparency
Certificate Transparency (CT) is an Internet security standard for monitoring and auditing the issuance of digital certificates. The standard creates a system of public logs that seek to eventually record all certificates issued by publicly t ...
References
{{reflist
Computer data storage