yugabyte/yugabyte-db
GitHub: yugabyte/yugabyte-db
YugabyteDB 是一款云原生分布式 SQL 数据库,高度兼容 PostgreSQL,为关键业务应用提供强一致性事务和高可用弹性扩展能力。
Stars: 10140 | Forks: 1232
[](https://opensource.org/licenses/Apache-2.0)
[](https://docs.yugabyte.com/)
[](https://forum.yugabyte.com/)
[](https://communityinviter.com/apps/yugabyte-db/register)
[](https://github.com/yugabyte/ga-beacon)
# 什么是 YugabyteDB?
YugabyteDB 是一个兼容 PostgreSQL、[高性能](https://docs.yugabyte.com/stable/benchmark/)、云原生的[分布式 SQL](https://www.yugabyte.com/tech/distributed-sql/) 数据库。它结合了传统关系型数据库的优势与 NoSQL 系统的可扩展性,使其非常适合既需要事务一致性又需要处理大量数据的应用程序。它最适合需要绝对数据正确性且至少需要以下条件之一的云原生 OLTP(即实时、关键业务)应用程序:可扩展性、高容错能力或全球分布式部署。
* [核心功能](#core-features)
* [入门指南](#get-started)
* [构建应用程序](#build-applications)
* [当前路线图](#current-roadmap)
* [近期功能](#recently-released-features)
* [架构](#architecture)
* [需要帮助?](#need-help)
* [贡献](#contribute)
* [许可证](#license)
* [了解更多](#read-more)
# 核心功能
* **[强大的 RDBMS 能力](https://docs.yugabyte.com/stable/explore/ysql-language-features/)** Yugabyte SQL(简称 *YSQL*)复用了 PostgreSQL 查询层(类似于 Amazon Aurora PostgreSQL),从而支持其大部分功能(数据类型、查询、表达式、运算符和函数、存储过程、触发器、扩展等)。
* **[分布式事务](https://docs.yugabyte.com/stable/architecture/transactions/)** 事务设计基于 Google Spanner 架构。通过使用 Raft 共识进行复制以及使用*混合逻辑时钟*进行集群范围的分布式 ACID 事务,实现了写入的强一致性。支持*快照*(snapshot)、*可串行化*(serializable)和*读已提交*(read committed)隔离级别。读取(查询)默认具有强一致性,但可以动态调整以从跟随者和读副本进行读取。
* **[持续可用性](https://docs.yugabyte.com/stable/explore/fault-tolerance/)** YugabyteDB 具有原生故障转移和修复功能,对常见故障具有极高的弹性。可以将 YugabyteDB 配置为自动容忍磁盘、机架、节点、可用区、区域和云故障。对于在公有云上的单个区域跨多个可用区部署的典型 YugabyteDB 集群,RPO 为 0(意味着故障时不会丢失数据),RTO 为 3 秒(意味着故障节点提供的数据在 3 秒内可用)。
* **[水平可扩展性](https://docs.yugabyte.com/stable/explore/linear-scalability/)** 扩展 YugabyteDB 集群以获得更高的 IOPS 或数据存储容量非常简单,只需向集群添加节点即可。
* **[地理分布式、多云](https://docs.yugabyte.com/stable/develop/multi-cloud/)** YugabyteDB 可以部署在公有云中,也可以原生部署在 Kubernetes 内部。它支持跨越三个或更多故障域的部署,例如多可用区、多机架、多区域和多云部署。它还支持 xCluster 异步复制,包括双区域部署中的单向主从和双向多主配置。还支持读副本以低延迟提供(可能过时的)数据。
* **[多 API 设计](https://docs.yugabyte.com/stable/api)** YugabyteDB 查询层旨在实现可扩展性。目前,YugabyteDB 支持两种分布式 SQL API:[Yugabyte SQL (YSQL)](https://docs.yugabyte.com/stable/api/ysql/),这是一种复用 PostgreSQL 查询层的完全关系型 API;以及 [Yugabyte Cloud QL (YCQL)](https://docs.yugabyte.com/stable/api/ycql/),这是一种具有文档/索引支持且源自 Apache Cassandra QL 的类 SQL 半关系型 API。
* **[100% 开源](https://github.com/yugabyte/yugabyte-db)** YugabyteDB 在 [Apache 2.0 许可证](https://github.com/yugabyte/yugabyte-db/blob/master/LICENSE.md)下完全开源。开源版本拥有强大的企业级功能,例如分布式备份、静态数据加密、传输中 TLS 加密、变更数据捕获、读副本等。
创建 YugabyteDB 时考虑了几个关键设计目标,旨在解决现代云原生应用程序面临的挑战,同时保持传统关系型数据库的熟悉度和强大功能。在我们的[设计目标](https://docs.yugabyte.com/stable/architecture/design-goals/)中了解更多信息。
# 入门指南
* [快速开始](https://docs.yugabyte.com/stable/quick-start/)
* 尝试运行一个真实的演示应用程序:
* [面向微服务的电子商务应用](https://github.com/yugabyte/yugastore-java)
* [使用 OpenAI 和 pgvector 的住宿推荐服务](https://github.com/YugabyteDB-Samples/openai-pgvector-lodging-service/)
找不到您要的内容?有疑问?在我们的社区 [Slack](https://communityinviter.com/apps/yugabyte-db/register) 或 [论坛](https://forum.yugabyte.com) 上发布您的问题或评论。
# 构建应用程序
YugabyteDB 支持多种语言和客户端驱动程序,包括 Java、Go、NodeJS、Python 等。有关包括示例在内的完整列表,请参阅[驱动程序和 ORM](https://docs.yugabyte.com/stable/develop/drivers-orms/)。
# 当前路线图
以下是即将发布的版本中正在开发的一些关键功能列表。
| 功能 | 详情 |
| ---------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| [PostgreSQL 15 兼容性](https://github.com/yugabyte/yugabyte-db/issues/9797) | 获取最新功能、新的 PostgreSQL 扩展、性能优化和社区修复。 |
| [CDC 中的 PostgreSQL Publication/Replication slot API](https://github.com/yugabyte/yugabyte-db/issues/18724) | PostgreSQL 拥有庞大的社区,需要一个兼容 PG 的 API 来设置和使用数据库变更。 |
| [Bitmap scan](https://github.com/yugabyte/yugabyte-db/issues/22653) | 支持使用索引扫描、远程过滤器和增强代价模型的 Bitmap Scan。 |
| [基于代价的优化器 (CBO)](https://github.com/yugabyte/yugabyte-db/issues/10177) | 基于统计信息(如表大小、行数)和数据分布的高效查询计划。 |
| [并行查询执行](https://github.com/yugabyte/yugabyte-db/issues/17984) | 通过拆分单个查询在不同的 CPU 核心上执行来提高查询性能。 |
| [pgvector 扩展](https://github.com/yugabyte/yugabyte-db/issues/16166) | 支持向量数据类型,能够高效存储和查询高维向量。 |
| [连接管理](https://github.com/yugabyte/yugabyte-db/issues/17599) | 服务端连接管理,每个节点支持多达 30K 个连接 |
有关当前路线图中所有项目的列表,请参阅[路线图跟踪器](https://github.com/yugabyte/yugabyte-db/issues?q=is:issue+is:open+label:current-roadmap)。
# 近期发布的功能
## v2025.2 (Stable) - 2025年12月
**v2025.2** 是当前的[稳定](https://docs.yugabyte.com/stable/releases/versioning/#stable-releases)版本。稳定版本经过了较长时间的严格测试,可用于生产环境。有关此版本的功能和改进的完整列表,请参阅 [发行说明 - v2025.2](https://docs.yugabyte.com/stable/releases/ybdb-releases/v2025.2/)。以下是一些重要功能。
### 在新集群上默认启用的 PostgreSQL 功能**
对于运行 v2025.2 或更高版本的新集群,当您使用 [yugabyted](https://docs.yugabyte.com/stable/deploy/manual-deployment/start-yugabyted/)、[YugabyteDB Anywhere](https://docs.yugabyte.com/stable/yugabyte-platform/create-deployments/create-universe-multi-zone/) 或 [YugabyteDB Aeon](https://docs.yugabyte.com/stable/yugabyte-cloud/cloud-basics/create-clusters/) 进行部署时,默认启用以下 YSQL 功能(即将在 Early Access 轨道中推出):
* [Read committed](https://docs.yugabyte.com/stable/architecture/transactions/read-committed/)
* [Cost-based optimizer](https://docs.yugabyte.com/stable/best-practices-operations/ysql-yb-enable-cbo/)
* [Auto Analyze](https://docs.yugabyte.com/stable/additional-features/auto-analyze/)
* [YugabyteDB bitmap scan](https://docs.yugabyte.com/stable/reference/configuration/postgresql-compatibility/#yugabytedb-bitmap-scan)
* [Parallel append](https://docs.yugabyte.com/stable/additional-features/parallel-query/)
此外,如果您升级到 v2025.2 且该集群已启用基于代价的优化器,则默认启用以下功能:
* Auto Analyze
* YugabyteDB bitmap scan
* Parallel append
请注意,除注明的例外情况外,升级现有集群不会更改任何这些功能的默认设置。
有关在 YugabyteDB 中开发的用于增强兼容性的 PostgreSQL 功能的更多信息,请参阅[增强的 PostgreSQL 兼容模式](https://docs.yugabyte.com/stable/reference/configuration/postgresql-compatibility/)。
### [并发 DDL 和 DML 的表级锁定](https://docs.yugabyte.com/stable/stable/explore/transactions/explicit-locking/#table-level-locks)
添加了表级锁以支持跨会话的并发 DDL 和 DML 操作,提高了工作负载并发性并减少了模式更改期间的冲突。
### [改进了跨节点的时间同步](https://docs.yugabyte.com/stable/deploy/manual-deployment/system-config/#configure-clockbound)
通过使用 [ClockBound](https://github.com/aws/clock-bound) 库增强了跨节点的时间同步,这是一个开源守护程序,允许您比较时间戳以确定事件和事务的顺序,独立于实例的地理位置;它将时钟精度提高了几个数量级。
## v2025.1 (Stable) - 2025年7月
有关此版本的功能和改进的完整列表,请参阅 [发行说明 - v2025.1](https://docs.yugabyte.com/stable/releases/ybdb-releases/v2025.1/)。以下是一些重要功能。
### [兼容 PostgreSQL 15 的 YugabyteDB 集群](https://docs.yugabyte.com/stable/api/ysql/pg15-features/)
这是第一个以 PostgreSQL fork 从版本 11.2 重定为 15.0 为特色的稳定版本,使您能够利用这两个版本之间 PostgreSQL 中引入的许多关键功能。此升级为 YSQL API 带来了对众多功能的支持,包括存储生成列、分区表上的外键以及唯一索引中的非重复 NULL。它还引入了查询执行优化,如增量排序和记忆化,以及各种可观察性和安全增强功能。
我们也很高兴地宣布,YugabyteDB 2025.1.0.0 支持原地在线升级和降级——即使 PostgreSQL fork 已重定为 15.0。
**注意**,源集群必须运行 2024.2.3.0 或更高版本才能升级到 2025.1.0 版本。
### [pgvector 的 HNSW 索引支持](https://docs.yugabyte.com/stable/additional-features/pg-extensions/extension-pgvector/#vector-indexing)
通过在向量工作负载中实现高效的相似性搜索,带来了 AI 原生能力。通过分层可导航小世界 (HNSW) 索引增强的向量搜索功能,提供了更快、更高效的高维向量查找。
### [自动事务 xCluster DDL 复制](https://docs.yugabyte.com/stable/deploy/multi-dc/async-replication/async-transactional-setup-automatic/#set-up-automatic-mode-replication)
YugabyteDB 现在支持跨 xCluster 设置无缝复制 YSQL DDL 更改,无需在源集群和目标集群上手动应用 DDL。
### [并行查询:为托管表启用 PG 并行性](https://docs.yugabyte.com/stable/additional-features/parallel-query/)
通过允许 PostgreSQL 利用多个 CPU,提高了托管表的查询性能,从而缩短了查询执行时间。
### [INSERT ON CONFLICT 批处理优化](https://docs.yugabyte.com/stable/reference/configuration/yb-tserver/#yb-insert-on-conflict-read-batch-size)
使用 `INSERT ... ON CONFLICT` 子句的查询经过优化以实现高效执行,并在执行多条语句时应用自动批处理以提高性能。
### [基于代价的优化器 (CBO)](https://docs.yugabyte.com/stable/best-practices-operations/ysql-yb-enable-cbo/)
CBO 利用 YugabyteDB 的分布式存储架构和高级查询执行优化,包括查询下推、LSM 索引和批量嵌套循环连接,以提供类似 PostgreSQL 的性能。
### [Bitmap scan 支持](https://docs.yugabyte.com/stable/reference/configuration/yb-tserver/#enable-bitmapscan)
合并多个索引以进行更高效的扫描。
## v2.25 (Preview) - 2025年1月
**v2.25** 是最近的 [Preview](https://docs.yugabyte.com/stable/releases/versioning/#preview-releases) 版本。这包括正在开发的功能,仅建议用于开发和测试。有关此版本的功能和改进的完整列表,请参阅 [发行说明 - v2.25](https://docs.yugabyte.com/stable/releases/ybdb-releases/v2.25/)。以下是一些重要功能。
### [PostgreSQL 15 支持](https://docs.yugabyte.com/stable/develop/pg15-features/)
作为此版本的一部分,我们已将 PostgreSQL fork 从版本 11.2 升级到 15.0,使您能够利用这两个版本之间 PostgreSQL 中引入的许多关键功能。此升级为 YSQL API 带来了对众多功能的支持,包括存储生成列、分区表上的外键以及唯一索引中的非重复 NULL。它还引入了查询执行优化,如增量排序和记忆化,以及各种可观察性和安全增强功能。
### [查询诊断](https://docs.yugabyte.com/stable/explore/query-1-performance/query-diagnostics/)
此功能通过允许您捕获和导出详细的诊断信息,包括绑定变量和常量、pg_stat_statements 统计信息、模式详细信息、活动会话历史记录和执行计划,显著简化了性能不佳的 SQL 查询的调优。
### [活动会话历史记录](https://docs.yugabyte.com/stable/explore/observability/active-session-history/)
此外,提供系统活动实时和历史视图的活动会话历史记录现已默认启用。
# 架构
在我们的[文档](https://docs.yugabyte.com/stable/architecture/)中查看详细的架构。
# 需要帮助?
* 您可以在我们的社区 [Slack](https://communityinviter.com/apps/yugabyte-db/register)、[论坛](https://forum.yugabyte.com)、[Stack Overflow](https://stackoverflow.com/questions/tagged/yugabyte-db) 以及 Twitter [@Yugabyte](https://twitter.com/yugabyte) 上提问、寻找答案并帮助他人。
* 使用 [GitHub issues](https://github.com/yugabyte/yugabyte-db/issues) 报告问题或请求新功能。
* 要排查 YugabyteDB 和集群/节点级别的问题,请参阅[故障排除文档](https://docs.yugabyte.com/stable/troubleshoot/)。
# 贡献
作为一个非常重视用户社区的开源项目,我们欢迎以 GitHub pull requests 的形式做出贡献。请参阅我们的[贡献者指南](https://docs.yugabyte.com/stable/contribute/)开始。功能的讨论和 RFC 在我们论坛](https://forum.yugabyte.com/c/design-discussions/7)的设计讨论部分进行。
对于 AI 代理,请参阅 [AGENTS.md](AGENTS.md) 以获取有关使用此代码库的指导。
# 许可证
此存储库包含两个许可方式不同的组件。有关详细的目录映射,请参阅 [LICENSE.md](LICENSE.md)。
* **YugabyteDB**(`src/`、`java/` 等中的核心数据库)- [Apache License 2.0](licenses/APACHE-LICENSE-2.0.txt)
* **YugabyteDB Anywhere**(`managed/` 中的管理平台)- [Polyform Free Trial License 1.0.0](licenses/POLYFORM-FREE-TRIAL-LICENSE-1.0.0.txt)
# 了解更多
* 要查看我们的更新,请访问[分布式 SQL 博客](https://blog.yugabyte.com/)。
* 有关深入的设计和架构详细信息,请参阅我们的[设计规范](https://github.com/yugabyte/yugabyte-db/tree/master/architecture/design)。
* [技术讲座](https://www.yugabyte.com/yftt/)和[视频](https://www.youtube.com/c/YugaByte)。
* 了解 YugabyteDB [与其他数据库的比较](https://docs.yugabyte.com/stable/faq/comparisons/)。标签:Apache 2.0, JS文件枚举, Kubernetes数据库, NewSQL, NoSQL特性, OLTP, PostgreSQL兼容, Python工具, YCQL, YSQL, YugabyteDB, 事务一致性, 云原生数据库, 全球部署, 关系型数据库, 关键任务应用, 分布式SQL, 分布式存储, 可扩展性, 子域名突变, 客户端加密, 容灾, 开源, 数据库, 测试用例