设为首页 收藏本站
查看: 1459|回复: 0

[经验分享] 性能超越 Redis 的 NoSQL 数据库 SSDB

[复制链接]

尚未签到

发表于 2015-7-21 13:14:01 | 显示全部楼层 |阅读模式



  • 2013-11-17
    性能超越 Redis 的 NoSQL 数据库 SSDB


    C语言编程, SSDB

    Views: 749 | 4 Comments

      SSDB 是一个 C++ 开发的 NoSQL 数据库, 使用 Google 公司开源的 LevelDB 引擎作为底层的存储引擎. Redis 是一个 C 语言开发的内存 NoSQL 数据库.
      Redis 非常流行, 不仅仅是因为其高性能和可持久化的特点, 还因为它支持丰富的数据结构, 能很好的表达业务模型. Redis 的国内属新浪应用比较广泛.
      但是, Redis 的缺点也很明显, 那就是它的内存数据库模型. 所有数据都存在内存中, 即使最有钱的互联网公司, 也没法承受 $5000 (一台服务器, 100G 内存)固定成本, 以及持续不断的 IDC 租金成本来存储区区的 50GB 的数据, 这个成本太高了!
      SSDB 拥有 Redis 的主要优点 – 高性能, 丰富数据结构, 并且拥有 Redis 所不具备的能力 – 大数据存储能力. SSDB 服务器的单机存储能力是 Redis 的 100 倍! 因为 SSDB 能将数据存储在硬盘中.
      在使用 SSDB 自带的 ssdb-bench 工具, 以及 Redis 自带的 redis-benchmark 工具在相同机器上的测试中, SSDB 的读性能完全超过了 Redis, 这非常出乎意料. 不过, SSDB 的写性能还是比 Redis 慢了 10% 左右. 要知道, SSDB 是一个硬盘数据库, 而 Redis 是内存数据库, 写性能高一些是可以理解的.
      欢迎各位在自己的机器上做性能测试, 并反馈. 这是我做的测试的结果图:
      Continue reading »


    Posted by ideawu at 2013-11-17 22:44:56 Tags: Redis


  • 2013-11-11
    SSDB 1.6.6 稳定版发布, 支持 hclear/zclear


    SSDB

    Views: 1002 | 9 Comments

      SSDB 1.6.6 稳定版已经发布了, 这个版本主要的改动如下:


    • 支持 hclear/zclear 命令, 用于清除单个 hashmap/zset.
    • 采用多线程, 写操作和 scan 等可能慢的读操作都放在线程池中执行.
      SSDB 是一个高性能的 NoSQL 数据库, 使用 LevelDB 作为存储引擎, 支持 hashmap/zset 等丰富的列表(集合)数据结构.


    Posted by ideawu at 2013-11-11 10:14:17 Tags: LevelDB, NoSQL


  • 2013-11-06
    SSDB 采用里程碑式版本发布机制


    SSDB

    Views: 1033 | 2 Comments

      从 1.6.4 版本开始, SSDB 采用里程碑式的版本发布机制, 每一个稳定的版本都会作为 git 库中的一个 branch, 而 master 的代码是最新的待发布的代码. 在 github 项目主页, 默认显示的是最新的稳定版本的分支. 目前, 最新的 SSDB 稳定版本是 stable-1.6.4.
      目前, master 上的代码相对 stable-1.6.4 版本, 有了比较大的改动, 加入了多线程支持. 例如, scan 等命令都会在单独的线程中执行, 所以, 即使 scan 非常大的数据, 也不会阻塞别的操作.
      SSDB 是一个 NoSQL 数据库, 兼容 Redis 接口, 存储容量是 Redis 的 100 倍以上, 采用 LevelDB 作为存储引擎. 项目地址: https://github.com/ideawu/ssdb


    Posted by ideawu at 2013-11-06 22:18:21 Tags: LevelDB, NoSQL, Redis


  • 2013-10-23
    SSDB 增加 zrank, zrange 命令


    C语言编程, SSDB

    Views: 1918 | 3 Comments

      Zrank/zrrank 命令是 zset 数据结构的一个特有命令, 用于求某个元素在集合中的排序名次. 对于 Redis 来说, 数据都在内存里, 而且是排序的, 所以求元素的排名(indexOf)可以很快, 但因为 SSDB 的数据主要在硬盘中, 所以, 求排序名次可不是那么简单.
      基于这个考虑, SSDB 原来并不支持 zrank 命令. 但 zrank 命令的需求还是有的, 经过考虑, 所以在 1.6.3 版本中增加了 zrank 命令.
      不过, 使用这个命令应该是在离线环境中, 而不能是在线上生产环境中, 因为 zrank 的实现是通过遍历数据(相当于全表扫描).
      另外, SSDB 还增加了 zrange/zrrange 命令, 相当于数组的 slice 操作或者 MySQL 的 limit 操作. 和 zrank 类似, zrange 也是通过表扫描来实现的, 只要 offset 越大, 速度就越慢. 所以, 在 offset 小于 200 时, 可以在线上生产环境使用, 否则最好是离线环境中使用.


    Posted by ideawu at 2013-10-23 13:05:07 Tags: KV, LevelDB, NoSQL, Redis


  • 2013-10-17
    SSDB 的 C++ 客户端接口


    C语言编程, SSDB

    Views: 2107 | 9 Comments

      SSDB 本身是用 C++ 语言编写的, 所以天生就支持 C++ 客户端 API. SSDB 源码中自带的 leveldb-import.cpp, ssdb-dump.cpp 等程序, 也是 C++ 客户端的例子. 不过, 这些 API 依赖整个项目, 编译和链接的参数非常繁琐. 因此, 有必要开发对用户友好的 C++ API, 减少依赖, 方便开发 SSDB 的 C++ 客户端应用.
      我很高兴的通知, 接口简单, 对用户友好的 SSDB 的 C++ 客户端 API 已经有了! 并且, 有了相应的API 文档(我相信文档对于一个软件的作用是非常重要的). 我可以用一行代码了显示这个 API 的使用是如何的简单:

    g++ -o hello-ssdb hello-ssdb.cpp libssdb.a

      hello-ssdb.cpp 就是一个使用了 SSDB C++ API 的客户端程序, 上面的一行命令用于编译这个程序, 生成可执行文件.
      SSDB C++ API 包括了两类方法, 一类是简单方法, 另一类是语义化的方法. 简单方法就是在一个统一的函数中传递任意命令和参数. 而语义化的方法即类型 get(), set() 这样顾名思义的方法. 因为时间的缘故, 后一种方法还没有实现.(更新: 两类方法都已实现.)
      欢迎大家使用, 如果有什么意义, 欢迎反馈!
      SSDB C++ 客户端接口文档: http://www.ideawu.com/ssdb/docs/cpp/


    Posted by ideawu at 2013-10-17 23:27:05 Tags: KV, LevelDB, NoSQL


  • 2013-10-08
    SSDB 支持 Snappy 压缩了


    SSDB

    Views: 2224 | 6 Comments

      SSDB 数据库服务器从 1.6.2 版本开始, 支持 Snappy 数据压缩. Snappy 是一个由 Google 公司开发的压缩库, 在 Google 内部应用非常广泛, 同时也在很多知名开源软件中得到应用, 如 Cassandra, Hadoop 等.
      LevelDB 也是可以使用 Snappy 的, 但不是强制绑定, 而是在编译 LevelDB 时自动判断使用. 但是, 在编译 LevelDB 时要添加关于 Snappy 的参数, 而且在编译使用了 LevelDB 的程序(如 SSDB)中也要添加关于 Snappy 的参数, 所以经常出现编译出错.
      Continue reading »


    Posted by ideawu at 2013-10-08 23:32:35 Tags: LevelDB, NoSQL, Snappy
  http://www.ideawu.net/blog/category/ssdb
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-89107-1-1.html 上篇帖子: Spring 整合Redis 出现 afterPropertiesSet signature: ()V) Incompatible argument to fu 下篇帖子: redis的安装及配置
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表