1. LeanXcale Architecture

LeanXcale consists of multiple components to provide all the capabilities LeanXcale has. This post, available in the LeanXcale blog, explains all of the components and shows some of the different deployments that LeanXcale can have, to adapt its deployment to the workload that it will need to process. To summarize, the components of LeanXcale can be grouped into:

  1. Transaction Manager:

    1. Mastermind: in charge of providing transactionality. This component provides the capacity to commit transactions in a distributed manner, in parallel.

    2. Conflict Manager: in charge of managing the write-write conflict checks.

    3. Logger: in charge of providing persistence of the transactions.

  2. Storage Engine (KiVi datastore)

    1. KiVi Meta Server (KVMS) keeps the metadata of the tables and its structures. This component does not store actual data.

    2. KiVi Data Server (KVDS) keeps the actual data for each table.

    3. KiVi Proxy (KVP) used as a proxy to provide a unique entry point for all the KiVi clients. This avoids opening many ports to use the KiVi interface.

  3. Query Engine (SQL) this component parses the SQL queries, optimizes them and runs them over the KiVi Storage Engine. This component provides JDBC, ODBC and SQLAlchemy interfaces.

    1. HAProxy is used to balance the SQL client load across multiple SQL servers. This component is optional, because in case the client needs only one SQL Server, this component can be skipped in order to reduce the network latency. However, in this document we also explain how HAProxy can be configured to provide a secure HTTPS connection.


LeanXcale is provided in a tar.gz package that needs to be uncompressed in a folder. That folder, where all the LeanXcale binaries are located, will be named $BASEDIR. LeanXcale database is configured through a single file named inventory file located in $BASEDIR/conf/inventory. Some examples of the inventory file are provided in the $BASEDIR/conf folder.

The section that needs to be adapted to configure security in the LeanXcale configuration file is the [all:vars] section. In that section, all the configuration to set security needs to be added. On its default setting, LeanXcale does not have activated security, but it can easily be activated. In the following sections, we define the different security mechanisms we support at LeanXcale and how these are implemented. In addition, we explain how the security has to be configured in the LeanXcale inventory file.