# edgedb
**Repository Path**: beginning_of_spring/edgedb
## Basic Information
- **Project Name**: edgedb
- **Description**: 下一代图-关系数据库 EdgeDB 的服务器代码镜像,交流讨论请移步【内宣】库,谢谢!
- **Primary Language**: Python
- **License**: Apache-2.0
- **Default Branch**: zh
- **Homepage**: https://gitee.com/edgedb/devrel
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 11
- **Created**: 2025-05-12
- **Last Updated**: 2025-05-12
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
代码在哪里?查看 master 分支
EdgeDB 是什么?
EdgeDB 是一种全新的数据库,
集关系数据库、图数据库和 ORM 的长处于一身,
我们叫它图-关系型数据库。
🧩 无表式类型定义 🧩
作为应用程序的根基,数据库建模(schema)要能轻松书写出来才好,且代码应通俗易懂。
不要再用外键了,表格数据建模是旧时代的产物,与现代编程语言[并不相配](
https://en.wikipedia.org/wiki/Object%E2%80%93relational_impedance_mismatch
)。与之相反,EdgeDB 的 schema 完全符合编程的思路:你可以定义**对象**及其**属性**,并用**链接**来关联其它对象。
```
type 人物 {
required property 姓名 -> str;
}
type 电影 {
required property 标题 -> str;
multi link 演员 -> 人物;
}
```
虽然这个例子很简单,但实际上 EdgeDB
可以支持几乎所有数据库应有的功能:严格的类型系统、索引、约束、计算属性、存储过程等等。除此之外,EdgeDB
还提供许多亮眼的创新功能,比如链接属性、类型混编,以及顶尖的 JSON 支持。更多内容请参阅
[schema 文档](https://www.edgedb.com/docs/datamodel/index)。
🌳 数据就是对象 🌳
EdgeDB 彻底打破了 SQL 的束缚,从零设计了新的查询语言
EdgeQL,拥有着无与伦比的超能力:其查询结果直接就是结构化的数据对象,而不再是扁平的行列式;级联抓取相关对象易如反掌,妈妈再也不用担心我不会用 JOIN 了。
```
select 电影 {
标题,
演员: {
姓名
}
}
filter .标题 = "黑客帝国"
```
EdgeQL 的查询语句还是*模块化的*,任何 EdgeQL 查询语句都可以被当做是一个表达式,直接嵌在另一个查询语句中,这完美解决了
SQL 中恼人的*子查询*或*嵌套更新*的问题。
```
insert 电影 {
标题 := "黑客帝国:矩阵重启",
演员 := (
select 人物
filter .姓名 in {
'基努·里维斯',
'凯瑞-安·莫斯',
'劳伦斯·菲什伯恩'
}
)
}
```
EdgeQL 远不止上面这些——它还有一个内容丰富的标准库、计算属性、多态查询、`with`
子句、事务等等很多功能,完整信息请参阅 [EdgeQL 文档](https://www.edgedb.com/docs/edgeql/index)。
🦋 完胜 ORM 🦋
虽然 EdgeDB 在一定程度上与 ORM 解决的是同一问题,但 EdgeDB 还能处理很多 ORM 无法解决的问题。EdgeDB
是一个完整的数据库产品,有着[正儿八经的查询语言](https://www.edgedb.com/docs/edgeql/index)、一套
[migration 系统](https://www.edgedb.com/docs/guides/migrations/index)、一整套支持不同语言的[官方客户端驱动](
https://www.edgedb.com/docs/clients/index)、一个[ CLI 命令行工具](
https://www.edgedb.com/docs/cli/index),以及即将问世的托管云平台。EdgeDB
的使命是重新定义开发者用到的方方面面,从建模到 migration,从查询到管理数据库。
想要尝试一下新世界的开发体验吗?你只需要三个命令,就可以完成安装
CLI、启动新数据库实例,并且进入交互式 EdgeQL 查询终端。
```
$ curl --proto '=https' --tlsv1.2 -sSf https://sh.edgedb.com | sh
$ edgedb project init
$ edgedb
edgedb> select "Hello world!"
```
Windows 用户请使用下面的 Powershell 命令来安装 CLI。
```
PS> iwr https://ps1.edgedb.com -useb | iex
```
## 开始学习 EdgeDB
官方学习资源:
- **[快速上手](https://www.edgedb.com/docs/guides/quickstart)**:纯新手建议先看这篇教程,10
分钟就可以快速完成并上手。
- **[交互式教程](https://www.edgedb.com/tutorial)**:分阶段地深入学习 EdgeQL
查询语言,跟随教程的同时,可以在网页上直接尝试自己写的 EdgeQL 查询语句,不需要安装任何东西。
- **[电子书](https://www.edgedb.com/easy-edgedb)**:插图版《EdgeDB
易经》(中文版已上线!)也适合于纯新手,从最基础的概念开始,用故事穿插的方式,带你完整了解 EdgeDB 所有高深的概念。
- **官方文档**:直接读最正宗的文档,学习[建模](
https://www.edgedb.com/docs/datamodel/index)或[编写 EdgeQL](https://www.edgedb.com/docs/edgeql/index)!
## 参与贡献
我们十分欢迎各种 PR!搭建本地 EdgeDB 开发环境,请参阅[EdgeDB 开发指南](https://www.edgedb.com/docs/internals/dev)。
[报告问题(英文) 👉](https://github.com/edgedb/edgedb/issues/new/choose)
[报告问题(中文非官方) 👉](https://gitee.com/edgedb/devrel/issues/new)
[开启讨论(英文) 👉](https://github.com/edgedb/edgedb/discussions/new)
[开启讨论(中文非官方) 👉](https://gitee.com/edgedb/devrel/issues/new)
[在线聊天(英文) 👉](https://discord.gg/umUueND6ag)
## 许可协议
本仓库中的代码遵循 Apache 2.0 许可协议进行开发与分发,详见 [LICENSE 文件](LICENSE)。