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}
- ob为什么同时存在两种迭代接口的代码
- ob原理的代码
- 为什么SAX|DOM同时存在?
- 接口和抽象类存在的意义和适用场景以及为什么要使用接口
- 为什么同时存在IP和Mac地址两种地址?
- "接口"存在的意义
- PHP的OB缓存
- 关于烂代码的那些事 - 为什么每个团队存在大量烂代码
- 不同版本的ie同时存在
- 自定义控件-同时存在于的错误
- try与finally同时存在的问题
- Ob
- ob
- 在接口中不要存在实现代码
- ◎Vbs调用MsAgent组件的新代码,可是问题是,为什么双击单击不能同时支持?
- 我认为接口存在的意义
- Java接口存在的意义
- OO和OB的区别
- android开发中LinearLayout中的Layout_weight属性的理解
- getParameter()和getParameterValue()的区别
- cuda的线程模型
- 剑指offer面试题 扑克牌的顺子
- 自定义ViewGroup详解
- ob为什么同时存在两种迭代接口的代码
- 编写算法对输入的一个整数,判断它能否被3,5,7整除,并输出一下信息之一:
- android usb挂载分析--ntfs-3g移植
- 数据访问
- 使用 gitosis 创建git仓库
- POJ 1067 取石子游戏 威佐夫博奕 Wythoff Game
- ionic入门教程第四课-使用$controllerProvider按需加载controller
- asp.net TextBox文本框背景透明+浅色背景文字提示
- 图论(一)—— 基本概念