加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

SSDB的介绍

发布时间:2020-12-13 13:38:35 所属栏目:百科 来源:网络整理
导读:最近在做一个互联网金融项目的时候用到了ssdb数据库,查阅了好多资料,把一些网络上整理的资料和项目中的使用情况放到这儿与大家共享。 部分内容引自如下博客:http://www.ideawu.net/blog/ssdb、http://www.cnblogs.com/shanyou/p/3496163.html。 SSDB介绍

最近在做一个互联网金融项目的时候用到了ssdb数据库,查阅了好多资料,把一些网络上整理的资料和项目中的使用情况放到这儿与大家共享。

部分内容引自如下博客:http://www.ideawu.net/blog/ssdb、http://www.cnblogs.com/shanyou/p/3496163.html。


SSDB介绍

SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库,支持 zset(sorted set),map(hash),kv,list 等数据结构,用来替代或者与 Redis 配合存储十亿级别的列表数据. SSDB 同时也被国内外业界的众多互联网企业所使用,如 QIHU 360,TOPGAME,汽车之家,比亚迪等.


项目主页:https://github.com/ideawu/ssdb
SSDB 文档:http://ssdb.io/docs/zh_cn/

SSDB 的主要特点:

  • 支持 zset,map/hash,list,kv 数据结构,可替代 Redis
  • 特别适合存储大量集合数据,支持丰富的数据结构: key-value,key-map,key-zset,key-list.
  • 使用 Google LevelDB 作为存储引擎
  • 支持主从同步,多主同步
  • 客户端支持 PHP,C++,Python,Lua,Java,Ruby,nodejs,Go 等
  • 内存占用极少
  • 图形化界面管理工具(phpssdbadmin)
SSDB和Redis比较

我们知道,Redis是经常的”主-从”架构,虽然可以得到负载均衡以及数据跨地域备份的功能,但无法实现高可用性. 考虑这种情况,Redis的主和从分别在两个IDC机房,当主所在的机房出现故障时,整个服务其实就相当于停止了. 因为所有写操作都失败,而应用一般不会实现自动降级服务.而SSDB支持”双主”架构(SSDB分布式架构:https://github.com/ideawu/ssdb/wiki/Replication),两个或者更多的主服务器. 当其中一部分出现故障时,剩余的主服务器仍然能正常接受写请求,从而保证服务正常可用,再将DNS解析修改之后,就能在机房故障后立即恢复100%可用.SSDB 被开发和开源出来后,已经在生产环境经受了多年的考验,SSDB最先在”IT牛人博客聚合网站“进行尝试应用,接着在360游戏部门得到大规模应用,目前支撑的数据量已经达到数百G. 这些应用最初是使用Redis的,迁移到SSDB的成本非常低,涉及的代码改动极小.

SSDB 数据类型
SSDB 支持三种数据类型,别分是 KV(key-value),Hashmap(map),Zset(sorted set). 三种数据类型处于不同的命名区间,所以不同类型的数据可以起相同的名字,但不建议这么做.

KV
KV 数据类型?支持基本的 set(),get(),del(),incr() ?几种操作. KV 数据类型主要?用于存储离散的,之间没有关系(或者关系被忽略)的大数据,如图片文件,大段文本等. 一般 KV 类型都可以被 Hashmap 替代,但 KV 会比 Hashmap 性能高一些.

key value
K1 VC
K2 VX
K3 VY

Hashmap
Hashmap 类型和 KV 功能相似,可?用于存储?大体积的数据,但不同的数据项在业务上处于某个集合. 并且,Hashmap 维护了?一个集合?大?小的计数.
Hashmap 中的数据项是 Key-value 的键值对,并且按 Key 的字节数组顺序进?行排序.如果数据需要经常被遍历,则应该使?用 Hashmap 来替代 KV. 对于只添加,不更新和删除的有排序需求的数据集合,可以?用 Hashmap 来存储?而不需要使用 Zset,因为 Hashmap 会比Zset 性能高一些.

name key value
h k1 vb
h k2 va
h k3 vc

Key 是按字节顺序排序的.

Zset
Zset 是?一种根据数据项的权重(score,整数值)进?行排序的集合,Zset 集合中的数据项是唯?一,不可重复的. Zset 可以理解为关系数据中只有 ID 主键和整数 score 字段?一共两个字段的表.因为 Zset 的排序特性,所以可?用来存储排序列表,如商品按价格的排序列表,商品按上架日期的排序列表,等等. 每?一个排序列表对应?一个 Zset 集合.Zset 不能?用来存储?大体积的数据,因为它是?一种"索引"数据类型,被索引的东?西(集合中的数据项)只能是 200 字节以内的字节数组(包括字符串).

name key value
z k2 0
z k3 1
z k1 2

Key 是按 score(64 位整数)的?大?小排序的.

安装和运行

SSDB 的建议安装方式是源码编译安装,建议运行环境是主流 Linux 发?行版. 远程 SSH 登录你的服务器,然后用下面的命令下载,编译,安装和运行:

$ wget --no-check-certificate https://github.com/ideawu/ssdb/
archive/master.zip
$ unzip master
$ cd ssdb-master
$ make
$ #optional,install ssdb in /usr/local/ssdb
$ sudo make install
# start master
$ ./ssdb-server ssdb.conf
# or start as daemon
$ ./ssdb-server -d ssdb.conf
# ssdb command line
$ ./tools/ssdb-cli -p 8888
# stop ssdb-server
$ kill `cat ./var/ssdb.pid`

SSDB 默认安装在 /usr/local/ssdb目录下. ssdb-server 是服务器的程序,ssdb-cli 是命令行客户端.在使用自带的 ssdb.conf 配置?文件时,SSDB生成的日志文件按体积进行分割,仅此?而已. 所以,你需要编写自己的 crontab 进?行?日志压缩和定期清理.如果出现服务器掉电,kernel panic 等系统故障,在系统重新启动之后,你需要手动删除 ssdb的 PID 文件 ssdb.pid,然后才能启动 ssdb-server.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读