SSDB 配置文件详解
SSDB 的配置非常简单, 附带的 ssdb.conf 你不用修改便可以使用. 如果你要高度定制, 还是需要修改一些配置的. 下面做介绍.
SSDB 的配置文件是一种层级 key-value 的静态配置文件, 通过一个 TAB 缩进来表示层级关系. 以 '#' 号开始的行是注释. 标准的配置文件如下:
# ssdb-server config# relative to path of this file, must exist
work_dir = ./var
pidfile = ./var/ssdb.pidserver:ip: 127.0.0.1port: 8888replication:slaveof:# sync|mirror, default is sync#type: sync#ip: 127.0.0.1#port: 8889logger:level: infooutput: log.txtrotate:size: 1000000000leveldb:# in MBcache_size: 500# in KBblock_size: 32# in MBwrite_buffer_size: 64# in MBcompaction_speed: 100# yes|nocompression: yes
work_dir: ssdb-server 的工作目录, 启动后, 会在这个目录下生成 data 和 meta 两个目录, 用来保存 LevelDB 的数据库文件. 这个目录是相对于 ssdb.conf 的相对路径, 也可以指定绝对路径.
server: ip 和 port 指定了服务器要监听的 IP 和端口号. 如果 ip 是 0.0.0.0, 则表示绑定所有的 IP. 基于安全考虑, 可以将 ip 设置为 127.0.0.1, 这样, 只有本机可以访问了. 如果要做更严格的更多的网络安全限制, 就需要依赖操作系统的 iptables.
replication: 用于指定主从同步复制. slaveof.ip, slaveof.port 表示, 本台 SSDB 服务器将从这个目标机上同步数据(也即这个配置文件对应的服务器是 slave). 你可以参考 ssdb_slave.conf 的配制.
logger: 配置日志记录. level 是日志的级别, 可以是 trace|debug|info|error. output 是日志文件的名字, SSDB 支持日志轮转, 在日志文件达到一定大小后, 将 log.txt 改名, 然后创建一个新的 log.txt.
leveldb: 配置 LevelDB 的参数. 你一般想要修改的是 cache_size 参数, 用于指定缓存大小. 适当的缓存可以提高读性能, 但是过大的缓存会影响写性能.
另外注意cache_size、和write_buffer_size的配置的阈值以及占用内存的计算:
一个 ssdb-server 实例占用的内存瞬时(有可能, 而且即使达到, 也只是持续短时间)最高达到(MB):
cache_size + write_buffer_size * 66 + 32
这是对于压缩选项没有开启的情况, 如果 compression: yes, 计算公式是:
cache_size + 10 * write_buffer_size * 66 + 32
你可以调整配置参数, 限制 ssdb-server 的内存占用.
LevelDB:
Log文件
当应用写入一条Key:Value记录的时候,LevelDb会先往log文件里写入,成功后将记录插进Memtable中,这样基本就算完成了写入操作,Log文件在系统中的作用主要是用于系统崩溃恢复而不丢失数据,假如没有Log文件,因为写入的记录刚开始是保存在内存中的,此时如果系统崩溃,内存中的数据还没有来得及Dump到磁盘,所以会丢失数据(Redis就存在这个问题)。
因为一次写入操作只涉及一次磁盘顺序写和一次内存写入,所以这是为何说LevelDb写入速度极快的主要原因。
LevelDB首先将每条写入数据序列化为一个Record,单个Log文件中包含多个Record。同时,Log文件又划分为固定大小的Block单位,并保证Block的开始位置一定是一个新的Record。这种安排使得发生数据错误时,最多只需丢弃一个Block大小的内容。显而易见地,不同的Record可能共存于一个Block,同时,一个Record也可能横跨几个Block。
Log文件划分为固定长度的Block,由连续的32K为单位的物理Block构成的,每次读取的单位是以一个Block作为基本单位;每个Block中包含多个Record;Record的前56个位为Record头,包括32位checksum用做校验,16位存储Record实际内容数据的长度,8位的Type可以是Full、First、Middle或Last中的一种,表示该Record是否完整的在当前的Block中,如果Type不是Full,则通过Type指明其前后的Block中是否有当前Record的前驱后继。
levelDb中的Cache
读取操作如果没有在内存的memtable中找到记录,要多次进行磁盘访问操作。假设最优情况,即第一次就在level 0中最新的文件中找到了这个key,那么也需要读取2次磁盘,一次是将SSTable的文件中的index部分读入内存,这样根据这个index可以确定key是在哪个block中存储;第二次是读入这个block的内容,然后在内存中查找key对应的value。
levelDb中引入了两个不同的Cache: Table Cache 和 Block Cache。其中Block Cache是配置可选的,即在配置文件中指定是否打开这个功能。
compression压缩操作
为了加快读取速度,levelDb采取了compaction的方式来对已有的记录进行整理压缩,通过这种方式,来删除掉一些不再有效的KV数据,减小数据规模,减少文件数量等。
数据压缩是LevelDB中重要的部分,即上文提到的归并。冷数据会随着Compaction不断的下移,同时过期的数据也会在合并过程中被删除。
LevelDB的压缩操作由单独的后台线程负责。这里的Compaction包括两个部分,Memtable向Level 0 SST文件的Compaction,以及SST文件向下层的Compaction。
levelDb的compaction机制和过程与Bigtable所讲述的是基本一致的,Bigtable中讲到三种类型的compaction: minor ,major和full。所谓minor Compaction,就是把memtable中的数据导出到SSTable文件中;major compaction就是合并不同层级的SSTable文件,而full compaction就是将所有SSTable进行合并。
LevelDb包含其中两种,minor和major。
转载:http://www.ideawu.net/blog/archives/733.html
转载:https://www.cnblogs.com/chenny7/p/4569837.html
levelDB原理:https://blog.csdn.net/qq_26499321/article/details/78063856#commentBox
SSDB 配置文件详解相关推荐
- mybatis mysql 配置文件_Mybatis配置文件详解(4)
本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...
- MyBatis复习笔记2:配置文件详解
配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...
- vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解
前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...
- (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解
springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...
- CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解
Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...
- 用户管理 之 用户(User)和用户组(Group)配置文件详解
作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...
- 【ZooKeeper】配置文件详解
ZooKeeper的配置文件详解 zkServer.sh读取的默认配置文件是$ZOOKEEPER_HOME/conf/zoo.cfg.如果要用其它配置文件.如下传递配置文件参数: zkServer.s ...
- vsftpd配置文件详解
1.默认配置: 1>允许匿名用户和本地用户登陆. anonymous_enable=YES local_enable=YES 2>匿名用户使用的登陆名为ftp或an ...
- Web.config配置文件详解(新手必看)
Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...
最新文章
- OpenCV About 页面翻译
- 深入理解分布式技术 - 降级和熔断
- Angular JS 中的内置方法之表单验证
- Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
- 小程序动画Animation,高度增加动画形式,图标旋转动画形式
- Scala教程之:Enumeration
- 001-pro ant design 升级2.0后变更
- vue表单的基本使用
- 为什么Flink会成为下一代大数据处理框架的标准?
- 揭秘孙小小《PPT演示之道》
- 关于python中的pow(1010、32)_关于Python中的??pow(1010,32),下列说法正确的是.
- 基于Springboot的景区旅游管理系统 JAVA MySQL
- 《大象 Thinking in UML》学习笔记(三)——UML核心元素之参与者、用例
- 轻型机械臂模块关节机械设计方案
- ubuntu18.04安装搜狗输入法之后无法使用的问题
- Windows 98光盘启动安装过程详细图解
- 猎豹掌门人出走,傅盛的“梦游”该醒醒了
- 计算机操作系统读书笔记
- web综合 限时秒杀效果的制作
- ChaosBlade
热门文章
- php分区表,【MYSQL】分区表
- Linux下安装VIM编辑器,以及简单的VIM指令操作
- 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
- Java程序员该如何学习才能成长为一名优秀的架构师
- 理发店管理系统java_美容美发店管理系统的设计与实现(JSP,SQLServer)(含录像)
- 【LeetCode笔记】剑指Offer 43. 1~n 整数中1出现的次数(Java、数位dp、偏数学)
- php保存复制粘贴的网页内容,JS实现网站内容的禁止复制和粘贴、另存为
- mui请求php,PHP 怎样处理mui.ajax POST过来的数据?
- pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计
- 计算机专业英语词汇mp3,【听单词】计算机专业英语词汇音频106,计算机英语单词MP3...