A TypeDB Client is any software that can connect to a TypeDB.
To build a custom application capable of connecting to TypeDB via TypeDB Client RPC protocol we can use one of the existing libraries implementing it, called TypeDB Drivers, or we can implement it ourselves as a new driver.
Here is a list of existing TypeDB Clients:
There is also a community driven Jupyter notebook plugin to work with TypeDB: TypeDB Jupyter connector.
Both TypeDB Drivers and applications built with them can be addressed as TypeDB Clients.
For example, TypeDB Studio and TypeDB Console are built with TypeDB Java Driver inside.
All TypeDB Clients validate compatibility with the TypeDB server when establishing a connection. This is done using protocol versioning, and ensures that the Client can’t send or receive unexpected data from the server.
TypeDB Clients in the form of standalone applications usually take care of internal processes and provide a user-friendly interface for user (graphical or command-line).
Language specific libraries (or TypeDB Drivers) provide more direct access to the classes and methods via TypeDB Driver API.
To work with TypeDB databases we can use one of the standalone software tools developed by Vaticle:
Both tools are complete software products that can be used to connect to TypeDB and interact with it. They manage connections, sessions and transactions, as well as submitting queries and reading back the responses.
A TypeDB Driver is a library that implements TypeDB Client RPC protocol and provides TypeDB Driver API. TypeDB Drivers are available for some of the most popular programming languages, allowing us to build applications that connect to a TypeDB database easily.
The following TypeDB Drivers are officially supported and actively maintained by Vaticle. They support latest TypeDB features and receive continuous bug fixes and improvements.
All TypeDB Drivers share a common architecture and capabilities. The core components have to do with providing a human or machine interface, opening and managing connections, sessions, and transactions, as well as validating and submitting queries, processing responses, load-balancing (TypeDB Enterprise & TypeDB Cloud only), and authentication (TypeDB Enterprise & TypeDB Cloud only).
The following diagram illustrates the structure of a typical TypeDB Client.
See the dependency graph
Simply put, the main components of any TypeDB Client are the classes and methods to establish a connection to a TypeDB database, execute queries and process responses.
After the release of the Rust Driver we shall see the Java, Python, and Node.js drivers re-implemented as wrappers on top of the Rust driver.