Y
HN Search
Hacker News Search
new
|
comments
|
top
|
jobs
RedCrowbar
searching PlanetScale…
1.
▲
2.
▲
3.
▲
4.
▲
5.
▲
6.
▲
12 ms
·
61.
▲
by
RedCrowbar
5y ago
GraphQL is already supported: https://www.edgedb.com/docs/graphql/index
62.
▲
by
RedCrowbar
5y ago
It's a matter of taste. We decided to do a "looks like SQL + GraphQL" style because that's what most people are familiar when they think about a query language. That said, the functional variant is a likely way to repre
63.
▲
by
RedCrowbar
5y ago
It's built on Postgres, but it isn't a _thin_ wrapper. We lean hard into Postgres query machinery and type system in order to pull off EdgeQL and graph-relational efficiently.
64.
▲
by
RedCrowbar
5y ago
Data is stored relationally in Postgres in 3NF. References are indexed automatically, but you still need to index type properties if you use them in `filter`.
65.
▲
by
RedCrowbar
5y ago
(EdgeDB CTO here) In a classic relational model everything is a tuple containing scalar values. Graph-relational extends the relational data model in three ways: - every relation always has a global immutable key independent of data (expli
66.
▲
by
RedCrowbar
5y ago
Github discussions are a good place for long form questions/proposals. We also just created a Discord server, everyone is welcome to join: https://www.edgedb.com/p/discord
67.
▲
by
RedCrowbar
5y ago
GraphQL is a lot more limited because it was never really intended to be used as a full-blown database query language. While EdgeDB supports GraphQL as a way to do queries, this support is currently experimental and is not intended to be u
68.
▲
by
RedCrowbar
5y ago
> One thing that separates EdgeDB from ORMs is the explicit design decision to be coupled with one specific database. Yes, this is fundamental, and it is what enables us to drive the innovation in the query language. PostgreSQL's q
69.
▲
by
RedCrowbar
5y ago
> I both hope you have great success Thank you! > also that we get to have beer at a conference sometime to share war stories and trade-offs Looking forward!
70.
▲
by
RedCrowbar
5y ago
> Love what you're doing. Thanks! > any plans to implement a full stored procedure language? There are plans, and they have the word "Wasm" in them :-) You can also do a lot with pure-EdgeQL functions already. > how
71.
▲
by
RedCrowbar
5y ago
(EdgeDB CTO here) > The schema you have designed helps a lot on the server-side. If this schema can be extensible (that is, people can make extensions by allowing extra information in the schema that the DBMS ignores, similar to comments
72.
▲
by
RedCrowbar
5y ago
EdgeQL is getting support for generic partitioning/aggregating `GROUP` very soon [1], so we are giving some love to the analytical side of things too :-) We definitely need more collective effort put into "Better SQL", so PRQ
73.
▲
by
RedCrowbar
5y ago
Starting with an expressive declarative schema and building everything around it is exactly the approach we take in EdgeDB [1]. One of the key ideas is that you should be able to define almost anything not just statically, but as a result
74.
▲
by
RedCrowbar
5y ago
edb server is mostly a development-mode proxy to edgedb-server, which is the actual server binary and supports the same options. The Docker image README [1] has some documentation on the supported options. [1] https://github.com
75.
▲
by
RedCrowbar
5y ago
You can. It is possible to point EdgeDB at an arbitrary Postgres cluster and have it coexist with other databases.
76.
▲
by
RedCrowbar
5y ago
There aren't any special "bulk" interfaces at the moment, you can load data via a small program using our language bindings (INSERT in a loop). We'll add support for batched `executemany()` soon to cater to very large l
77.
▲
by
RedCrowbar
5y ago
There is a difference in how large a set `array_agg` would need to process, since `LEFT JOIN` may produce a very sparse relation and NULLs still have to be scanned over.
78.
▲
by
RedCrowbar
5y ago
If given a recursive schema like this: type Tree { property value -> str link parent -> Tree } you'd traverse the link as usual: SELECT Tree { value, parent: { va
79.
▲
by
RedCrowbar
5y ago
EdgeQL lets you do arbitrary joins as well. Here's how you could compute salaries of employees by department even if you for some reason don't have a link between Employee and Department: SELECT Department { name,
80.
▲
by
RedCrowbar
6y ago
Both EdgeQL and SQL disregard the RM proscription about duplicate tuples for practical reasons: 1. Elimination of duplicates from every projection is prohibitively expensive. 2. Sometimes you actually _want_ duplicates to show up without in
81.
▲
by
RedCrowbar
6y ago
> Can you model this in EdgeQL? Absolutely! WITH april := <datetime>'2020-04-01T00:00+00', NewCustomers := ( SELECT Customer FILTER NOT EXISTS ( SELECT .orders FILTER .
82.
▲
EdgeDB Roadmap
(edgedb.com)
6 points
by
RedCrowbar
7y ago
|
0 comments
83.
▲
by
RedCrowbar
7y ago
Take the CASE WHEN example from the blog. An equivalent EdgeQL expression is SELECT 'one' IF value = 1 ELSE 'not one' If value is an empty set, then the result is _always_ an empty set, unlike SQL that pretends N
84.
▲
by
RedCrowbar
7y ago
Alas, we don't support matviews yet, but it's on the TODO list.
85.
▲
by
RedCrowbar
7y ago
> This is a reinvention of the the hierarchical database It's not. Just because data can be fetched as a set of "tree-like" things does not make the model hierarchical in any way. But it makes lots of practical use cases
86.
▲
by
RedCrowbar
7y ago
Empty set differs from NULL is that you get an empty set if you apply an element-wise function over it (which most operators and functions in EdgeQL are). > Why not just use an Option/Maybe type? We are considering adding algebraic
87.
▲
by
RedCrowbar
7y ago
There's also HTTP/JSON support.
88.
▲
by
RedCrowbar
7y ago
EdgeDB is not quite D if you read all the proscriptions to the letter, but it's very close :-)
89.
▲
by
RedCrowbar
7y ago
The difference is that `+` is defined as a strict function (returns empty on empty input): plus(a, b), whereas sum() is an aggregate that is specifically defined as 0 on empty input.
90.
▲
by
RedCrowbar
7y ago
> {value} OR {} = {value}, not {} (OR ≡ ∪), <bool>{} being {} instead of a true boolean value This is because we define infix OR as {a OR b | ∀ (a, b) ∈ (A x B)} Same goes for the cast function. You may argue that this is confusing
More ›