tair用ldb做分布式存储

最近的日子就像外面的阴雨绵绵的天气一样。总监让搞tair,搜索了一下,这个东西是tb 开源了小十年的一个东西,是tb早期大神写的一个KV结构的分布式存储引擎。(真想吐槽下国内开源的,文档简直。。。。)

      tair的安装就自行百度吧


    项目中用的是ldb这种nosql存储模式。

leveldb的基本特性:
提供key/value支持,key和value是任意的字节数组
数据按key内部排序
调用者可以提供自定义的比较函数修改排序规则
基本的接口有 Put(key,value), Get(key), Delete(key).
支持批量修改(原子操作)
用户可以创建临时snapshot来获得数据的一个视图
支持正向和反向遍历数据
使用Snappy compression library对数据进行压缩
外部操作(例如文件系统操作)通过虚接口传递使得用户可以自定义与操作系统的交互
限制:
非SQL数据库,因此不支持关系数据模型,也就不支持SQL语句查询以及索引查询
一次只能有一个进程(可能是多线程的)访问数据库
没有内置客户端-服务器的支持,有这个需求的应用程序必须自己实现封装


 看到一位大神说的数据库说的:像mysql 是顺序存储在逻辑的表空间中,数据索引一般用的是b/B+树。为什么用B+进行文件存储,主要是因为磁盘是一个顺序读写快,随机读写慢的系统,磁盘的性能主要受限制与磁盘的寻道时间,为了更快的读写就要减少寻道次数,而减少寻道次数就要减少磁盘的io次数,而减少io次数依赖于磁盘的存储形式。

       Leveldb的数据存储方式采用的是LSM(log-structured-merge)的实现方法,简单来说就是将原来的直接维护索引树变为增量写的方式,这样能够保证对磁盘的操作是顺序的。LSM树可以看作是一个N阶合并树。数据写操作(包括插入、修改、删除)都在内存中进行,并且都会创建一个新记录(修改会记录新的数据值,而删除会记录一个删除标志),这些数据在内存中仍然还是一棵排序树,当数据量超过设定的内存阈值后,会将这棵排序树和磁盘上最新的排序树合并。当这棵排序树的数据量也超过设定阈值后,和磁盘上下一级的排序树合并。合并过程中,会用最新更新的数据覆盖旧的数据(或者记录为不同版本)。
在需要进行读操作时,总是从内存中的排序树开始搜索,如果没有找到,就从磁盘上的排序树顺序查找。

    tair中 选用 prefix key + MurmurHash2 哈希算法来进行存储数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值