SSDB(LevelDB server) vs Redis

23
SSDB(LevelDB) vs Re dis ideawu https:// code.google.com/p/zdb/

description

SSDB - A LevelDB server with zset data type

Transcript of SSDB(LevelDB server) vs Redis

Page 1: SSDB(LevelDB server) vs Redis

SSDB(LevelDB) vs Redis

ideawu

https://code.google.com/p/zdb/

Page 2: SSDB(LevelDB server) vs Redis

问题 数据有 : a, b, c, d, e(5 个单位 )

内存容量 : 4 个单位 硬盘容量 : 100 个单位

问题 : 内存放不下所有数据 数据可以放硬盘 , 但硬盘较慢

Page 3: SSDB(LevelDB server) vs Redis

Redis 存储结构memory aof(log)a=1 a=1b=2 b=2c=1 a=3d=1 c=6  a=1e is LOST! d=7  e=3  d=1  b=2  c=3  a=1  c=1

Page 4: SSDB(LevelDB server) vs Redis

Redis 查找 先查找内存 如果内存中没找到 , 那就真的没找到 上例中 , e 因内存容量限制被丢弃了 ...

Page 5: SSDB(LevelDB server) vs Redis

LevelDB 内部存储结构memory log level 0 ... level n

a=1 a=1 a=3   a=1b=2 b=2 b=2   b=2c=1 a=3 c=6   c=1d=7 c=6                 a=1 a=1   d=7  d=7 d=7   e=3  e=3 e=3    d=1                 b=2 a=1      c=3 b=2      a=1 c=1      c=1      

Page 6: SSDB(LevelDB server) vs Redis

LevelDB 查找 先查内存 直接跳过 log, 查 level0

level0 有重叠 , 从新到旧查找 查 level1...

Page 7: SSDB(LevelDB server) vs Redis

Redis 和 LevelDB 简单介绍 Redis

网络字典服务器 除 KV, 支持丰富的数据类型 , 如 list, zset 在互联网公司有广泛应用 C 语言开发

LevelDB Google 公司 Bigtable 系统存储引擎的开源版本 KV 存储 , 数据有序 应用不广泛 , 作为 Chrome 的内嵌存储引擎 , 作为一

些开源分布式系统的存储引擎 C++ 语言开发

Page 8: SSDB(LevelDB server) vs Redis

Redis vs LevelDBRedis LevelDB

持久化存储

写速度快

   

完全内存查找 , 速度极快 若内存找不到 , 再找硬盘 , 速度受影响

网络支持 只是一个 C/C++ 编程语言库

   

受限于内存容量 , 硬盘只作为备份 存储容量不受内存容量限制 , 依赖硬盘

主从同步机制不完善  

Page 9: SSDB(LevelDB server) vs Redis

SSDB - LevelDB 服务器 基于 LevelDB 引擎封装网络服务 (epoll) 替代 Redis 或者和 Redis 搭配使用 支持 Redis 的常用关键数据结构 客户端 API 与 Redis 相似

Page 10: SSDB(LevelDB server) vs Redis

SSDB vs Redis

Page 11: SSDB(LevelDB server) vs Redis

SSDB vs Redis 随机读写测试 在 M 个写连接和 N 个读连接持久请求的情况下 ,

+1 个连接 , 分别测试读写性能 用 PHP 进行读和写 , SSDB 和 Redis 代码基本一

样 用 Python fork 多进程

Page 12: SSDB(LevelDB server) vs Redis

随机读写 – 0 写 0 读 +1 测

Page 13: SSDB(LevelDB server) vs Redis

随机读写 – 1 写 4 读 +1 测

Page 14: SSDB(LevelDB server) vs Redis

随机读写 – 2 写 8 读 +1 测

Page 15: SSDB(LevelDB server) vs Redis

随机读写 – 3 写 12 读 +1 测

Page 16: SSDB(LevelDB server) vs Redis

随机读写 – 4 写 16 读 +1 测

Page 17: SSDB(LevelDB server) vs Redis

SSDB Redis 命令对比 - KV

keys() 返回全部数据 , scan() 支持分页

Page 18: SSDB(LevelDB server) vs Redis

SSDB Redis 命令对比 - ZSET

zRangeByScore(name, score_start, score_end, options);

zscan(name, key_start, score_start, score_end, limit);

Page 19: SSDB(LevelDB server) vs Redis

SSDB Redis 命令对比 - HASHMAP

SSDB 的 hkeys/hscan 支持分页

Page 20: SSDB(LevelDB server) vs Redis

支持断点续传的主从同步 Redis 的主从同步一旦异常中断 , 就得从头再来 SSDB 可以从上一个断点开始同步

Page 21: SSDB(LevelDB server) vs Redis

TODO 性能 分布式

Page 22: SSDB(LevelDB server) vs Redis

链接 https://code.google.com/p/zdb/ https://code.google.com/p/leveldb/ http://redis.io/ https://github.com/ideawu/ssdb

Page 23: SSDB(LevelDB server) vs Redis

FINThanks