2012-12-19

SSDB – 支持 zset 的 LevelDB 服务器

Views: 36385 | Add Comments

Google 开源的 LevelDB 是一个单纯的 key-value 存储的类库, 可以理解为是一个存储引擎, 并不是常见意义的服务器. 你无法通过网络接口来使用它, 只能用 C/C++ 语言才能使用它.

LevelDB 速度非常快, 是 Google 内部分布式存储系统 Bigtable 的存储引擎的开源版本, 作为分布式系统的一个存储节点(Tablet). LevelDB 的设计思想和 Google 内部的版本部分相同, 但肯定也被隐藏了一些接口和思想, 而这部分很可能是非常重要和关键的.

由于 LevelDB 仅仅是一个编程语言库, 所以用起来不方便, 第一步就是要封装一个网络服务器. 目前市面上并没有真正经过生产环境检验的 LevelDB 服务器, 仅有的一些项目是开发者自己的实验产品. 为此, 我开发了 SSDB, 以 LevelDB 作为存储引擎, 用 C++ 封装了一个网络服务器, 支持的客户端 API 已包括 PHP, Python, Cpy, 还可以比较轻易地开发出其它的语言版本. SSDB 目前已经在IT牛人博客聚合网站(http://www.udpwork.com/)得到应用.

经过在 Web 应用开发过程的大量经历, 我发现单纯的 key-value 存储只有非常有限的适用场景, 大部分现实的业务逻辑无法用 key-value 来表示, 现实的业务逻辑需要 list, zset(sortedset) 等数据结构. 其中 zset 在使用 Redis 的项目中得到广泛应用. 因此, SSDB 也支持 zset 数据结构.

SSDB 还在不断地改进当中, 最近要增加的功能是备份和主从同步, 已经在开发中. 未来的方向将是分布式存储系统.

SSDB 是一个 LevelDB 服务器, 项目主页: https://code.google.com/p/zdb/

相关链接:

* LevelDB实现原理分析

Related posts:

  1. SSDB 解决了 Snappy 导致 LevelDB 编译失败的问题
  2. LevelDB 服务器 SSDB 支持主从(master-slave)同步了!
  3. 在PHP代码中使用LevelDB
  4. SSDB 支持 Snappy 压缩了
  5. LevelDB 会丢数据吗?
Posted by ideawu at 2012-12-19 13:48:10 Tags: ,

Leave a Comment