• 2013-10-17

    SSDB 的 C++ 客户端接口

    Views: 44240 | 11 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: , ,
  • 2013-10-08

    SSDB 支持 Snappy 压缩了

    Views: 34805 | 9 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: , ,
  • 2013-10-06

    用SSDB快速开发一个微博(Twitter)demo

    Views: 28120 | 3 Comments

    对于新浪微博或者 Twitter 这样的应用, 其最核心的数据结构就是排序列表. 例如, 我关注的人, 关注我的人, 我发的微博, 我收到的微博, 等等. 这些业务功能点都是排序列表数据结构, 根据时间排序.

    这样的数据结构如果用关系数据库(如 MySQL)来存储的话, 需要设计一个表, 表和一个外键字段, 作为列表的名字, 还要有一个 int 型时间字段用于排序, 还有第 3 个字段就是列表的元素(如 uid, 微博 ID). 不过, 因为 MySQL 一旦表的数据量达到 100 万行数据时, MySQL 就基本无法满足实时查询的要求了.

    Continue reading »

    Posted by ideawu at 2013-10-06 15:02:48 Tags: ,
  • 2013-08-26

    单实例支撑每天上亿个请求的SSDB

    Views: 45659 | 22 Comments

    SSDB 是一个 C++ 开发的 NoSQL 存储服务器, 支持 zset, map 数据结构, 可替代 Redis, 特别适合存储集合数据. SSDB 被开发和开源出来后, 已经在生产环境经受了3个季度的考验, 一直稳定运行.

    在一个支撑数千万用户的列表数据(例如用户的订单历史, 用户的好友列表, 用户的消息列表等)的实例上, SSDB 每天处理上亿个读写请求, 仍然能保持 CPU 占用在3%左右, 内存占用为 1G. 这种数据规模是我们原来使用的 Redis 所无法满足的, 因为 Redis 无法保存如此大量的数据, 物理内存的容量限制了 Redis 的能力. 根据我们的经验, Redis在10G数据规模时比较适用, 数据规模再扩大时, Redis 就非常吃力, 而且几乎无法扩展. 这时, 必须改用 SSDB.

    Continue reading »

    Posted by ideawu at 2013-08-26 23:18:10 Tags: ,
  • 2013-01-28

    SSDB增加hlist, zlist命令

    Views: 29238 | 4 Comments

    最近一段时间以来, SSDB 一直保持的稳定的更新速度, 代码在完善, 功能在丰富和整合. 目前已经有多个国内和国外用户在尝试使用, 相信很快就可以成为 SSDB 的正式用户.

    前几个版本, SSDB 增加了 log rotate 功能. 最新的更新版本中增加了 hlist 和 zlist 命令, 用于列出当前的 map 和 zset. KV 结构的数据仍然使用 keys 列出. *list 既不同于 *keys, 也不同于 *scan, 因为 *list 用于列出集合的名字, 而后两者则用于列出集合的内容.

    最近 SSDB 在生产环境的使用中, 遇到了多机房的问题. 在机房间网络无法改善的情况下, SSDB 必须能应付这种状况. 这里初步设计了新的同步体系, 欢迎大家一起讨论: https://github.com/ideawu/ssdb/issues/11.

    Posted by ideawu at 2013-01-28 11:24:13 Tags: ,
  • 2013-01-23

    SSDB 现在已经支持 Java 语言了!

    Views: 35174 | 16 Comments

    SSDB 现在已经支持 Java 语言了! 先看一个例子:

    SSDB ssdb = new SSDB("127.0.0.1", 8888);
    ssdb.set("a", "123");
    byte[] val = ssdb.get("a");
    

    SSDB Java 的 API 和 PHP, Cpy, Python 等动态脚本语言的 API 有很大不同, 首先 SSDB Java 用异常展示出错, 用 null 或者 Double.NaN 表示 not_found. 另外, 对于列表数据的结果, 返回的是 Response 结构.

    具体使用的时候就知道了, API Doc 地址: http://www.ideawu.com/ssdb/java-doc/

    Posted by ideawu at 2013-01-23 22:45:40 Tags: ,
|<<<1234>>>| 2/4 Pages, 24 Results.