Gallium Data is a Java process that usually runs as a Docker container. Docker makes the deployment and management of Gallium Data easy and well-understood by IT shops.
The server listens to database clients on any number of TCP ports, and forwards that traffic to the corresponding database server(s). However, it can intercept, parse and modify that traffic depending on conditions that you define, thereby modifying how the clients perceive the database server(s) to behave.
Unlike other gateways and proxies, Gallium Data is completely open-ended and can run literally any logic.
Obviously Gallium Data adds some overhead to the database requests and responses, but that overhead is typically on the order of 5%-10%. Gallium Data uses a variety of tricks to make sure that it does not add any unnecessary overhead; for instance, it avoids parsing packets unless necessary.
Gallium Data can usually service many thousands of requests per second on a typical server, assuming of course the database can keep up.
Custom logic can easily be written using Gallium Data's built-in code editor and debugger. Gallium Data uses the GraalVM JavaScript engine, which is fully ECMA2020-compliant.
Your JavaScript code has full access to all of JavaScript's capabilities, including network resources, files, etc...
In addition, your JavaScript code can also easily access the underlying Java platform and libraries, which means that literally anything is possible.
At runtime, Gallium Data is completely pass-through: it does not have any database credentials, it only acts as a conduit for requests and responses.
For databases that use SSL (or TLS), you can provide the keys and certificates to Gallium Data so that it can completely impersonate the database servers, or you can give it its own key and certificate.
Running Gallium Data in a Docker container means that the logic can be circumscribed by the container. If some faulty logic has been defined, it is easy to detect that the container is misbehaving, and to kill it.
Gallium Data works very nicely in typical IT environments such as Kubernetes. It can be deployed as a single container and does not require access to any resources other than its repository, which is a (small) directory of mostly JSON and JavaScript files.
It is common to have multiple instances of Gallium Data running in front of the same database server(s) to provide redundancy and scalability. Incoming traffic can be routed to these instances using a TCP load balancer.
Everything in Gallium Data is stored in a simple file-based repository, which contains mostly JSON and JavaScript files. This repository is usually kept under source control, for obvious reasons.
JavaScript code can be written using your favorite editor or IDE, but the admin interface allows you to edit, run and debug the code easily.
Everything in Gallium Data projects can be edited by editing the repository, which can be useful for automated deployments and similar tasks.