A graph-relational database with declarative schema, built-in migration system, and a next-generation query language
Find a file
Yury Selivanov 11a2ecc534
Add CoC.
2019-05-13 13:05:33 -04:00
.ci ci: Set git clone depth to 50 (1 can break if the dep repo is updated) 2019-01-04 16:30:46 -05:00
docs Fix docs lint error 2019-05-11 13:39:53 -04:00
edb edgeql: Fix handling of empty set nested into a set literal. 2019-05-09 21:36:13 -04:00
ext Rename std::timedelta to std::duration 2019-04-05 11:50:51 -04:00
postgres@d132898812 Rename std::timedelta to std::duration 2019-04-05 11:50:51 -04:00
tests docs: Add explicit documentaion of available HTTP protocols. 2019-05-11 12:52:56 -04:00
.coveragerc Run coverage with Cython plugin 2019-01-15 23:48:08 -05:00
.editorconfig compiler: Add support for opaque tuple indirection 2018-07-13 17:30:46 -04:00
.flake8 Formally implement fundamental operators as part of stdlib 2018-12-03 17:18:23 -05:00
.gitignore Add .mypy_cache to .gitignore 2019-05-10 19:28:47 -04:00
.gitmodules Fold the edb.server2 package into edb.server 2019-01-07 18:21:48 -05:00
.travis.yml ci/travis: set submodule update depth to 50 2019-01-05 14:22:45 -05:00
CODE_OF_CONDUCT.md Add CoC. 2019-05-13 13:05:33 -04:00
LICENSE Put EdgeDB under the Apache License v2.0 2018-05-09 22:11:25 -04:00
logo.svg Add README 2018-05-10 12:33:56 -04:00
Makefile Implement strict separation between timezone-aware and local date/time 2019-04-02 11:39:48 -04:00
MANIFEST.in Fix MANIFEST.in to resume inclusion of *.edgeql and *.esdl files 2019-04-03 17:34:20 -04:00
README.md Docs edits & polish. 2019-05-11 13:08:11 -04:00
setup.py Add an explicit dependency on edgedb-python 2019-04-16 17:33:57 -04:00

Build Status

What is EdgeDB?

EdgeDB is an open-source object-relational database built on top of PostgreSQL. The goal of EdgeDB is to empower its users to build safe and efficient software with less effort.

EdgeDB features:

  • strict, strongly typed schema;
  • powerful and expressive query language;
  • rich standard library;
  • built-in support for schema migrations;
  • native GraphQL support.

Check out the blog posts for more examples and the philosophy behind EdgeDB.

Modern Type-safe Schema

The data schema in EdgeDB is a clean high-level representation of a conceptual data model:

type User {
    required property name -> str;
}

type Person {
    required property first_name -> str;
    required property last_name -> str;
}

type Review {
    required property body -> str;
    required property rating -> int64 {
        constraint min_value(0);
        constraint max_value(5);
    }

    required link author -> User;
    required link movie -> Movie;

    required property creation_time -> local_datetime;
}

type Movie {
    required property title -> str;
    required property year -> int64;
    required property description -> str;

    multi link directors -> Person;
    multi link cast -> Person;

    property avg_rating := math::mean(.<movie[IS Review].rating);
}

EdgeDB has a rich library of datatypes and functions.

EdgeQL

EdgeQL is the query language of EdgeDB. It is efficient, intuitive, and easy to learn.

EdgeQL supports fetching object hierarchies with arbitrary level of nesting, filtering, sorting and aggregation:

SELECT User {
    id,
    name,
    image,
    latest_reviews := (
        WITH UserReviews := User.<author
        SELECT UserReviews {
            id,
            body,
            rating,
            movie: {
                id,
                title,
                avg_rating,
            }
        }
        ORDER BY .creation_time DESC
        LIMIT 10
    )
}
FILTER .id = <uuid>$id

Status

EdgeDB is currently in alpha. See our Issues for a list of features planned or in development.

Getting Started

Please refer to the Tutorial section of the documentation on how to install and run EdgeDB.

Documentation

The EdgeDB documentation can be found at edgedb.com/docs.

Building From Source

Please follow the instructions outlined in the documentation.

License

The code in this repository is developed and distributed under the Apache 2.0 license. See LICENSE for details.