一、本质定位

Tcaplus支持用ProtoBuf或Tdr来定义表结构; 最主要的差异是SDK的ORM接口是Tdr还是Protobuf的对象。 功能上两者相差不是很大。 tdr表变更需要严格维护好字段和整个表version属性,以实现高版本表结构兼容低版本; pb表通过protobuf的默认tlv机制实现高低版本兼容。

二、数据类型差异

维度 TDR 表 PB 表
基础类型 char, int8/int16/int32/int64, float, double、date、time、datetime 标准 PB 类型:int32/64、uint32/64、sint32/64、fixed32/64、float、double、bool、string、bytes
复合类型 struct(嵌套结构体)+ union(联合体) message(嵌套消息)+ oneof + map + enum

三、表变更规则差异

维度 TDR 表 PB 表
Value 字段删除 不允许 允许删除 optional 字段(但tag number不能再复用)
数组(字符串) 长度 只能变大不能变小 无需指定长度,不存在变更需求

四、特殊功能支持

功能 TDR 表 PB 表
本地 TopN 索引(排行榜) 支持 不支持
分布式索引(全局索引) 支持 支持
map 类型 不支持 原生支持 map
默认值 默认为""或0; 可通过 defaultvalue 显式设置; 默认为""或0; proto3 不支持显式设置;proto2 支持显式设置;
部分字段查询 支持(一级字段) 支持(包括嵌套多级字段)
条件过滤 支持(包括嵌套多级字段) 支持(包括嵌套多级字段)
条件更新 仅支持对一级数组字段的PUSH/SET/POP操作 支持对数组成员(包括map成员)或者多级嵌套字段部分更新
记录过期淘汰 TTL 支持 支持
乐观锁 支持 支持
SDK C++、Java、Go C++、Go
RESTful API 不支持 支持

Tcaplus没有空值(NULL), 未赋值的字段均使用默认值

results matching ""

    No results matching ""