用途:编写或审查面向 YugabyteDB YCQL(Cassandra 兼容 API,端口 9042)的 CQL 代码、模式定义与应用代码。相较 Apache Cassandra,其全局二级索引具备强一致性(ACID)。
模式设计:分区键决定 tablet 分布,应选分布均匀的列;聚类列决定分区内排序。示例:CREATE TABLE orders (customer_id UUID, order_date TIMESTAMP, order_id UUID, total DECIMAL, PRIMARY KEY ((customer_id), order_date DESC, order_id)) WITH CLUSTERING ORDER BY (order_date DESC, order_id ASC);
索引:全局二级索引如 CREATE INDEX idx_orders_date ON orders (order_date); 覆盖索引用 INCLUDE 避免回表:CREATE INDEX idx_orders_customer ON orders (customer_id) INCLUDE (total, order_date); 唯一索引:CREATE UNIQUE INDEX idx_users_email ON users (email);
数据类型:JSONB 仅用于真正动态的字段;计数器增减速为单次 Raft 往返;集合应保持小规模。列建议 2 MB 以内,行 32 MB 以内。
TTL:支持表、行、列级过期,例如 WITH default_time_to_live = 86400、USING TTL 3600;事务表不支持 TTL。
一致性:仅支持 QUORUM(默认,强一致)与 ONE(从最近副本读取,可能陈旧)。可用 Java 语句 setConsistencyLevel(ConsistencyLevel.ONE)。
轻量事务:IF EXISTS / IF NOT EXISTS 仅需一次 Raft 往返。
查询优化:始终使用预处理语句以实现分区感知路由;批量操作尽量针对同一分区;使用单个集群对象管理连接(每 YB-TServer 约 1–2 条连接支持 64–128 线程);写密集负载可自定义带退避的重试策略。大表扫描可用 partition_hash 分片并行;整表清理用 TRUNCATE 而非 DELETE。仅用 YCQL 的部署可在 yb-master 上设置 --use_memory_defaults_optimized_for_ysql=false。暂未提供具体版本要求、驱动版本与部署细节。