Giter Club home page Giter Club logo

edgedb-java's Introduction

EdgeDB

Stars license discord

Quickstart   •   Website   •   Docs   •   Playground   •   Blog   •   Discord   •   Twitter



What is EdgeDB?

EdgeDB is a new kind of database
that takes the best parts of
relational databases, graph
databases, and ORMs. We call it
a graph-relational database.



🧩 Types, not tables 🧩


Schema is the foundation of your application. It should be something you can read, write, and understand.

Forget foreign keys; tabular data modeling is a relic of an older age, and it isn't compatible with modern languages. Instead, EdgeDB thinks about schema the same way you do: as object types containing properties connected by links.

type Person {
  required name: str;
}

type Movie {
  required title: str;
  multi actors: Person;
}

This example is intentionally simple, but EdgeDB supports everything you'd expect from your database: a strict type system, indexes, constraints, computed properties, stored procedures...the list goes on. Plus it gives you some shiny new features too: link properties, schema mixins, and best-in-class JSON support. Read the schema docs for details.


🌳 Objects, not rows 🌳


EdgeDB's super-powered query language EdgeQL is designed as a ground-up redesign of SQL. EdgeQL queries produce rich, structured objects, not flat lists of rows. Deeply fetching related objects is painless...bye, bye, JOINs.

select Movie {
  title,
  actors: {
    name
  }
}
filter .title = "The Matrix"

EdgeQL queries are also composable; you can use one EdgeQL query as an expression inside another. This property makes things like subqueries and nested mutations a breeze.

insert Movie {
  title := "The Matrix Resurrections",
  actors := (
    select Person
    filter .name in {
      'Keanu Reeves',
      'Carrie-Anne Moss',
      'Laurence Fishburne'
    }
  )
}

There's a lot more to EdgeQL: a comprehensive standard library, computed properties, polymorphic queries, with blocks, transactions, and much more. Read the EdgeQL docs for the full picture.


🦋 More than a mapper 🦋


While EdgeDB solves the same problems as ORM libraries, it's so much more. It's a full-fledged database with a powerful and elegant query language, a migrations system, a suite of client libraries in different languages, a command line tool, and—coming soon—a cloud hosting platform. The goal is to rethink every aspect of how developers model, migrate, manage, and query their database.

Here's a taste-test of EdgeDB's next-level developer experience: you can install our CLI, spin up an instance, and open an interactive EdgeQL shell with just three commands.

$ curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
$ edgedb project init
$ edgedb
edgedb> select "Hello world!"

Windows users: use this Powershell command to install the CLI.

PS> iwr https://ps1.edgedb.com -useb | iex

Get started

To start learning about EdgeDB, check out the following resources:

  • The quickstart. If you're just starting out, the 10-minute quickstart guide is the fastest way to get up and running.
  • EdgeDB Cloud 🌤️. The best most effortless way to host your EdgeDB database in the cloud.
  • The interactive tutorial. For a structured deep-dive into the EdgeQL query language, try the web-based tutorial— no need to install anything.
  • The e-book. For the most comprehensive walkthrough of EdgeDB concepts, check out our illustrated e-book Easy EdgeDB. It's designed to walk a total beginner through EdgeDB in its entirety, from the basics through advanced concepts.
  • The docs. Jump straight into the docs for schema modeling or EdgeQL!

Contributing

PRs are always welcome! To get started, follow this guide to build EdgeDB from source on your local machine.

File an issue 👉
Start a Discussion 👉
Join the discord 👉


License

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

edgedb-java's People

Contributors

quinchs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

edgedb-java's Issues

Query stuck forever

Hello, I try to execute some queries and if (I assume, not sure yet) an error happens, in some cases the query is stuck.
In TRACE logs nothing useful, and I assumed it's an error because of:

2023-10-09 00:44:29.612 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.p.receivable.Receivable - Closed 794699028:READY_FOR_COMMAND
2023-10-09 00:44:29.612 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Post-invoke duplex step ID: -1697440977, isDone?: true, isCancelled?: false, isExceptional?: false, 
2023-10-09 00:44:29.612 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Returning completed state promise, ID: -1697440977
2023-10-09 00:44:29.613 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Read promise completed, ID: 2044109316, is success?: true
2023-10-09 00:44:39.563 [nioEventLoopGroup-2-1] DEBUG c.e.driver.binary.PacketSerializer - S->C: T:ERROR_RESPONSE
2023-10-09 00:44:39.564 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Read fired, entering message lock, message type ERROR_RESPONSE
2023-10-09 00:44:39.564 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Dependant promises empty?: true
2023-10-09 00:44:39.564 [defaultEventExecutorGroup-3-1] DEBUG c.e.d.b.duplexers.ChannelDuplexer - Enqueuing message into message queue

The actual query executes with no error in e.g. web UI, so I can't even check what is going wrong

wrong dependency in readme

fix a typo in the dependencies for Gradle and Maven in "README.md"

Gradle:
implementation 'com.edgedb:edgedb:0.2.1'

Should be changed to:
implementation 'com.edgedb:driver:0.2.1'

Maven:
artifactId: edgedb

Should be changed to:
artifactId: driver

query result items count less than should be

Hello there! I have a simple query like that:

select foo::Bar.someId

which returns a large set, ±1500 items:

{
  'foo-001',
  'foo-002',
  # many more here
}

If I execute such query in edgedb UI, all good. If I use EdgeDbClient in Java, I get only 600-700 items.
I tried to workaround it by using the other methods (queryJson, queryJsonElements) but no luck.
The only thing that helped isselect array_join(array_agg(foo::Bar.someId), ',') 🫠

Versions:

  • com.edgedb:driver:0.1.0"
  • edgedb/edgedb:3.1 ("3.1+f4bab56")
  • EdgeDB CLI 3.4.0+4d95a2c

Implicit limit is 0 in the config.

Package Distribution & CI

Figure out and set up CI pipeline to run tests and release snapshot versions of master, as well as release versions

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.