oceanbase
青箫
这个作者很懒,什么都没留下…
展开
-
ob为什么同时存在两种迭代接口的代码
(cell接口、row接口)oceanbase的早期版本类似于一个key-value no sql 系统,所以采用的是cell接口,读写是以cell为基本单位。oceanbase0.4以及后续的版本,才真正可以称作一个数据库,所以cell接口已经不适应当前的设计,所以就采用了row接口,以row为迭代的基本单位。这也是现在在oceanbase代码中有两套接口并存的原因,以后cell接口会逐渐废弃。原创 2016-04-07 19:06:32 · 458 阅读 · 0 评论 -
ob中内置join的意义
这个在0.5中应用,为了解决收藏夹的问题,1.0后就没有用了。 oceanbase中内置join的目的是为了空间换时间,因为在数据库中,两张表之间的join是非常耗时的,做法是在一张表中,冗余另一张表的几列,查询的时候,只需要查询一张表就行了。以收藏夹为例,收藏夹主要有两张表,info(收藏表,存储了收藏时间,收藏者等信息),item(商品表,存储产品名称,价格等信息)当用户查看自己的收藏记录时,转载 2016-04-07 19:24:32 · 339 阅读 · 0 评论 -
oceanbase 与hbase主要区别
oceanbase支持跨表的事务,而hbase中支持跨行的事务,这是由他们的设计特别决定的。updateserver实际上是将Hbase所有ReginonServer的memtable聚合在一起。 regionserver只服务一部分table的更新(当然也有查询服务),所以只能够提供行级别更新的事务。而UpdateServer是服务所有的tablet的更新,所以可以提供跨行跨表的事务,所以Upd转载 2016-04-07 19:28:57 · 4542 阅读 · 0 评论 -
innodb double write原理在ocean base中应用
innodb double write原理 基本原理是将数据写两份 将Dirty page刷到磁盘时,先将page刷到磁盘上的一个区域tablespace,然后择机将page拷贝到数据文件对应的位置。 tablespace是innodb在磁盘上分配的一块区域,包含100个page。 每个page都有自己的checksum,来校验本身数据的正确性。用double write的原因: 为了处理转载 2016-04-07 20:22:42 · 597 阅读 · 0 评论 -
oceanbase每日合并
oceanbase本质上是基于lsm-tree的方式实现每日合并的,简单来说就是将数据的更改hold内存中,当达到指定的阈值后,再批量写到磁盘与已有的数据做合并。这个设计基于的假设是:写入远远大于读取,insert量大,update量小,这种方法可以优化写,但没有显著降低读,因为大部分最新的数据都在内存里面,读取速度会非常快。1、基础架构 1.0之前的oceanbase架构,都是分为4个serve转载 2016-04-07 21:40:44 · 1401 阅读 · 1 评论