ob为什么同时存在两种迭代接口的代码

来源:互联网 发布:黄文炳 知乎 编辑:程序博客网 时间:2024/05/19 05:33

(cell接口、row接口)

oceanbase的早期版本类似于一个key-value no sql 系统,所以采用的是cell接口,读写是以cell为基本单位。

oceanbase0.4以及后续的版本,才真正可以称作一个数据库,所以cell接口已经不适应当前的设计,所以就采用了row接口,以row为迭代的基本单位。

这也是现在在oceanbase代码中有两套接口并存的原因,以后cell接口会逐渐废弃。

1.cell
struct ObCellInfo
{//完整版
ObString table_name_; //table name
uint64_t table_id_; //table id
ObRowkey row_key_; //rowkey
uint64_t column_id_; //column id
ObString column_name_; //column name
ObObj value_; //value
};

struct ObInnerCellInfo{//简化版  uint64_t table_id_;  ObRowkey row_key_;  uint64_t column_id_;  ObObj value_;};

2.row
class ObRow
{
ObRowkey rowkey_; //rowkey
ObRawRow raw_row_; //row的实际存储数组
const ObRowDesc* row_desc_; //row描述符(table_id,column_id到实际存储数组位置的映射)
}

class ObRowkey{    ObObj* obj_ptr_;          //指向rowkey列在raw_row_ array的起始位置    int64_t obj_cnt_;         //rowkey列的列数}class ObRawRow{    ObObj cells_[MAX_COLUMNS_COUNT]; //row obj存储array    int16_t cells_count_; //rowkey cell count}class ObRowDesc{    Desc cells_desc_[MAX_COLUMNS_COUNT]; //(table_id,column_id)    int64_t cells_desc_count_; //desc count    PlacementHashMap<Desc, int64_t> hash_map_; //(table_id, column_id)到存储位置的映射    int64_t rowkey_cell_count_; //rowkey cell count}
0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 陌陌没法注册怎么办 腾讯q币充值错误怎么办 手机号码注册微信号怎么办 q币充错了号怎么办 微信超额度提现都不可以怎么办 微信发红包转账限额怎么办 银行卡没设密码怎么办 宜人贷逾期一天怎么办 快手实名已认证怎么办 爱奇艺充会员没有银行卡怎么办 手机qq内存太大怎么办 借呗逾期半年怎么办 支付宝支付错误怎么办 小米6支付宝闪退怎么办 验证码发送失败怎么办 支付宝升级后打不开怎么办 steam支付宝失败怎么办 支付宝无响应怎么办 花呗加载失败怎么办 吃鸡平台无效怎么办 悦支付登录不了怎么办 微信里的钱超额怎么办 qq不能发红包怎么办 qq红包多发了怎么办 qq红包领不了怎么办 qq红包密码忘记怎么办 钱包锁密码忘记怎么办 支付宝红包过期怎么办 qq红包无法领取怎么办 qq红包未领取怎么办 支付宝转账超时怎么办 电脑显示没信号怎么办 陌生人打QQ电话怎么办 qq文件接收失败怎么办 支付宝账号违规怎么办 微信红包多扣钱怎么办 微信用不了零钱怎么办 摄像头及手电筒打不开怎么办? 苹果x手电筒了怎么办 充q币充错号了怎么办 苹果鼠标开不了怎么办