Announcement
· May 14

test annoucnement #2

Introduction

Hello! In this article, I will be discussing database degrade, a type of data integrity issue one can face when using IRIS. First, I will be going over a review of the structure of IRIS databases. I'll then discuss how database degrade can manifest and common causes of degrade issues. I'll then conclude with general tips we give our customers about how to prevent or prepare for database degrade issues.

IRIS Database Structure

What exactly is a database? An IRIS database is a single file that consists of a fundamental unit called the "block". It contains a number of equally-sized blocks (typically 8kb) in sequential order. These blocks all "point" to each other by storing the offset in the database at which the block they point to resides. This network of blocks forms a configuration resembling a "forest" of what are called Balanced trees, or B-trees. Each global is represented by a separate B-tree, and each B-tree is accessible through a top-level Global Directory Block which holds pointers to all the global B-trees in the database.

The B-tree's defining feature is that all the "leaf"-level data blocks are on the same level. This means that anytime a top-pointer block fills up, another pointer layer is added above it, theoretically allowing the B-tree to scale indefinitely. At the beginning of each block, there are a number of bytes that indicate some metadata about that block and the blocks around it. For example, each block contains information about its block number, the number of bytes of data in the block, the type of block it is (pointer or data), the collation, etc. The block also contains information about related blocks, such as the block number of the block on its right, the first node of the block to its right, and the byte differences between the last node of the block and the block to the right.

Here is an example representation of what a global B-tree looks like. The green lines represent pointers between different levels of blocks, and the orange lines represent pointers between blocks and their neighboring block to the right. A block to the right value of 0 is used when the block is at the right edge of the tree.

Discussion (0)1
Log in or sign up to continue