狠狠撸

狠狠撸Share a Scribd company logo
Nosql 存储系统 Memlink 介绍 zhaoweikid
Memlink 是什么 海量,高性能,持久化,分布式的 key-List 类型数据引擎 不是万能的数据存储解决方案,只解决 key - list 数据模型存储 更适合解决有海量、高性能需求的 list Memlink 是数据持久化服务,不是缓存 目前 memlink 只提供客户端分布式策略
为什么会有 memlink 海量、高性能的 web 应用不仅有 key - value 需求,还有 key - list 需求。比如论坛,微博 目前没有成熟的 key - list 系统 用 mysql 存储,数据量大时性能下降很快。数据库并发能力差,尤其在海量数据的情况下,做范围查询非常耗时 用 Cache/KV 加速,将 list 打包成 json 或类似格式存储。性能依然不佳
为什么不选用 redis Redis 数据持久化不完善。日志通过异步事件来写。 主从同步有缺陷,从服务器重启后,数据需要完全重新同步 读操作为单线程,无法发挥多核 cpu 的处理能力 内存消耗惊人
Memlink 的特点 内存存储引擎,查询没有磁盘 io ,高效 内部 list 采用块链组织方式,精简内存使用,优化查找效率 Node 数据可通过 mask 项为 value 设置简单属性,支持多种过滤操作 支持 redo-log ,数据持久化,非 cache 模式 分布式,主从同步 读写分离,写优先处理 支持标记删除 List 类型支持简单 list , queue ,排序 list
Memlink,redis,mysql 对比
插入性能
范围查询性能
Memlink 内部机制 读写分离,互不影响。高并发的读操作下,写仍然可以进行。可以针对写操作优化 读完全并发,无锁,允许某一瞬间读取到脏数据。以后也会提供强一致性的读取方案。
?
Memlink 内存控制 使用 google 的 tcmalloc 分配内存 内部使用内存池 List 的 block 可以用多种不同大小,优化内存使用 非实时的重新整理 list 链内存,回收内存
Memlink 数据存储机制 内存数据可以通过命令或者定时 dump 到磁盘 记录 redo - log 。所有的写操作都要记录到磁盘。重新加载的的过程就是:加载 dump =>  加载  dump 之后的 redo-log 。
Memlink 主从同步 从主动连接,主推送数据 第一次同步,主自动发送 dump 给从,然后从同步 redo-log 。 从连接断开后,重新连接只需要从上次的 redo-log 重新同步即可。
?
Memlink 主要命令支持 Create  创建 list Del  删除某个 node Move  移动 node 在 list 中的位置   Insert  插入 Range  范围查询 Mask  修改 mask Tag  标记删除 Rmkey  删除整个 list Clean  整理 list 的内存 Dump  数据镜像到磁盘
Memlink 客户端支持 目前支持 c , php , python , java
?
Memlink 分布式方案 目前为一主多从,基于客户端分布式方案 从 从 主 客户端分布式算法 调用者
Memlink 特性限制 数据完全保存在内存中,建议只存放 id 块链需要占用一些额外的空间 List 中每个数据项是定长的 List 中以 value 值作为条件来进行操作的(如 delete , tag , mask 等),是逐个顺序查找的。有时可以考虑使用排序 list 。
Memlink 未来 不会支持 kv 等其他非 list 类型, list 类型可能支持更多 增强对管理,统计方面的支持 更好的分布式支持,增强扩展性支持。 非热点数据存储到磁盘,节省内存 通过配置支持强一致性 写操作优化
谢谢 http://code.google.com/p/memlink

More Related Content

Memlink