YDB背景

YDB

YDB是一个开源、分布式、容错的 SQL 数据库系统,将高可用性、可扩展性与强一致性和ACID事务相结合。它可以同时处理事务性(OLTP)、分析性(OLAP)和流式工作负载。

如何使用YDB?

事务工作负载(OLTP)

您可以使用YDB来存储应用程序的状态,无论其数据量多大或更改频率如何。每秒处理 PB 级数据和数百万次事务不是问题。

分析工作负载(OLAP)

您可以根据YDB中存储的数据创建分析报告,性能与专业分析型数据库管理系统媲美。无需在一致性和可用性方面做出任何妥协。

流式工作负载

您可以使用YDB主题功能在应用程序之间可靠地发送数据或跟踪YDB表的更改。您可以选择精确一次(Exactly-once)和最少一次(At-least-once)投递语义。

为何选择YDB?

数据库弹性扩展

根据需要随时添加或删除节点,以便根据需要轻松扩展集群。YDB具有单独的计算层和存储层,可以根据当前工作负载独立添加磁盘容量或CPU资源。

容错性

YDB被设计为在三个可用区中工作,即使整个可用区下线也能保持可用性。在磁盘、服务器或数据中心发生故障后,它能自动恢复,确保应用程序延迟时间的最小化。

用户友好性

使用YDB集群感觉就像使用无限制资源的单节点数据库管理系统,这得益于强一致性、ACID 事务、高性能查询、加载大量数据的能力以及对熟悉的SQL方言和JSON API的支持。

通用性

由于支持各种工作负载,YDB可以替代多个数据存储和处理系统,或者整个企业数据生态系统。

开源

YDB源代码是根据Apache 2.0许可证发布的,这是最宽松的开源软件许可证之一,因此没有云端或供应商锁定的风险。

与任何环境兼容

YDB可以部署在Kubernetes中,在任何云环境或本地数据中心中都可以使用。还可以在笔记本电脑或台式机上进行本地测试。

YDB的查询性能如何与其他分布式SQL数据库管理系统相比?

YCSB是最著名的键值存储基准测试工具。我们准备了一项性能研究,比较了YDB、CockroachDB 和 YugabyteDB 的键值存储性能。

阅读更多

谁在使用YDB?

Yandex Metrica

Yandex Metrica是世界上最大的网站和移动应用分析平台之一。它依赖于YDB实时构建用户会话。

迁移到YDB使得Yandex Metrica能够无限扩展存储的数据量和查询负载。现在,它的一个数据库包含了超过400TB的数据,并能承受超过1,000,000 RPS的负载。

Yandex Market

Yandex Market是独联体地区最大的电子商务平台之一。其购物车、结账和折扣等关键功能使用YDB来存储其状态。

通过选择YDB作为数据库管理系统使得Yandex Market的购物车能够承受数百倍的负载增长,同时保持严格的响应时间保证。

Auto.ru

Auto.ru在切换到YDB后,将Jaeger跟踪数据库的CPU消耗降低了三倍,使其无需采样即可每秒实现500,000的写入。

将YDB成功应用为跟踪信息存储证明了其可行性以及可扩展性、容错性和强一致性等关键属性。因此,Auto.ru随后选择YDB作为一些微服务的关系型数据库。

爱丽丝

爱丽丝是一个语音助手和智能家居生态系统。在切换到YDB后,爱丽丝团队解决了数据中心之间的同步以及切换主服务器时的停机问题。

使用YDB,他们减少了运维团队与数据库相关的工作量,扩展了存储数据的量到数百TB,负载到数十万请求/秒。迁移到YDB使得他们能够放弃手动数据分片,并在跨数据中心的集群中获得强一致性。

YDB有哪些典型使用场景?

处理尖峰工作负载

YDB 的弹性性能允许快速调整数据库分配的资源量,根据查询负载调整吞吐量。可以根据即将到来的活动(例如黑色星期五)或计划中的营销活动结果轻松增减所需的计算资源量。

可观测性数据的存储

YDB 中的列式表非常适用于存储日志和指标,可以通过SQL接口简便地访问。此外,低计算资源消耗和可扩展性使得 Jaeger 跟踪记录具有成本效益且易于使用。

文档数据库

虽然YDB使用严格的数据类型系统,对于 JSON 数据类型和函数 的支持扩展了YDB作为文档数据库的功能。

如何入门?

Docker

拉取当前最新版本的YDB Docker镜像:

docker pull cr.yandex/yc/yandex-docker-local-ydb:latest

创建一个工作目录,并从该目录启动本地YDB容器:

docker run -d --rm --name ydb-local -h localhost \
-p 2135:2135 -p 8765:8765 -p 2136:2136 \
-v $(pwd)/ydb_certs:/ydb_certs -v $(pwd)/ydb_data:/ydb_data \
-e YDB_DEFAULT_LOG_LEVEL=NOTICE \
-e GRPC_TLS_PORT=2135 -e GRPC_PORT=2136 -e MON_PORT=8765 \
cr.yandex/yc/yandex-docker-local-ydb:latest

访问Getting started › Self-hosted deploy › Docker获取更多信息。