A method comprising: instantiating, in a columnar database, a plurality of virtual files, the columnar database comprising a columnar data store that persists tables of data contained therein to the plurality of virtual files, each virtual file being stored in physical data storage and a portion of which is cached transiently in a persistence layer intermediate the columnar data store and the physical data storage, such that when the columnar data store writes to a virtual file, the data is written into a page buffer of the persistence layer, wherein the persistence layer maps each virtual file to a chain of linked database pages stored in the page buffer, wherein the linked pages stored in the page buffer are written to the physical data storage via an input/output component; storing, for each virtual file, references to a corresponding starting database page and a corresponding ending database page in metadata in a container directory in the persistence layer; each database page of a virtual file containing at least one data record; and processing, in the columnar database, operations using the virtual files, comprising appending at least one data record for a first transaction while at least one other transaction is being executed, the data record being appended under a lock to the end of a page chain of a virtual file, the appended at least one data record being available for other transactions after the first transaction commits, wherein changes to virtual files resulting from the operations of one transaction are isolated from changes on the same virtual files resulting from the operations of other transactions. instantiating, in a columnar database, a plurality of virtual files, the columnar database comprising a columnar data store that persists tables of data contained therein to the plurality of virtual files, each virtual file being stored in physical data storage and a portion of which is cached transiently in a persistence layer intermediate the columnar data store and the physical data storage, such that when the columnar data store writes to a virtual file, the data is written into a page buffer of the persistence layer, wherein the persistence layer maps each virtual file to a chain of linked database pages stored in the page buffer, wherein the linked pages stored in the page buffer are written to the physical data storage via an input/output component; storing, for each virtual file, references to a corresponding starting database page and a corresponding ending database page in metadata in a container directory in the persistence layer; each database page of a virtual file containing at least one data record; and processing, in the columnar database, operations using the virtual files, comprising appending at least one data record for a first transaction while at least one other transaction is being executed, the data record being appended under a lock to the end of a page chain of a virtual file, the appended at least one data record being available for other transactions after the first transaction commits, wherein changes to virtual files resulting from the operations of one transaction are isolated from changes on the same virtual files resulting from the operations of other transactions.