01-存储背景

数据存储是信息时代的一项基础技术,是各种互联网应用背后的重要基石。例如我们每天用到的各种APP,看头条,刷抖音,以及个人的各种电子数据的保存等等,都离不开存储技术。

在开发者的角度,数据存储大多是使用数据库,而大家广泛使用的又是比较成熟的关系型数据库,例如mysql、oracle、db2、sqlserver等。一直以来,关系型数据库得到大家的青睐。但随着互联网和信息技术的发展,以及各种新的应用场景的需求,各种数据库不断涌现,也出现了新的数据库类型,比如kv数据库、文档数据库、图数据库、时序数据库等等。

在db-engines上统计的目前数据库有数百个,以下是db-engines上目前排名靠前的数据库。

当然本书将要介绍的leveldb并未出现在这个前10榜单中。但它作为最近几年出现的数据库正成为后起之秀,越来越多地被开发者所熟悉和应用,并成为当前分布式数据库的核心引擎的主流之选。开源数据库ssdb就是将作leveldb作为存储引擎进行架构的。基于leveld开发的rocksdb更是被广泛地应用,目前国产数据库中风光无限的TiDB就是基于rocksdb开发。

02-leveldb背景

传统的关系型数据库平衡了读写的性能,使用B tree作为其索引存储结构,以其良好的稳定性被目前大多数应用和场景所使用。而对于一些写多读少、高并发、超大数据量的应用场景,使用B tree组织的关系型数据库难以堪此重任。因此以leveldb为代表的写优化的数据结构LSM tree应用而生。关于B tree和LSM tree后面章节会进行详细介绍,此处略过。

leveldb通过将磁盘随机写转换为顺序写来提高其写入性能。不论是数据的写入、删除还是更新,在leveldb中都是进行追加写的方式,从而保证了磁盘的顺序写。磁盘顺序写的性能较随机写至少要高1000倍。因此通过优化磁盘写入方式,显著提升了其写入性能。

03-leveldb简介

leveldb是谷歌开源的高效的kv数据库引擎,由Jeff Dean和Sanjay Ghemawat两位大神开发。在github上由两位的邮箱:Sanjay Ghemawat (sanjay@google.com) and Jeff Dean (jeff@google.com),如果您学习完leveldb之后有新的发现和建议,不防可以尝试和两位大神进行交流。

在github上的项目地址是:https://github.com/google/leveldb
开源协议为BSD,非常友好的开源协议,可以按照协议对源代码进行修改并重新发布,Facebook开源的Rockdb就是就是基于leveldb进行优化的。

介绍完作者和开源情况,接下来说说leveldb的特点:

  • leveldb是持久化存储的kv系统,不同于redis将数据全部存储在内存中,而是将大部分数据存储于磁盘上。
  • leveldb在存储数据时是根据key的顺序进行有序存储的,key的排序默认按字节序排序,支持用户自定义比较函数。
  • leveldb和其他kv数据库一样,提供put、get、delete及批量原子操作接口。当然还提供一个范围查询的迭代器。
  • leveldb支持数据快照功能,使得读取操作不受写入操作的影响,在读取过程中获得一致的数据。
  • leveldb支持数据压缩功能,使用特定的前缀压缩以及块压缩,大大减少磁盘空间的占用以及提高IO效率。
  • leveldb性能非常突出,官方报道其随机写性能达到40万每秒,而随机写性能达到6万每秒。
  • leveldb是一个数据库存储引擎,它可以作为嵌入式数据库使用,也可以自己封装网络层来实现自己的数据库服务。

01-leveldb概述相关推荐

  1. RN学习笔记01:概述、特点与环境搭建

    RN学习笔记01:概述.特点与环境搭建 一.RN概述 React Native(简称RN)是Facebook于2015年4月开源的跨平台移动应用开发框架,是Facebook早先开源的JS框架 Reac ...

  2. 中学教学01教学概述02教学过程03教学原则与方法

    01教学概述 一.教学的概念 (一)教学的含义 教学的教,学生的学共同组成的一种活动 面对着墙讲课不是教学 教学也不等于教育学 教育学是一门学科,科学 教学不等于教育 教育:教书育人 教育的概念更大 ...

  3. 机器学习入门 01 —— 机器学习概述

    文章目录 系列文章 机器学习概述 1.1.人工智能概述 1 人工智能应用场景 2 人工智能小案例 3 人工智能发展必备三要素 4 人工智能.机器学习和深度学习 5 小结 1.2.人工智能发展历程 1. ...

  4. C 程序设计教程(01)—— 概述

    C 程序设计教程(01)-- 概述 该专栏主要介绍 C 语言的基本语法,作为<程序设计语言>课程的课件与参考资料,用于<程序设计语言>课程的教学,供入门级用户阅读. 目录 C ...

  5. (全栈旅行足迹地图打卡网站 0-1)-项目概述-01(WebGIS Vue-js-go-mysql)

    专栏介绍 首先本专栏是一个全栈项目的旅行足迹地图打卡网站,定位是一个想要做开发的小伙伴,还有就是刚刚开始学习Web项目的大学生,想要做项目或者其他设计的学习源.也定位于目标想要快速上手 WebGIS ...

  6. 笔记 HTML - 01 HTML 概述

    01 HTML 概述 By Kevin Song 定义:HTML 超文本标记语言 特点 最基础的网页语言 代码都是由标签组成 代码不区分大小写 <html><head>< ...

  7. 光脚丫思考Vue3与实战:第04章 模板语法 第01节 概述+插值

    下面是本文的屏幕录像的在线视频: 光脚丫思考Vue3与实战:第04章 模板语法 第01节 插值 温馨提示: 1.视频下载:线上视频被压缩处理,可以下载高清版本: 链接:https://pan.baid ...

  8. 中学课程01课程概述02课程组织03基础教育课程改革

    一.课程概述 (一)"课程"一词的由来-单选-斯宾塞准备学知识 "课程"一次源于斯宾塞<什么知识最优价值>,他是最早把课程作为一个专门的研究术语 ( ...

  9. 【JDBC - 核心技术】01 JDBC概述

    第01章 JDBC概述 创作日期:2021-12-05 1.1 数据的持久化 持久化(persistence):把数据保存到可掉电式存储设备中以供之后使用.大多数情况下,特别是企业级应用,数据持久化意 ...

  10. MEM/MBA 写作-论证有效性分析(01) 概述

    1 写作试题概述与简介 MEM/MBA 考试中 作文主要分为两个部分:论证有效性分析 和 论说文,分别位于卷面的56题和57题,如下图所示: 论证有效性分析(30分,参考时间25分钟) 和 论说文(3 ...

最新文章

  1. 肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解
  2. 祝融号火星车亮相,每小时仅移动40米,为何比乌龟还慢?
  3. PHP判断文件夹是否存在和创建文件夹的方法
  4. mysql+代码备份,一个很简单的MYSQL数据库备份脚本代码
  5. [工具库]JOXMLBuilder工具类——一键把多个bean对象数据转换为XML格式数据
  6. RTT设置删除空闲钩子函数想到函数指针和回调函数
  7. LoadRunner字符串编码转换函数:lr_convert_string_encoding
  8. 信息安全工程师(中级)—重要知识点总结
  9. 电脑摄像头测试软件在线,AMCap 摄像头测试软件使用说明
  10. 正则表达式匹配中文时发现的问题
  11. 高通平台开发系列讲解(音频篇)Codec驱动移植步骤
  12. 学习笔记(三):WiFi-Sleep
  13. 西数、希捷、DIY移动硬盘详细拆解,暴力解析
  14. IT培训行业揭秘(四)
  15. 云计算的主要应用领域
  16. JS: exec()方法
  17. WebStorm2016.2 注册码及激活,2018.6.14亲测有效
  18. 如果已知英制长度的英尺foot和英寸inch的值,那么对应的米是(foot+inch/12)×0.3048。//现在,如果用户输入的是厘米数,那么对应英制长度的英尺和英寸是多少呢?别忘了1英尺等
  19. 【金猿产品展】拍乐云——新一代实时音视频云服务,构建云上的每一次美好互动...
  20. android下雨动画效果,Android 自定义View(二) 下雨效果

热门文章

  1. 协方差矩阵的几何解释
  2. SmallTalkEDI程序
  3. 发邮件的JAVA程序
  4. 广州的房价是我遥不可及的梦,今天就用Python来做一个房价预测小工具
  5. 用了这么久开源社区,还搞不明白免费/自由/开源软件?
  6. 什么是404页面,如何正确设置制作404页面
  7. 认证资料大全(十三)------ Juniper Networks认证列表
  8. 32位的md5校验程序
  9. GraphEdit 应用
  10. CSS3选择器(全)