3

我可以在理解 YSQL 与 YCQL 之间的真正区别方面获得一些帮助吗?根据文档,我了解到当前 YUGABYTE 底层存储的实现是 DOCS DB,并使用 RAFT 进行复制。

基于此,我可以假设 YSQL 与 YCQL 的唯一区别是我们有触发器、存储过程吗?和 YSQL 而不是 YCQL 中的 SQL 功能?

4

1 回答 1

4

好问题。计划是随着时间的推移,YSQL 将拥有 YCQL 中的大部分功能,但今天的情况并非如此。这是因为在 YSQL 中要实现奇偶校验还有大量工作要做,其中一些工作已经在进行中。

YSQL 特性

YSQL 重用了 PostgreSQL 的上半部分和一个称为 DocDB 的水平可扩展的下半部分。因此,YSQL 将支持所有 PostgreSQL 特性——包括存储过程、触发器、公用表表达式、扩展和外部数据包装器(最后一个特性尚未完成)。

YSQL 中没有的 YCQL 功能

这是 YSQL 中没有的 YCQL 功能列表。

  • 集群感知:客户端驱动程序是集群感知的,这意味着客户端只需一个接触点就可以发现集群的所有节点。这些客户端驱动程序也会收到节点添加/删除的通知,因此应用程序不需要负载均衡器来使用分布式集群。作为jdbc-yugabytedb项目的一部分,正在将此功能合并到 YSQL 中。

  • 拓扑感知:客户端驱动程序也是拓扑感知的,这意味着它们会被通知部署集群的各个节点的区域/区域。他们可以执行诸如从最近的区域/数据中心读取等操作。

  • 自动数据过期: YCQL 支持使用 TTL 功能自动过期数据 - 您可以在表或行级别为数据设置保留策略,并且旧数据会自动从数据库中清除。

  • 集合数据类型: YCQL 支持集合数据类型,例如集合、映射、列表。请注意,YCQL 和 YSQL 都支持 JSONB,但可用于对上述内容进行建模。

  • Cassandra API 兼容YCQL 与 Cassandra API 兼容,因此支持 Cassandra 生态系统项目。示例包括 Spark 和 Kafka 连接器、JanusGraph 和 KairosDB 支持等。请注意,虽然这些生态系统集成可以构建在 YSQL 之上,但它现在并不存在,而是优先级问题。

于 2019-12-30T04:19:23.180 回答