我可以在理解 YSQL 与 YCQL 之间的真正区别方面获得一些帮助吗?根据文档,我了解到当前 YUGABYTE 底层存储的实现是 DOCS DB,并使用 RAFT 进行复制。
基于此,我可以假设 YSQL 与 YCQL 的唯一区别是我们有触发器、存储过程吗?和 YSQL 而不是 YCQL 中的 SQL 功能?
我可以在理解 YSQL 与 YCQL 之间的真正区别方面获得一些帮助吗?根据文档,我了解到当前 YUGABYTE 底层存储的实现是 DOCS DB,并使用 RAFT 进行复制。
基于此,我可以假设 YSQL 与 YCQL 的唯一区别是我们有触发器、存储过程吗?和 YSQL 而不是 YCQL 中的 SQL 功能?
好问题。计划是随着时间的推移,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 之上,但它现在并不存在,而是优先级问题。