分享嘉宾陈磊

开源数据库Pika项目PMC核心人员

整理墨天轮社区

导读

大家好,今天我分享的主题是:KV数据库,云时代的文件存储。

随着AI和机器学习等技术的发展,数据演变为了十分宝贵的资源,数据存储也是非常活跃的领域。现在踊跃出很多数据库,以及数据存储的高质量开源项目。

那么像键值数据库这样较为老牌的存储的类型 在云时代下是否还有价值,KV数据库是否会被其他的数据库替代呢?借着今天分享的机会,我想与大家讨论这个问题,同时也谈谈我对以上的思考。

注:KV数据库 即 键-值数据库(Key–value database)

有关 Pika

1、Pika简介

Pika 属于分布式NoSQL数据库,初创团队是360基础架构,于2015年开源(开源地址:https://github.com/Qihoo360/pika),并捐赠给了开放原子开源基金会。

2021年6月,Pika成为开放原子开源基金会的一个孵化项目之一,正式走向了社区自治



图1 Pika 简介

2、Pika发展过程



图2 发展过程及github上的star trend

什么是键值数据库

1、键值数据库定义

首先键值数据库可以从这三个方面来理解。

  • 键值数据库是一种非关系数据库,它使用简单的键值方法来存储数据。
  • 键值数据库将数据存储为键值对集合,其中键作为唯一标识符。键和值都可以

    是从简单对象到复杂复合对象的任何内容。
  • 键值数据库是高度可分区的,并且允许以其他类型的数据库无法实现的规模进

    行水平扩展。

如果将键值数据库的概念外扩,就变成了广义的“键值存储”的概念,比如图片存储、小文件存储、对象存储。

2、键值数据库分类

键值数据库内部分为四大类,缓存&持久化、商业&开源、有序&无序、大Value&小Value,侧面说明该领域是有需求的,每个分类中有很好的例子存在。



图3 KV数据库内部分类

键值数据库的优势

那么键值数据库和其他数据库存储相比,是否有优势呢?我将数据库存储分为了三个大类,关系数据库、NoSQL、数据存储。KV数据库属于nosql这一类。



图4 KV在数据库与存储中的位置

这里我尝试引入“递弱代偿”的理论,应用于数据库领域中,便是:越简单的系统适用场景越宽广,越复杂的系统适用场景越少

对于KV数据库而言,它的逻辑简单,解决问题更灵活,适用的场景更广;而对于专业性强的数据库(关系数据库 & NewSQL & 搜索数据库 & 图数据库 & 向量数 据库等):解决的问题更专业,适用场景更少。

1、可构建多种应用场景

接下来将从几个方面来举例分析键值数据库在理论中的应用情况。



图5 KV数据库可构建多种应用场景

KV数据库本身提供多种接口。它支持不同的如KEY-STRING、KRY-HASH、 KEY-LIST的接口,满足不同场景的需求。

比如KEY-STRING的接口应用于搜索推荐、机器学习;;KRY-HASH 接口应用于比较复杂的业务场景,比如用户信息、好友推荐、对象存储元数据; KEY-LIST构建一个简单且高效的消息中间件,使应用程序能够很容易的进行异步的扩展,也可以打造一个分布式的任务系统。

基于KV数据库可以做简单的编程,用户可以通过简单的编程来适配他的业务。

2、可构建其它数据库和基础软件

目前很多的基础设施和数据库,是基于KV数据库来构建的,比如关系数据库,向量数据库,图数据库,流数据库,分析数据库,消息队列。

因此kV数据库的生存能力与价值是很大的,可以是构建其他数据库的基础。



图6 可基于KV数据库构建其它数据库和基础软件

KV数据库,云时代下的文件存储

通过刚才的例子,可能有朋友会认为,KV数据库就等于通用文件存储,它们是否是一样的呢?

这里我从解决问题、使用场景、开发效率、开发难度、云支持五个角度对两者做了比较。



图7 通用文件存储 VS KV存储

在云的时代下,大家在存储数据的过程中已经抛弃掉了文件存储的使用工具,开始通过数据库解决。数据库的分类众多,如何满足不同用户不限的需求与特定的场景?

在这样的背景下,可以通过KV数据库或者KV存储来解决用户在自定义的一些逻辑,从而满足他们的场景。

在未来的云上中,除了特定的场景以外,KV数据库便是除特定场景以外的补充,所以我认为KV在未来的云上中非常有前景。因此我们要解决的问题就是:如何通过KV数据库更好地满足开发者的开发效率、开发成本、使用成本的问题

以上就是我的分享。感谢聆听

更多精彩内容,欢迎大家观看现场视频回放与会议资料

视频回放:https://www.modb.pro/video/6183

会议资料:https://www.modb.pro/doc/58204


墨天轮,围绕数据人的学习成长提供一站式的全面服务,打造集新闻资讯、在线问答、活动直播、在线课程、文档阅览、资源下载、知识分享及在线运维为一体的统一平台,持续促进数据领域的知识传播和技术创新。

关注官方公众号: 墨天轮、 墨天轮平台、墨天轮成长营、数据库国产化 、数据库资讯

墨天轮访谈 | Pika数据库陈磊:云时代下,键值数据库是否会被替代?的更多相关文章

  1. MySQL数据库的优化(下)MySQL数据库的高可用架构方案

    MySQL数据库的优化(下)MySQL数据库的高可用架构方案 2011-03-09 08:53 抚琴煮酒 51CTO 字号:T | T 在上一篇MySQL数据库的优化中,我们跟随笔者学习了单机MySQ ...

  2. SAP 2019 TechEd Key Note解读:云时代下SAP从业人员如何做二次开发?

    刚刚过去的在巴塞罗那举行的2019 SAP TechEd,SAP照例向全球广大的SAP生态圈从业者们传达了一些重要的信息,其中一条为:Building Extensions for the Intel ...

  3. 备份、恢复数据库(Dos命令提示符下)_数据库安装工具_连载_1

    Dos命令提示符下: 备份.恢复数据库,是不是很简单啊,是的,当你20年不碰MS SQL,是不是又忘记了呢,答案也许也是吧,^_^虽然在程序中执行SQL代码时,很讨厌那个Go,正如MySQL中那个分号 ...

  4. Java -- JDBC 获取数据库自动 生成的主键值

    public class Demo4 { /* create table test1 ( id int primary key auto_increment, name varchar(20) ); ...

  5. 浅谈Redis数据库的键值设计(转)

    丰富的数据结构使得redis的设计非常的有趣.不像关系型数据库那样,DEV和DBA需要深度沟通,review每行sql语句,也不像memcached那样,不需要DBA的参与.redis的DBA需要熟悉 ...

  6. 浅谈REDIS数据库的键值设计(转)

    add by zhj: 关系数据库表的一条记录可以映射成Redis中的一个hash类型,其实数据库记录本来就是键值对.这样,要比本文中的键设计用更少的键,更节省内存,因为每个键除了它的键值占用内存外, ...

  7. key-value键值型数据库:Redis

    key-value键值型数据库:Redis redis Redis是in-memory型(内存型)的键值数据库,数据在磁盘上是持久的,键类型是字符串,值类型是字符串.字符串集合(Set).sorted ...

  8. Redis源码解析:09redis数据库实现(键值对操作、键超时功能、键空间通知)

    本章对Redis服务器的数据库实现进行介绍,说明Redis数据库相关操作的实现,包括数据库中键值对的添加.删除.查看.更新等操作的实现:客户端切换数据库的实现:键超时相关功能的实现.键空间事件通知等. ...

  9. ZeroMQ:云时代极速消息通信库

    ZeroMQ:云时代极速消息通信库(大规模|可扩展|低成本|高效率解决之道,大规模分布式|多线程应用程序|消息传递架构构建利器) [美]Pieter Hintjens(皮特.亨特金斯)著   卢涛 李 ...

  10. OneAPM:打造云时代的应用性能管控平台

    在2015年大连市CIO信息化年会的现场,记者与OneAPM东北区总经理佟维针对云时代的企业系统应用性能的管理控制进行了简短交流.北京蓝海讯通科技股份有限公司,即OneAPM是中国基础软件领域的新兴领 ...

随机推荐

  1. 《最新出炉》系列入门篇-Python+Playwright自动化测试-57- 上传文件 - 番外篇

    1.简介 前边的三篇文章基本上对文件上传的知识介绍和讲解的差不多了,今天主要是来分享宏哥在文件上传的实际操作中发现的一个问题:input控件和非input控件的上传API对其都可以上传成功.废话不多说 ...

  2. 【Spring】01 快速入门

    Spring快速入门 空Maven项目创建 声明工程名称,完成 删除SRC目录,创建01 HelloSpring模块 导入依赖 Maven坐标: <!-- https://mvnreposito ...

  3. 【REGX】正则表达式 选中空白行

    参考地址: https://www.cnblogs.com/peijyStudy/p/13201576.html VScode并列替换不够智能,我需要等行粘贴,结果SHIFT+ALT复制内容粘贴上去就 ...

  4. python运行报警告:Cython directive 'language_level' not set, using '3str' for now (Py3)

    相关: https://stackoverflow.com/questions/34603628/how-to-specify-python-3-source-in-cythons-setup-py ...

  5. Maven经验分享(五)Maven拷贝资源

    上一章介绍使用ant拷贝资源,这里介绍maven拷贝资源,使用maven-resources-plugin插件. <plugin> <groupId>org.apache.ma ...

  6. centos7.5离线安装zabbix4.0

    一.配置环境 1.1 Linux环境说明 zabbix 安装要求 https://www.zabbix.com/documentation/4.0/zh/manual/installation/req ...

  7. armbian挂载sd卡记录

    mkdir -p /mnt/mmctouch  /etc/init.d/mount.shvim /etc/init.d/mount.sh内容见图mount /dev/mmcblk1p1 /mnt/mm ...

  8. 带你了解 WebAssembly 的发展、应用与开发

    一.WebAssembly 是什么? "WebAssembly(缩写为 Wasm)是一种基于堆栈式虚拟机的二进制指令集.Wasm 被设计成为一种编程语言的可移植编译目标,并且可以通过将其部署 ...

  9. CSS学习(四)值和单位

    一.关键字.字符串和其它文本值 关键字:与其它编程语言一样,是代表特定含义的一个单词( 接收关键字的属性,所取的关键字必须在那个属性允许使用的关键字范围之内 ) 字符串:前后引号要保持一致( 可以是单 ...

  10. Spring Boot 框架中配置文件 application.properties 当中的所有配置大全

    Spring Boot 框架中配置文件 application.properties 当中的所有配置大全 #SPRING CONFIG(ConfigFileApplicationListener) s ...