Crash Recovery

A transaction must be always consistent and durable. This is straightforward when everything is normal, whereas maintaining such properties despite of failures becomes nontrivial. Failures like system crashes can leave a system in an inconsistent state. Today we are treating failures as the norm. It’s critical to possess the capability of fault tolerance. One important remedy is to recover transactions after crashes.

Read More

Consistency vs. Concurrency

While transactions desires isolation, too strong isolation may offset the performance benefit from execution concurrency. In practice, isolation is defined at different levels with trade-offs between consistency and concurrency. The applicability of each isolation level is determined by the specific scenario targeted.

Read More

Transaction Concepts and Properties

A request to storage systems often involves multiple operations, while the lack of integrity among individual operations complicates the management of a storage system. To address that, transactions are used as a container to encapsulate multiple individual operations and facilitate their management.

Read More

Storage Layout of Data and Metadata

Data are stored on some physical medium like hard drives or SSDs, but they are not simply placed there arbitrarily. A certain layout is defined by storage systems to organize data in the disk. For example, we need to know where of a disk is available for the data to be stored, and when we need some data where to find it.

Read More

Blogging with Hugo and GitLab (5): Let's Encrypt Renewal Automation

Manually renewing certificates every three months is not going to be sustainable. Fortunately, there is the experience shared for automating the certificate renewal under GitLab. The basic idea is to apply the same operation of the manual certificate generation described in the previous article, but via the automation strategy with the GitLab pipeline schedule. Here I recompiled the scripts from the original article to not include any domain specific content, which allows them to be directly applied to any repositories (with domain specific variables defined in the pipeline setting).

Read More