thermionic

module
v0.0.0-...-d2438c5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 20, 2019 License: Apache-2.0

README

Thermionic

CircleCI Go Report Card

Thermionic is a lightweight, distributed, highly available relational database, using SQLite for the underlying storage engine.

SQLite doesn't naturally allow clustering out of the box, the following project enables that by building on top of distributed version, of SQLite.

The configuration of Thermionic can be as a singular node or in a cluster setup. Even when using Thermionic in singular node the global clustering database is still used, effectively behaving as a regular SQLite database.

Since each node of the cluster also needs to be aware of other nodes in the cluster it also uses a SQLite database (local) which can also hold state and queried for information.

Running Thermionic as part of a larger system, as a central store for some critical relational data, without having to run larger, more complex distributed databases should be possible because of the minimal setup.

DB Clustering work is derived from lxc/lxd

Motivation

Whilst re-visiting LXD clustering in Juju, I wanted to understand how LXD clustering worked in terms of querying and configuring the cluster. Whilst doing this, it was surprising how clean the implementation was for setting up a clustered SQLite database and so removing the LXC parts of the LXD project created the following Thermionic project.

Peers

Directories

Path Synopsis
cmd
internal
cluster/events/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/heartbeat/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/membership/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/notifier/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/raft/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/services/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
cluster/upgraded/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db
db/cluster/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/node/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/query
Package query implements helpers around database/sql to execute various kinds of very common SQL queries.
Package query implements helpers around database/sql to execute various kinds of very common SQL queries.
db/query/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
db/schema
Package schema offers utilities to create and maintain a database schema.
Package schema offers utilities to create and maintain a database schema.
db/schema/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
discovery/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
fsys
Package fsys offers utilities to create and maintain a filesystem.
Package fsys offers utilities to create and maintain a filesystem.
lru
net
node/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
schedules/mocks
Package mocks is a generated GoMock package.
Package mocks is a generated GoMock package.
sys
pkg
api

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL