分享嘉宾陈磊

开源数据库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. Jmeter函数助手12-threadNum

    threadNum函数用于获取当前线程编号.该函数没有参数,直接引用即可. 1.线程数可在组件[测试计划->线程组]设置.如下是不传入循环次数的${__threadNum}. "调试取 ...

  2. PixiJS源码分析系列:第四章 响应 Pointer 交互事件(上篇)

    响应 Pointer 交互事件(上篇) 上一章我们分析了 sprite 在 canvasRenderer 上的渲染,那么接下来得看看交互上最重要的事件系统了 最简单的 demo 还是用一个最简单的 d ...

  3. vue3 + ts 中出现 类型“typeof import(".........../node_modules/vue/dist/vue")”的参数不能赋给类型“Component<any, any, any, ComputedOptions, MethodOptions>”的参数。

    错误示例截图 解决方法 修改shims-vue.d.ts中的内容 declare module "*.vue" { import { defineComponent } from ...

  4. Arm V8 - ADRP指令

    ADRP指令 作用 将当前指令所在页的基地址加/减去字节差,并写入目标寄存器 字节差:与目标地址页基地址的间隔字节数,其为PAGE_SIZE的整数倍 此时的字节差就是指令所操作的立即数 该指令通常配合 ...

  5. faster-fifo:C++实现的python多进程通信队列 —— 强化学习ppo算法库sample-factory的C++实现的python多进程通信队列 —— python3.12版本下成功通过测试

    项目地址: https://github.com/alex-petrenko/faster-fifo 需要注意,该项目给出了两种安装方法,一种是pip从pypi官网安装,一种是从GitHub上的源码安 ...

  6. 遥遥领先!鲲鹏ARM架构下国产数据同步能力大幅提升16.9倍

    在上篇文章<2.6倍!WhaleTunnel客户POC实景对弈DataX>发布之后,一个客户突然向我们控诉其苦DataX久矣,因为是在信创的鲲鹏ARM CPU上运行 ,每天同步需要很长时间 ...

  7. Codeforces Round 964 (Div. 4) D. Slavic's Exam

    题目链接:https://codeforces.com/contest/1999/problem/D 题目描述 Slavic 的考试非常难,需要您的帮助才能通过.以下是他正在努力解决的问题: 存在一个 ...

  8. Win32 拆分窗口

    前两天学习了MFC的拆分窗口,今天来学习Win32 SDK下如何拆分窗口. win32是没有像MFC那样直接有函数方法拆分窗口,只能自己处理了. 1.在WM_CREATE消息中创建两个控件,TreeV ...

  9. SRE 必备知识 - Kafka 探秘之零拷贝技术

    如果你了解过 Kafka,那么它用到的一个性能优化技术可能会引起你的注意 -- 操作系统的零拷贝(zero-copy)优化. 零拷贝操作可以避免对数据的非必要拷贝,当然,并非是说完全没有拷贝. 在 K ...

  10. NVM 使用

    NVM(Node Version Manager)是 Node.js 的版本管理工具. NVM 项目为 macOS 和 Linux 开发.Windows 用户需要使用 NVM for Windows. ...