Release Distributed DBMS RQLite 7.0 , which uses SQLite as a storage engine and allows you to organize a cluster from synchronized vaults. Of the features of RQLite, there is simplicity of installation, deploying and maintaining a distributed fault tolerant storage, something similar to ETCD and Consul , but using a relational work model With data instead of key / value format. The project code is written in the GO language and distributed under the MIT license.
to maintain all nodes in the synchronized state used Algorithm to achieve consensus RAFT . Rqlite uses the original SQLite library and the driver go-sqlite3 , on top of which the layer is launched, processing customer requests that perform replication to other nodes and Tracking consensus on the choice of the leading node.
Changes to the database can be made only by a node that is selected as a leading, but connections to record operations can be sent to other cluster nodes that return the leader’s address to repeat the request (in the next version promised to add an automatic conversion to the leader) . The main emphasis is placed on failover, therefore the DBMS is scaled only on read operations, and recording operations are a bottleneck. It is possible to start the RQLite cluster from one node and such a solution can be used to arrange access to SQLite over HTTP without providing fault tolerance.
SQLite data on each node is not stored in the file, but in memory. At the layer level with the implementation of the RAFT protocol, the log of all SQLite commands leading to the database change. This log is used when replication (replication at the query playback level on other nodes), when starting a new node or to restore after loss of connectedness. To reduce the size of the log, an automatic packaging is used, which starts after a specified number of changes and leads to fixing the picture, relative to which the new log is started (the state of the base in memory is identical to the picture + accumulated change log).
Features RQLite:
- Easy to deploy the cluster, without the need for a separate installation of SQLite.
- Ability to quickly get a replicated SQL storage.
- Readiness for use in work projects (Production-Grade).
- Availability http (s) API , allowing you to update data in batch mode and determine The leading cluster node. The command line interface is also provided and Client Libraries for various programming languages.
- availability of service to determine other nodes to create clusters dynamically.
- Support encryption