SingleStore Data Connector
The Hasura SingleStore Connector ("the connector") enables you to connect to a SingleStore database and gives instant access to a GraphQL API on top of your data.
This connector is built using the Typescript Data Connector SDK and, it implements the Data Connector Spec.
Features
The following matrix lists the features supported by the Hasura SingleStore connector:
Feature | Supported | Notes |
---|---|---|
Native Queries + Logical Models | ❌ | |
Simple Object Query | ✅ | |
Filter / Search | ✅ | |
Simple Aggregation | ✅ | |
Sort | ✅ | |
Paginate | ✅ | |
Table Relationships | ✅ | |
Views | ✅ | |
Distinct | ✅ | |
Remote Relationships | ✅ | |
Mutations | ❌ | coming soon |
Prerequisites
Ensure that the following prerequisites are met before using the connector:
- Install DDN CLI and Docker.
- Initialize a supergraph.
- Initialize a subgraph.
- An active SingleStore deployment that serves as the data source for the API.
Using the SingleStore connector
The following steps explain how to initialize and configure the connector for local development. For information on deploying a connector after it has been configured, refer to Deploy a Connector.
Step 1: Authenticate your CLI session
ddn auth login
Step 2: Configure the connector
After the supergraph and subgraph have been initialized (refer to Prerequisites, run the initialization command in interactive mode. Specify a name for the connector in the command.
ddn connector init <connector-name> -i
Step 2.1: Select the SingleStore connector
From the list of connectors, select singlestore
.
Step 2.2: Select a port for the connector
The CLI prompts you to specify a port for running the connector. Either select the default port suggested or choose a port that is not currently in use.
Step 2.3: Provide the environment variable(s) for the connector
Specify the connection string used to connect to the SingleStore database using the SINGLESTORE_URL
variable. The connection string must be in the
mysql://[<username>[:<password>]][@<host>:[<port>]]/[<database>][?<key1>=<value1>[&<key2>=<value2>]]
For example:
SINGLESTORE_URL=singlestore://username:password@hostname/database
The connector uses MySQL2 library to establish a connection. For more information, refer to Connection options and Pool options.
Alternatively, you can also set following environment variables instead of the SINGLELSTORE_URL
variable:
Name | Default | Description |
---|---|---|
SINGLESTORE_HOST | localhost | Hostname of the SingleStore database to connect with. |
SINGLESTORE_PORT | 3306 | Port number of the SingleStore database. |
SINGLESTORE_PASSWORD | Password of the SingleStore database user. | |
SINGLESTORE_DATABASE | Name of the SingleStore database to connect with. | |
SINGLESTORE_SSL_CA | Path to the trusted CA certificate file. | |
SINGLESTORE_SSL_CERT | Path to the certificate chain file in PEM format. | |
SINGLESTORE_SSL_KEY | Path to the private key file in PEM format. | |
SINGLESTORE_SSL_CIPHERS | Cipher suite specification. If specified, it replaces the default value. | |
SINGLESTORE_SSL_PASSPHRASE | Cipher suite specification. If specified, it replaces the default value. | |
SINGLESTORE_SSL_REJECT_UNAUTHORIZED | true | If enabled, the server rejects any connection that is not authorized with the list of supplied CAs. |
If SINGLELSTORE_URL
is set these variables are ignored.
Step 3: Introspect your data source
After configuring the connector, use the CLI to introspect the SingleStore database and create a source-specific configuration file for the connector (configuration.json
).
ddn connector introspect <connector-name>
Step 4: Add your resources
This command will create .hml
files for each table and view in your database
and an .hml
file with information about SingleStore data types.
ddn connector-link add-resources <connector-name>
Step 5. Add relationships
SingleStore does not support foreign keys. Relationships between tables must be added manually. You can define relationships by appending relationship information to the .hml
files generated in the previous step.
For information on defining relationships, refer to Relationships.
For example, to add a relationship from a message
table to the user
table, append following text to the
DbMessage.hml
file:
--- kind: Relationship version: v1 definition: name: user sourceType: DbMessage target: model: name: DbUser subgraph: app relationshipType: Object mapping: - source: fieldPath: - fieldName: userId target: modelField: - fieldName: id description: The user details for a message
License
The SingleStore connector is available under the Apache License 2.0.