Stargate REST API是否支持Cassandra(DSE 6.8)的批量查询功能?
Stargate REST API 对DSE 6.8 Cassandra 批量查询的支持说明
Stargate REST API 完全适配DSE 6.8版本的Cassandra,原生支持批量读写操作,支持的批量操作类型包含INSERT、UPDATE、DELETE三类语句的混合/同类型批量提交,底层对应Cassandra原生的BATCH操作逻辑,也支持自定义批量操作的一致性级别、是否开启原子性等参数。
实际使用示例
使用前需先获取Stargate有效API访问令牌,以及对应Cassandra键空间的读写操作权限,以下示例均基于/v2/keyspaces/{keyspace_name}的接口路径实现。
1. 单类型批量插入示例
请求方式为POST,接口路径为/v2/keyspaces/{your_keyspace}/batch,请求体示例如下:
{ "batches": [ { "table": "user_info", "values": { "user_id": 1001, "user_name": "张三", "email": "zhangsan@example.com" } }, { "table": "user_info", "values": { "user_id": 1002, "user_name": "李四", "email": "lisi@example.com" } }, { "table": "user_info", "values": { "user_id": 1003, "user_name": "王五", "email": "wangwu@example.com" } } ], "options": { "consistency": "LOCAL_QUORUM" } }
上述示例会批量向user_info表插入3条用户数据,一致性级别设置为本地法定人数。
2. 混合操作批量提交示例
Stargate支持同一批量请求内同时包含插入、更新、删除操作,示例请求体如下:
{ "batches": [ { "table": "user_info", "values": { "user_id": 1004, "user_name": "赵六", "email": "zhaoliu@example.com" } }, { "table": "user_info", "id": { "user_id": 1001 }, "values": { "email": "zhangsan_new@example.com" } }, { "table": "user_info", "id": { "user_id": 1003 }, "delete": true } ], "options": { "atomic": true, "consistency": "LOCAL_ONE" } }
atomic参数设置为true时,整个批量操作符合Cassandra原子性承诺,要么全部成功要么全部失败。
3. 响应结果说明
操作成功会返回200状态码,响应体示例:
{ "success": true }
如果操作失败,会返回对应错误码和具体错误信息,字段类型不匹配、权限不足、一致性无法满足等场景都会有明确提示。
注意事项
- 单次批量请求的总数据量不要超过1MB,避免触发Cassandra的批量操作大小限制,影响集群性能
- 批量操作内的语句尽量属于同一个分区键,避免跨分区批量带来的性能损耗和一致性风险
- DSE 6.8搭配的Stargate版本最低要求为v1.0.0以上,低于该版本可能不支持批量接口
内容的提问来源于stack exchange,提问作者David
相关产品推荐
相关产品推荐

