FASTER

在过去十年中,云中的数据密集型应用程序和服务有了巨大的增长。数据在各种边设施(例如,设备,浏览器和服务器)上创建,并由云应用程序处理用来获得数据价值或做出决策。应用程序和服务可以处理收集的数据,也可以实时监控数据。这些应用程序通常是更新密集型的,并且涉及大量的状态,超出了适合主存储器的处理能力。但是,它们在其访问模式中显示出重要的时间局部性(时间局部性解释维基百科=>https://en.wikipedia.org/wiki/Locality_of_reference)。一种用于点运算的新的键值存储。FASTER将高速缓存优化的并发哈希索引与“混合日志”结合在一起:跨越主内存和存储的并发日志结构记录存储,并且支持内存中“热插拔”的快速就地更新。FASTER扩展了标准键值存储接口,以处理读取 - 修改 - 写入,blind 更新和基于CRDT的更新。实验表明,与当前广泛部署的存储库相比,FASTER在单台机器上实现了更高的吞吐量(每秒高达1.6亿次操作),并且当工作负载大小适合内存大小时,他的性能将远胜于纯内存数据结构的性能。

背景

微软研究团队于2018年6月份在SIGMOD 宣布了一项名为FASTER的新的key-value存储库。FASTER支持快速和频繁的数据查找。它还有助于解决在当今云时代的应用程序更新大量状态信息的问题。

让我们以物联网为一种场景。数十亿设备报告和更新状态,如每个设备的性能计数器。这将导致应用程序未充分利用机器上的存储库和网络等资源。他能更快地帮助解决此问题, 因为它利用这些应用程序中的时间位置来控制系统内存占用量。

根据微软的说法,“FASTER是一个单节点共享内存键值存储库”。键值存储是NoSQL数据库,它使用简单的键/值方法进行数据存储。它包含两项重要创新:

  • 缓存友好,并发和无锁存的哈希索引。它维护日志中记录的逻辑指针。FASTER哈希索引是指向一个缓存行大小的 hash buckets数组,每个都有8字节的条目来保存哈希标签。它还包含指向存储记录的逻辑指针。。

  • 一个新的并发和混合日志记录分配器。这有助于支持包括快速存储(例如云存储和SSD)和主存储器的索引。

是什么让FASTER与众不同?

传统的键值存储利用日志结构记录数据。但是,FASTER是不同的,因为它有一个混合日志,它结合了日志结构和读取副本更新(适用于外部存储)和就地更新(适用于性能更高的内存)。因此,位于存储器中的混合日志的头部使用读取 - 复制 - 更新,而主存储器中的混合日志尾部使用就地更新。内存中有一个位于这两个区域之间的只读区域。它为核心记录提供了另一个被复制回尾部的机会。这捕获了更新的临时位置,并允许在内存中自动的收集热记录。

因此,FASTER甚至能够超越英特尔TBB hash map等纯内存数据结构。微软表示,它的性能远远优于今天流行的诸如RocksDB和Redis等键值存储的缓存系统。

除此之外,FASTER还为故障恢复提供支持,因为它包含一个恢复策略,有助于将系统以低成本恢复到最近的一致状态。这与传统数据库系统中的恢复机制不同,因为它不涉及阻止或创建单独“预写的日志”。

有关更多信息,请查看官方研究报告。

FASTER项目Github地址:https://github.com/Microsoft/FASTER

翻译参考:

https://hub.packtpub.com/say-hello-to-faster-a-new-key-value-store-for-large-state-management-by-microsoft/

https://www.microsoft.com/en-us/research/publication/faster-concurrent-key-value-store-place-updates/

https://www.microsoft.com/en-us/research/blog/microsoft-unveils-faster-key-value-store-large-state-management/

原文地址: https://www.cnblogs.com/xiaoliangge/p/9539735.html


.NET社区新闻,深度好文,欢迎访问公众号文章汇总 http://www.csharpkit.com

一个迄今为止最快的并发键值存储库FASTER诞生相关推荐

  1. linux+android4.2键值关系,Android4.0 添加一个新的Android 键值

    这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据kernel中检测到的按键值,然后转化为所需要的数值: 以添加一个linux键值为217,把它映射为android的键值Browser(这个键 ...

  2. Android4.0 添加一个新的Android 键值

    这里添加新的键值,不是毫无凭据凭空创造的一个键值,而是根据kernel中检测到的按键值,然后转化为Android所需要的数值: 以添加一个Linux键值为217,把它映射为android的键值Brow ...

  3. Dynamo:亚马逊的高可用键值存储

    目录 1. 简介 2. 背景 3. 相关工作 4. 系统结构 5. 实现 6. 经验和教训 7. 结论 Dynamo:亚马逊的高可用键值存储 摘要:大规模的可靠性是我们在 Amazon.com 面临的 ...

  4. [转]实现键值对存储(长文)

    实现键值对存储(0):目录 本文由 伯乐在线 - 熊铎 翻译.未经许可,禁止转载! 英文出处:Emmanuel Goossaert (CodeCapsule.com).欢迎加入翻译组. 2014年7月 ...

  5. 从零开始设计键值数据库(KEY-VALUE STORE)

    本文主要参考 System Design Interview: An Insider's Guide(CHAPTER 6) 键值存储(key-value store),也被称为键值数据库(key-va ...

  6. 解析高可用分布式键值存储 etcd 的原理

    2019独角兽企业重金招聘Python工程师标准>>> 这篇文章将会介绍 etcd 的实现原理,其中包括 Raft 协议.存储两大模块,在最后我们也会简单介绍 etcd 一些具体应用 ...

  7. cockroachdb mysql_CockroachDB学习笔记——[译]CockroachDB中的SQL:映射表中数据到键值存储...

    CockroachDB学习笔记--[译]CockroachDB中的SQL:映射表中数据到键值存储 原文标题:SQL in CockroachDB: Mapping Table Data to Key- ...

  8. 键值数据库LevelDB的优缺点及性能分析

    导读:LevelDB是一种为分布式而生的键-值数据库. 作者:廖环宇 张仕华 来源:大数据DT(ID:hzdashuju) 01 LevelDB的特性 LevelDB是一个C++语言编写的高效键-值嵌 ...

  9. TypeError: keys must be str, int, float, bool or None, not tuple,解决 python 中 json 保存不了字典键值为 元组 的问题

    >>> a = {('0xFFFA', 11): 32, ('0x00F3', 1): 1, ('0xFFFA', 2): 42} {('0xFFFA', 1): 32, ('0x0 ...

最新文章

  1. Citrix Receiver For Linux 预览版
  2. iframe嵌套显示整个页面_【HTML】框架标签lt;iframegt;
  3. 95%PyTorch库都会中招的bug!特斯拉AI总监都没能幸免
  4. Spring JPA 开启原生sql打印
  5. USB OTG ID 检测原理
  6. jdk switch 枚举_JDK 12开关表达式遇到意外的枚举值
  7. 【BZOJ4559】【JLOI2016】—成绩比较(拉格朗日插值+dp)
  8. Jenkins配置钉钉通知
  9. python 编译成exe黑屏_python''外星人入侵''打包成exe遇到的问题和解决办法,闪退,黑屏。...
  10. Linux专题_行编辑
  11. mysql实现自动更新时间戳
  12. 决策树算法与python——心脏病预测
  13. 怎么做应力应变曲线_舌尖上的力学——浅谈应力应变曲线
  14. 为UBUNTU安装一个像千千静听一样的MP3播放器
  15. python itchat实现微信自动回复
  16. sql统计各分数段人数示例
  17. mysql非结构化查询_Mysql(2.3) 简单查询(SELECT)、子查询
  18. Linux 未定义的引用解决记录
  19. PG服务进程(Postgres)——BeginReportingGUCOptions向客户端汇报GUC
  20. 计算机鼓轮原理,五.汽车底盘测功机的构造及工作原理a单轮单滚筒式.ppt

热门文章

  1. Android GIS开发系列-- 入门季(13)Gdal简单写个shp文件
  2. PHP中如何配置smarty框架实现PHP代码和HTML代码分离
  3. 《PowerShell 3.0 Advanced Admin handbook》已于今日上市
  4. 您是否也想过让你的电脑百毒不侵呢!
  5. 2021技术文大盘点 | 打包过去,​面向未来
  6. Npgsql 6.0.2 发布,赶紧升级!!!
  7. 01Prism WPF 入门实战 - 项目准备
  8. 好端端的程序员,咋就成了新生代农民工!
  9. NET问答:什么场景下应该选择 struct 而不是 class ?
  10. 如何友好的处理 WebApi 中抛出的错误