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 配置文件详解相关推荐

  1. mybatis mysql 配置文件_Mybatis配置文件详解(4)

    本次主要来了解: MyBatis数据库配置文件SqlMapConfig.xml SQL映射配置中输入映射的配置 SQL映射配置中输出映射的配置 SQL映射配置中动态SQL语句的配置 1. SqlMap ...

  2. MyBatis复习笔记2:配置文件详解

    配置文件详解 属性(properties) MyBatis可以使用 properties 来引入外部 properties 配置文件的内容 resource:引入类路径下的资源 url:引入网络路径或 ...

  3. vuecli 编译后部署_基于vue-cli 打包时抽离项目相关配置文件详解

    前言:当使用vue-cli进行开发时时常需要动态配置一些设置,比如接口的请求地址(axios.defaults.baseURL),这些设置可能需要在项目编译后再进行设置的,所以在vue-cli里我们需 ...

  4. (转) SpringBoot非官方教程 | 第二篇:Spring Boot配置文件详解

    springboot采纳了建立生产就绪spring应用程序的观点. Spring Boot优先于配置的惯例,旨在让您尽快启动和运行.在一般情况下,我们不需要做太多的配置就能够让spring boot正 ...

  5. CENTOS7 高性能Linux集群 通过yum进行 haproxy配置 !安装 !使用!HAProxy配置文件详解

    Haproxy配置 永久修改名字:便于区分虚拟机! Haproxy:hostnamectl set-hostname haproxy Web1: hostnamectl set-hostname WE ...

  6. 用户管理 之 用户(User)和用户组(Group)配置文件详解

    作者:北南南北 来自:LinuxSir.Org 摘要:本文详解用户(User)和用户组(Group)的配置文件,本文是<Linux 用户(User)和用户组(Group)管理概述>文档的关 ...

  7. 【ZooKeeper】配置文件详解

    ZooKeeper的配置文件详解 zkServer.sh读取的默认配置文件是$ZOOKEEPER_HOME/conf/zoo.cfg.如果要用其它配置文件.如下传递配置文件参数: zkServer.s ...

  8. vsftpd配置文件详解

      1.默认配置: 1>允许匿名用户和本地用户登陆.      anonymous_enable=YES      local_enable=YES 2>匿名用户使用的登陆名为ftp或an ...

  9. Web.config配置文件详解(新手必看)

    Web.config配置文件详解(新手必看) 花了点时间整理了一下ASP.NET Web.config配置文件的基本使用方法.很适合新手参看,由于Web.config在使用很灵活,可以自定义一些节点. ...

最新文章

  1. OpenCV About 页面翻译
  2. 深入理解分布式技术 - 降级和熔断
  3. Angular JS 中的内置方法之表单验证
  4. Spring 中获取servletContext及WebApplicationContext以及applicationContext三者之间的关系
  5. 小程序动画Animation,高度增加动画形式,图标旋转动画形式
  6. Scala教程之:Enumeration
  7. 001-pro ant design 升级2.0后变更
  8. vue表单的基本使用
  9. 为什么Flink会成为下一代大数据处理框架的标准?
  10. 揭秘孙小小《PPT演示之道》
  11. 关于python中的pow(1010、32)_关于Python中的??pow(1010,32),下列说法正确的是.
  12. 基于Springboot的景区旅游管理系统 JAVA MySQL
  13. 《大象 Thinking in UML》学习笔记(三)——UML核心元素之参与者、用例
  14. 轻型机械臂模块关节机械设计方案
  15. ubuntu18.04安装搜狗输入法之后无法使用的问题
  16. Windows 98光盘启动安装过程详细图解
  17. 猎豹掌门人出走,傅盛的“梦游”该醒醒了
  18. 计算机操作系统读书笔记
  19. web综合 限时秒杀效果的制作
  20. ChaosBlade

热门文章

  1. php分区表,【MYSQL】分区表
  2. Linux下安装VIM编辑器,以及简单的VIM指令操作
  3. 华为手机如何固定横屏_华为手机如何录屏?原来方法这么简单,手把手教你学会...
  4. Java程序员该如何学习才能成长为一名优秀的架构师
  5. 理发店管理系统java_美容美发店管理系统的设计与实现(JSP,SQLServer)(含录像)
  6. 【LeetCode笔记】剑指Offer 43. 1~n 整数中1出现的次数(Java、数位dp、偏数学)
  7. php保存复制粘贴的网页内容,JS实现网站内容的禁止复制和粘贴、另存为
  8. mui请求php,PHP 怎样处理mui.ajax POST过来的数据?
  9. pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计
  10. 计算机专业英语词汇mp3,【听单词】计算机专业英语词汇音频106,计算机英语单词MP3...