EdgeDB 1.0 正式发布

2022-02-11 08:18:39 +08:00
 fantix

(想找一个类似 Show HN 的中文讨论区,思来想去好像也只有这里可以了?楼主会尽量尝试回答大家的技术问题。)

4350 次点击
所在节点    数据库
45 条回复
kaellzt777
2022-02-11 14:46:34 +08:00
curl https://sh.edgedb.com --proto '=https' -sSf1 | sh
info: downloading installer
Warning: Not enforcing strong cipher suites for TLS, this is potentially less secure
sh:行 258: $3: 为绑定变量

然后就没了?
sunng87
2022-02-11 14:51:18 +08:00
之前印象楼主还是早期的 Rust 开发者
scyuns
2022-02-11 15:29:41 +08:00
这个数据库 好像今天看到了 好多人都在说
feilaoda
2022-02-11 17:58:03 +08:00
有意思。最近自己也写了一个玩具,使用类似的 QL 进行查询,Join 能力放在了应用层,后端 DB 不限,查询 QL 类似如下

```
{
"query": {
"project": "1440605538441293825",
"name": "User"
},
"args": {
"id": "tom",
"name": {"NOTNULL": ""},
"department.id": {"EQ": "1001"},
"department.name": {"EQ": "dep1"},
"roles.id": {"EQ": "101"},
"roles.name": {"EQ": "admin"},
"roles.permissions.id": {"EQ": "10001"},
"roles.permissions.name": {"IN": ["edit", "admin"]}
}
}
```
fantix
2022-02-11 20:45:24 +08:00
@Braisdom 期待看到您设计的新查询语言!适配现有数据库确实也是实实在在的需求,但 EdgeDB 还是选择了另外一条路线。
fantix
2022-02-11 21:37:42 +08:00
@bnm965321 对的,来 EdgeDB 一年了。好像确实没有直接提供 Relay 风格的 schema , 不过看代码应该不难加。不过,你说的 GUI 是类似 https://github.com/edgedb/edgedb-studio 这样的吗?
fantix
2022-02-11 21:49:54 +08:00
fantix
2022-02-11 22:12:13 +08:00
@kaellzt777 这确实是一个 bug !已提交修复 PR: https://github.com/edgedb/edgedb-cli/pull/656

不过你可以先试试加上 --tlsv1.2:
curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
fantix
2022-02-11 22:17:23 +08:00
@sunng87 哟那可不敢当,只是 0.13 时写过点 zeromq 的东西而已
fantix
2022-02-11 22:34:02 +08:00
@feilaoda 有趣的语法~那生成 SQL 时是怎么知道要 join 哪个表的呢?是另有 schema 定义吗?
devtiange
2022-02-11 23:02:56 +08:00
感谢楼主, 提两个问题:
1) 能不能在现有的 psql 上安装, 好像没找到相关文档?
2) 官方给出的 client 都是后端的, 如果后端用 edgeql, 那么 web 前端怎么和后端通信, 还是用 REST/graphql, 然后转一层吗? 有没有推荐的套路?
fantix
2022-02-11 23:46:24 +08:00
@devtiange
1 )可以的,用 `--backend-dsn` 参数指定一个 PostgreSQL 的 DSN 就行,初次运行会创建内置库和 schema ,稍慢。https://www.edgedb.com/docs/guides/deployment/docker#edgedb-server-backend-dsn
2 )可以有不同套路,传说中的 serverless 可以直接用 HTTP 向 EdgeDB 发送 EdgeQL 请求( https://www.edgedb.com/docs/clients/90_edgeql/index#edgeql-over-http ),另外如果是 REST 的话,可以用 query_json() 直接让 EdgeDB 返回 JSON 字符串,后端无需处理直接回传给前端,节省额外的处理和序列化的工夫。接下来还在计划一种在 EdgeDB Server 中执行用户 WebAssembly 的功能,也可以用来做后端。
feilaoda
2022-02-12 10:11:53 +08:00
@fantix Entity 类上有 1:N, N:N 这些关系,类似 hibernate ,通过这个 QL 就自动可以查询 Join 了。
bnm965321
2022-02-12 14:58:21 +08:00
@fantix 对。我想写一个 robo 3t for mongodb 的东东,原来官方已经写好了
expexp
2022-02-12 18:35:35 +08:00
没有理解这个的用意,你要知道,让各种团队学习新的语言成本是非常非常高的。哪怕只是一个 extension 也是如此。所以你们的 blog 必须要说清楚到底解决了什么问题,才有可能让大家来试用,以及切换。
tabris17
2022-02-13 18:57:21 +08:00
既然这东西只是 posrgre 的转译,为何不做为模块发布,而要起一个服务呢
fantix
2022-02-13 23:55:49 +08:00
@tabris17 好问题!有多个原因,主要是方便支持多种编程语言,以及对 I/O 更好的掌控,同时还带来了支持更多功能的可能性,比如共享连接池和 CLI 相关的许多提升 DX 的工作流。理论上如果你只用 Python asyncio 写服务的话,可以内嵌一个 EdgeDB 模块,但节省不了太多资源,反而影响了 DX 和心情。
tabris17
2022-02-14 12:37:21 +08:00
@fantix 但是站在运维的角度,多起一个服务就意味着多一个单点故障节点的隐患,事实上在增加运维的工作负担,如果这个服务的功能仅仅是转译 SQL ,恐怕很难说服运维去部署
fantix
2022-02-14 21:57:55 +08:00
@tabris17 嗯,你和 #35 @expexp 大体上是一个意思:现有体制很难动摇,开发者有学习成本和风险、运维有维护成本和单点风险,等等。这确实都是实际存在的困难,也是 EdgeDB 愿意去挑战的,新事物总是有早期使用者和大众接受期(如果幸运的话),好在早期使用者对 EdgeDB 给出的反馈是非常鼓舞人心的,因为 EdgeDB 确实解决了很多 SQL 体系中的问题,比如无须再使用 ORM 和 pgBouncer/pg-Pool 等,EdgeDB 的成本和风险对他们来说是可以接受的,这也是 EdgeDB 敢于走向大众的原因。另:EdgeDB 的 HA 是我做的,有 bug 我来修……
fantix
2022-02-14 22:08:11 +08:00
有个朋友做了个 AWS 里的 HA EdgeDB: https://github.com/aaronbrighton/cdk-edgedb-demo

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/833090

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX