Get Started
Gel is a next-generation graph-relational database designed as a spiritual successor to the relational database.
It inherits the strengths of SQL databases: type safety, performance, reliability, and transactionality. But instead of modeling data in a relational (tabular) way, Gel represents data with object types containing properties and links to other objects. It leverages this object-oriented model to provide a superpowered query language that solves some of SQL's biggest usability problems.
How to read the docs
Gel is a complex system, but we've structured the documentation so you can learn it in "phases". You only need to learn as much as you need to start building your application.
-
Get Started — Start with the quickstart. It walks through Gel's core workflows: how to install Gel, create an instance, write a simple schema, execute a migration, write some simple queries, and use the client libraries. The rest of the section goes deeper on each of these subjects.
-
Schema — A set of pages that break down the concepts of syntax of Gel's schema definition language (SDL). This starts with a rundown of Gel's primitive type system (Primitives), followed by a description of (Object Types) and the things they can contain: links, properties, indexes, access policies, and more.
-
EdgeQL — A set of pages that break down Gel's query language, EdgeQL. It starts with a rundown of how to declare literal values, then introduces some key EdgeQL concepts like sets, paths, and type casts. With the basics established, it proceeds to break down all of EdgeQL's top-level statements:
select
,insert
, and so on. -
Guides — Contains collections of guides on topics that are peripheral to Gel itself: how to deploy to various cloud providers, how to integrate with various frameworks, and how to introspect the schema to build code-generation tools on top of Gel.
-
Standard Library — This section contains an encyclopedic breakdown of Gel's built-in types and the functions/operators that can be used with them. We didn't want to clutter the EdgeQL section with all the nitty-gritty on each of these. If you're looking for a particular function (say, a
replace
), go to the Standard Library page for the relevant type (in this case, String), and peruse the table for what you're looking for (str_replace()
). -
Client Libraries The documentation for Gel's set of official client libraries for JavaScript/TypeScript, Python, Go, and Rust. All client libraries implement Gel's binary protocol and provide a standard interface for executing queries. If you're using another language, you can execute queries over HTTP. This section also includes documentation for Gel's GraphQL endpoint.
-
CLI Complete reference for the
gel
command-line tool. The CLI is self-documenting—add the--help
flag after any command to print the relevant documentation—so you shouldn't need to reference this section often. -
Reference The Reference section contains a complete breakdown of Gel's syntax (for both EdgeQL and SDL), internals (like the binary protocol and dump file format), and configuration settings. Usually you'll only need to reference these once you're an advanced user.
-
Changelog Detailed changelogs for each successive version of Gel, including any breaking changes, new features, bigfixes, and links to
Tooling
To actually build apps with Gel, you'll need to know more than SDL and EdgeQL.
-
CLI — The most commonly used CLI functionality is covered in the Quickstart. For additional details, we have dedicated guides for Migrations and Projects. A full CLI reference is available under CLI.
-
Client Libraries — To actually execute queries, you'll use one of our client libraries for JavaScript, Go, or Python; find your preferred library under Client Libraries. If you're using another language, you can still use Gel! You can execute queries via HTTP.
-
Deployment — To publish an Gel-backed application, you'll need to deploy Gel. Refer to Guides > Deployment for step-by-step deployment guides for all major cloud hosting platforms, as well as instructions for self-hosting with Docker.
Gel features:
-
strict, strongly typed schema;
-
powerful and clean query language;
-
ability to easily work with complex hierarchical data;
-
built-in support for schema migrations.
Gel is not a graph database: the data is stored and queried using relational database techniques. Unlike most graph databases, Gel maintains a strict schema.
Gel is not a document database, but inserting and querying hierarchical document-like data is trivial.
Gel is not a traditional object database, despite the classification, it is not an implementation of OOP persistence.