A B-tree keeps keys sorted so you can find any one of them quickly. You can add and remove keys without ever re-sorting everything. It is the structure behind the index in almost every relational database, including SQLite, PostgreSQL, MySQL, SQL Server and Oracle, and behind many file systems.
Some words first. A key is the value you search by, such as an email address. An index is a separate structure that lets the database find rows by a key without reading the whole table. A node is one box in the tree. A page is the fixed-size block a database reads from storage in one go. It is 4,096 bytes by default in SQLite, 8 KB in PostgreSQL and 16 KB in MySQL's InnoDB. In a B-tree, one node is one page.
The trick is in the shape. Each node holds many keys in sorted order, with a pointer to a child node between each pair of keys. One node can have hundreds of children, so the tree branches hundreds of ways at every level and stays very short. All leaves, the nodes at the bottom, sit at the same depth, so every search takes the same small number of steps. That is what self-balancing means here: the tree never grows lopsided, however the keys arrive.
Rudolf Bayer and Edward McCreight invented it at Boeing's research labs and published it in 1970 and 1972. They never said what the B stands for. In his 1979 survey, Douglas Comer wrote that "balanced", "broad" or "bushy" might apply, and that others suggest Boeing. He added: "it seems appropriate to think of B-trees as 'Bayer'-trees."