Architecture overview
Learn about the architectural layers in an Exasol database system.
Introduction
Exasol is deployed as a Linux application in your own infrastructure or in a cloud environment. The database runs in a cluster of one or more nodes. Each node is either a virtual or physical host with one or more network interfaces. Data is distributed across all nodes in the cluster and constantly synchronized between the nodes. Queries are broken down and processed in parallel across all cluster nodes simultaneously.
Data is stored in data volumes distributed over storage devices (disks) in the cluster, with failover mechanisms that ensure that your data is secure in case of a node failure. Database backups are stored on backup volumes, which can be located either in the cluster or on remote storage.
System administrators can interact with the cluster through different APIs during and after the deployment process. Database clients and other tools can have various degrees of access to the database and to system functionality such as authentication and file management.
This article provides you with an overview of the different architectural layers and components in an Exasol deployment.
-
To learn more about the different deployment options, see Editions overview.
-
To learn about how data security is managed in Exasol and for security guidelines and best practices, see Data security.
Database layer
Exasol is a massively parallel processing (MPP) database designed on a shared-nothing architecture. Data is distributed across all nodes in the cluster and constantly synchronized between the nodes. All nodes operate on an equal basis, there is no central master node.
This processing paradigm is also known as SPMD (single program, multiple data).
Each query sent to an Exasol database is first accepted by the node that the client is connected to, then distributed to all nodes in the cluster over the private network. Algorithms optimize the query, determine the best plan of action, and generate indexes as needed. Exasol processes partial results based on local data sets, then delivers the global results back to the client.
Data is stored in columns and primarily held in RAM to deliver high-speed query performance. If the data exceeds the available memory, an intelligent storage management tier handles disk-to-memory swapping automatically.
To learn more about how massively parallel processing (MPP) works and about the advantages of columnar storage in analytic databases, see the following articles:
Performance optimization mechanisms
Exasol is optimized for high performance through several automated mechanisms that do not require user intervention:
-
Automatic index creation, maintenance, and deletion
-
Indexes that are required for
JOINoperations are automatically created and subsequently maintained upon DML that modifies indexed tables. Indexes that have not been used for more than five weeks are automatically dropped. -
Automatic table reorganization
-
A DELETE operation will initially only mark rows as deleted within a table. When more than 25% of the rows are marked as deleted, the table is automatically reorganized and the indexes on that table are rebuilt.
-
Optimizer statistics gathering
-
The Exasol optimizer works cost based, using statistics about object attributes such as the size and number of table rows. These statistics are automatically gathered after each DML statement without any administrative effort.
-
Query cache
-
The query cache stores a SELECT query together with its result if certain conditions are fulfilled. If the same query is sent again, the database reads the result directly out of the cache instead of executing the query. This enhances performance when you frequently have many identical queries (low write/high read scenarios).
-
Zone maps (partition pruning)
-
Zone maps, also known as partition pruning, allows a database to decrease the I/O and computation cost of certain queries by skipping segments that are not necessary when processing the data. For more information, see Zone maps.
For guidelines on how to optimize performance in Exasol, see the Performance guide.
Virtual schemas
Virtual schemas is a federation feature that makes external data sources accessible as if the data lived inside the Exasol database. The contents of the external data sources are mapped to virtual tables, which can be queried as any regular Exasol table.
By using virtual schemas, you can implement a consistent access layer for your reporting tools. You can also use it for agile and flexible ETL processing, since there is no need to change anything in Exasol if you change or extend the objects in the underlying system.
To learn more about virtual schemas, see Virtual schemas and the Virtual Schemas GitHub repository.
Database authentication and access control
Database users are created and managed using data definition language (DDL) SQL statements.
Database users can use either LDAP, Kerberos SSO, OpenID, or a password for authentication. Multi-factor authentication (MFA) can be used if supported by the authentication provider.
Access rights in the database are managed using data control language (DCL) SQL statements. Database administrators grant privileges to users and roles to determine who is permitted to perform the different actions in the database.
-
To learn more about authentication and access control in Exasol databases, see Data security.
-
For more details about authentication methods, see CREATE USER and ALTER USER.
Storage layer
Data in an Exasol database is stored on volumes that are assigned to disks, which are defined as block storage devices on each host. Each disk can contain multiple volumes.
Exasol has two different volume types: data volumes, which are used to store the data in your database, and archive volumes, which are used for backups. A typical Exasol deployment has at least one data volume and one archive volume.
Archive volumes can be located either within the cluster (local archive volume) or on a remote storage service (remote archive volume).
Data volumes grow automatically as long as enough disk space is available. You can also manually enlarge volumes if needed.
Data storage is managed by a distributed storage engine, EXAStorage, which runs on all nodes. EXAStorage also manages the failover mechanisms that protect your data in case of a node failure.
To learn how to create and manage volumes, see Storage management.
Redundancy and failover mechanisms
An Exasol cluster can have any number of reserve nodes on standby in addition to the active data nodes. A reserve node has the same basic configuration as a data node, but it is not active and contains no data.
Redundancy is an attribute that you set when you create a storage volume. The redundancy level specifies the number of copies of the data that is hosted on active cluster nodes.
-
Redundancy 1 = no redundancy. If a node fails, the data volume is no longer available. Redundancy 1 is typically only seen with single node systems.
-
Redundancy 2 = each node holds a copy of the data that is operated on by the neighbor node. If a node fails, the data volume remains available. Redundancy 2 is best practice in multiple-node systems and recommended by Exasol.
If storage volumes are set up with redundancy >1, an active node holds a mirror of the data on the neighboring node. If one of the active nodes fails, a reserve node will take over the role of the failed node. Data is then copied to this node from a mirror on one of the other active nodes.
Example:
In this example, the volumes are configured with redundancy 2. When node n11 modifies segment A, the mirror segment A‘ on the neighbor node n12 is synchronized over the private network. If node n11 fails, the reserve node n15 starts up and data is copied to it from the mirror on n12.
-
To learn more about the failover mechanisms in Exasol, see Fail safety.
-
To learn how to set redundancy when creating volumes, see Create data volume and Create local archive volume.
Network layer
An Exasol cluster is normally configured with two networks using separate physical interfaces on the nodes: a private network for internal communication between the nodes in the cluster, and a public network that allows connections to the database from outside of the cluster.
The physical networks must be configured using network management tools on the Linux hosts. You can then specify the private and public IP addresses for the nodes in the Exasol deployment configuration. By design, you cannot manage the network infrastructure directly from Exasol.
Private network
The private network is used to boot and configure nodes, to constantly exchange vitality and configuration information, and to synchronize the database payload.
In the private network, the nodes should normally be assigned consecutive and evenly spaced static IPv4 addresses in the same subnet. DHCP can be used if each node always receives the same IP address.
In synchronous dual data center solutions (SDDC), multiple subnets can be used for a split cluster. For more details, see Synchronous dual data center (SDDC) administration.
Public network
A public network allows clients outside of the private network to connect directly to the database and to the administration interfaces without being routed through the private network. A public network is optional.
-
To learn more about network requirements, see Network management.
-
To learn about how to ensure network security, see Network security.
-
To learn about how to configure networks when deploying Exasol, see Install and deploy Exasol.
Cluster architecture
A node in an Exasol cluster is a virtual or physical host with its own CPUs and memory. The total number of CPUs and the total amount of memory in a cluster determines the compute power.
Each node hosts the Exasol database engine, the cluster operating system (COS), the storage engine (EXAStorage), a BucketFS file service for storing additional files such as drivers and scripts, and the software needed for system administration.
The nodes are connected to each other over a private network (intra-cluster network). You can configure a public network to allow access from outside of the cluster.
Exasol cluster operating system (COS)
COS is the software layer that manages and monitors the nodes in an Exasol cluster. COS manages communication between the nodes over the private (internal) network, as well as between the database and clients connected to it over the public (external) network.
To learn about how you can interact with COS through the APIs in Exasol, see System administration.
BucketFS
BucketFS is a synchronous file system used for storing files such as drivers and scripts in an Exasol cluster. Files stored in BucketFS are replicated locally on each node and automatically synchronized over the private network. Each node in the cluster can connect to the BucketFS service on the host and will then see the same content as the other nodes.
A default BucketFS service is automatically created on each data disk when you install Exasol. You can create additional BucketFS services and buckets as needed.
To learn more about BucketFS, see BucketFS.
System administration
The administration stack in Exasol provides several interfaces that enable you to deploy and manage your databases and clusters using both built-in and external tools. These interfaces are available on every node in a cluster.
-
ConfD is a low-level API that is used to perform all system administrative actions in Exasol. You can interact with ConfD directly using the command-line tool confd_client, or indirectly through XML-RPC in your own Python programs.
-
Exasol Admin is a web interface that allows you to carry out common administration tasks from your browser, such as monitoring your database, generating and analyzing logs, creating backup schedules, updating Exasol, and managing files in BucketFS.
-
Exasol Deployment Tool (c4) is a multi-purpose command line tool for creating, configuring, and managing Exasol deployments. You can also use c4 to access other administration interfaces in Exasol.
Exasol supports encrypted key-based and basic authentication for system administration users. Which administrative tasks a user is allowed perform in Exasol depends on the group the user belongs to.
Monitoring and auditing
Exasol includes an auditing mechanism that allows you to view detailed information about all sessions such as driver, client, host, and operating system user, as well as information about all executed SQL statements, including CPU usage, network usage, and disk read/write operations. The auditing information is stored in system tables in the database, and does not require any transaction log or database schema modification.
Exasol does not include an internal syslog service – messages generated by the components in Exasol are instead forwarded to the host syslog service. You can use a third-party syslog management/monitoring tool to subscribe to the relevant syslog messages.
-
For more details about the administration interfaces in Exasol, see Administration interfaces.
-
To learn more about auditing in Exasol, see Auditing.
-
For more details about the log messages in Exasol, see Monitoring.
-
To learn about authentication methods, access management, and best practices to ensure data security when administrating Exasol, see Data security.