SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下, 作为Redis的替代方案.
分布式
因为SSDB的最初目的是替代Redis, 所以SSDB会经常和Redis进行比较. 我们知道, Redis是经常的"主-从"架构, 虽然可以得到负载均衡以及数据跨地域备份的功能, 但无法实现高可用性. 考虑这种情况, Redis的主和从分别在两个IDC机房, 当主所在的机房出现故障时, 整个服务其实就相当于停止了. 因为所有写操作都失败, 而应用一般不会实现自动降级服务.
而SSDB支持"双主"架构(SSDB分布式架构: https://github.com/ideawu/ssdb/wiki/Replication), 两个或者更多的主服务器. 当其中一部分出现故障时, 剩余的主服务器仍然能正常接受写请求, 从而保证服务正常可用, 再将DNS解析修改之后, 就能在机房故障后立即恢复100%可用.
实际应用
SSDB最先在"IT牛人博客聚合网站"进行尝试应用, 接着在360游戏部门得到大规模应用, 目前支撑的数据量已经达到数百G. 这些应用最初使用Redis, 迁移到SSDB的成本非常低, 涉及的代码改动极小.
你可以拿SSDB的PHP API文档和Redis的PHP API文档进行对比.
SSDB开源数据库项目地址: https://github.com/ideawu/ssdb
http://www.iteye.com/topic/1124999 Reply
1. 请问你第一次启动ssdb意外关闭, 是在一个全新的目录启动的吗? 如果你方便, 能否把log调到debug级别, 然后在新环境中第一次启动ssdb, 看有没有出错信息.
2. ssdb-server -d ssdb.conf 的 -d 参数即可启动为守护进程. Reply
g++ -o ../ssdb-server ssdb.o t_kv.o t_hash.o t_zset.o proc.o link.o backend_dump.o backend_sync.o repl.o slave.o util/log.o util/fde.o util/config.o util/bytes.o -DNDEBUG -I./ -I../deps/leveldb-1.8.0/include -static -L../deps/leveldb-1.8.0 -lleveldb -lpthread ssdb-server.cpp
/usr/bin/ld: cannot find -lpthread
collect2: ld returned 1 exit status
make[1]: *** [all] Error 1
make[1]: Leaving directory `/root/soft/ssdb-master/src’
make: *** [all] Error 2
[root@drawdb2 ssdb-master]# uname -a
Linux drawdb2.guesswhat.com 2.6.32-358.2.1.el6.x86_64 #1 SMP Wed Mar 13 00:26:49 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux Reply