`
forchenyun
  • 浏览: 310010 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

海量数据存储之新存储设备性能优化

阅读更多

本文主要讲述NoSQL在Flash设备上的可以选择的其中一种优化策略,并粗略提了一下SSD设备的特性。

对Flash设备的性能优化,微软曾经做过一份paper,但是里面很多东西比较局限:比如paper中将SSD作为了写入的buffer,而众所周知,写性能不会是任何一款NoSQL的瓶颈;比如SSD的索引采用了Hash的数据结构,这样在进行cache evict的时候,粒度的控制也很有问题。本文对其进行了改进,罗列如下:

Features of SSD

SSD对于传统硬盘的优势在于它没有机械装置,介质也由磁介质变为了电介质,因此它具备直接按地址读取数据的能力,没有了寻道时间,这也是为什么SSDIOPS可以达到数万的原因。

SSD的写操作比较特殊,其最小写入单元是4K,当写入空白位置的时候可以直接写入,但是当需要改写某个单元时,则需要一个额外的擦出操作,擦除的操作一般是128page,每个擦出的单元称为一个块。

Wear Leveling

因为SSD的存储单元寿命有限,因此,当某个特定的部位被频繁擦写,不仅会造成性能问题,而且使得SSD寿命大幅降低,所以SSD做了Wear Leveling,即损耗均衡算法。这样,当需要改写某个page时,并不写入原有位置,而是读取现有块,合并需要改写的数据,然后一起写入新的空闲块,原有的块被标记为invalid,等待被擦除回收。这样做的好处在于,一是不会反复擦写同一个block,二是写入的速度会比较快(省略了擦除的动作)

Write amplification

因为SSDerase-before-write的特性,所以就出现了一个写入放大的概念,比如你想改写4K的数据,必须首先将整个擦除块(512KB)中的数据读出到缓存中,改写后,将整个块一起写入,这时你实际写入了512KB的数据,写入放大系数是128。写入放大最好的情况是1,就是不存在放大的情况。

Conclustion

综合SSD的特性,我们需要做到以下两点来合理使用SSD并且提高其使用寿命:

 

1. 尽量避免随机写。由于损害均衡算法的存在,随机写特定page将造成写入放大。

2. 避免每次写入过少的数据。如果每次写入的数据不足SSD的一个page大,那么当前写入的数据将导致该page有浪费,并且接下来对该文件逻辑上的append将导致,之前写的不足一个page的数据被读取出来,并合并到新的page中去。

3. 不要使用完全部的空间SSD的损耗均衡算法虽然一定程度上减少了对特定部位的频繁擦写,但是如果空间不够,这个还是很难避免,因此,最好预留至少50%的空间。

可以看到,不得不说,绝大部分的NoSQL产品都做到了上述两个特性。因此,在新型存储设备上的尝试将是NoSQL时代的主题。

SSD as Level2 Cache

虽然当前SSD相比内存便宜了很多,但目前SSD每存储单元在价格上仍然比普通硬盘要贵很多,因此,在这个过渡时期,普遍的想法是把SSD当做二级Cache。像Flashcache这样利用Linux Device Mapper,将SSD等设备当做Write Back block cache。关于其详细介绍,这里就不多说了,可以去https://github.com/facebook/flashcache 看看官方的介绍。这里讲述另外一种可能比较简单易实现的方式。

根据上面描述的SSD的性能特点,可以采用下面的设计:


 

 

上图是逻辑上的结构,物理的实现已经把很多东西都合并了,比如读cache和写buffer,以及SSD的索引B-tree,都可以进行合并成为一颗B-treeBerkeley Db的方式),另外,我需要强调的一点是,这里的SSD索引使用了B-Tree,相比于Hash是为了提供更粗粒度的SSD Cache失效机制,这一点的原因在上面的SSD特性中已经讲过了,下面讲述get以及set操作的流程。

Get

首先,逻辑上先查询内存中的Read Cache,如果不存在,则查询Write Buffer,然后是SSD CacheB-Tree Index,然后是Bloom Filter确认key的确在硬盘存在,最后查询到硬盘。

Set

      插入的时候,先写到write buffer里面,当buffer到达一个临界值的时候将其刷到SSD上,当SSD到达一个临界值的时候,将其踢出并移到硬盘,当然整个过程Bloom Filter也要保持一致。

 

Delete

     删除操作首先检查内存中的各buffercache有没有该值,如果有,直接在内存中删除其父节点对它的引用,随后直接返回;如果没有,那么先查看Bloom Filter是否该key存在,如果存在则去硬盘上删掉。

     

这里需要强调的是,删除操作只是一个标记删除,物理文件上的删除会有后台线程定时扫描,这样能够保证每次SSD的擦除操作能更加有效。

Evict strategy

         既然SSD做为了二级Cache,那么其必然存在一个evict操作,evict操作的凭据是每个节点的generationgeneration会在每次节点被访问的时候+1,这里的+1是一个全局的+1,即整颗树维护一个long型的generationA节点被访问一次则其generation1,那么过一会B节点被访问那么generation2,以此类推。

         Evict的时候将较小的generation的节点删除,将其踢到硬盘,这里需要注意,这里的节点我指的是非页节点,因此,一般情况下,每次evict至少有默认128个叶节点被踢出,即使这128个节点物理上的位置不连续,由于我们有后台的clean线程(参加海量数据存储之Key-value存储简介的过期数据清理一章)的参与,因此,我们总能保证,每次SSD的擦除操作都是连续并且是大块的。

         最后,很显然,这样的设计L1 CacheL2 Cache以及Disk组成了一套完整的数据,因此,在掉电的时候,SSDcache无需失效,当然,前提是由于我们的系统有Write-ahead-log保证了内存中的数据掉电不丢失。

References

  • 大小: 36.8 KB
30
4
分享到:
评论
1 楼 乌索普 2011-01-05  
非常有帮助,博主研究的很透彻,什么时候收我为小弟,让我也学习一下。感谢,我的QQ125478545445

相关推荐

    DataFunSummit:2022年大数据存储架构峰会PPT合集(52份).zip

    一站式海量数据集成框架原理和实践 数据服务化的实践 数据中台大数据任务调度系统的实践 增量数仓的探索与实践 实时数仓的场景剖析与架构搭建实战 JuiceFS 在数据湖存储架构上的一些探索 MatrixOne 超融合 HTAP ...

    2022大数据存储架构实践资料合集-共51份.zip

    一站式海量数据集成框架原理和实践 为云而生的分布式文件系统 未来数据库需要关心的硬核创新 Apache Doris存储层向量化改造设计与实现 数据编排技术在联通的应用 基于云上对象存储的大数据平台应用实践 大数据存储...

    云计算下的数据中心架构

    具体而言,应着重从高端服务器、高密度低成本服务器、海量存储设备和高性能计算设备等基础设施领域提高云计算数据中心的数据处理能力。云计算要求基础设施具有良好的弹性、扩展性、自动化、数据移动、多租户、空间...

    大数据的存储管理技术.doc

    因此与传统关系数据库相比,NoSQL具 有灵活的可扩展性、灵活的数据模型、与云计算紧密融合和支持海量数据存储等特点。 但NoSQL数据库也存在很难实现数据的完整性、NoSQL的应用还不是很广泛、成熟度不高 、风险较大、...

    智能变电站海量在线监测数据处理方法

    该方法将变电站在线监测所收集的海量变电设备在线监测数据冗余存储在Hadoop分布式文件系统(HDFS)中,对在线监测数据的索引表结构进行优化,并存储在分布式结构化数据库(HBase)中,实现海量在线监测数据的快速...

    大数据价值化服务平台解决方案.doc

    数据存储:采用分布式存储系统,将收集到的数据存储在高性能的存储设备上,确保数据的安全性、可靠性和可扩展性。 数据处理:利用ETL(Extract, Transform, Load)等技术,对数据进行清洗、整合、转换和加载,确保...

    基于环保物联网的系统解决方案.pptx

    数据存储与处理:采用分布式存储系统,将采集到的数据存储在高性能的存储设备上,利用云计算资源进行数据计算和处理,确保数据的准确性和一致性。 数据分析与挖掘:运用大数据分析技术,对采集到的数据进行处理、...

    基于大数据的智慧农业云平台解决方案.pptx

    硬件环境:部署高性能的服务器、网络设备和存储设备等,确保平台的稳定运行和数据安全。 软件环境:搭建大数据处理框架、人工智能算法库等必要的软件环境,为应用开发提供基础支持。 系统部署:根据平台的架构和功能...

    剖析大数据.docx

    在数据存储的组成中,包括了高性能的内核式分布存储系统、用户级的分布式存储以及业务级别的数据存储。这其中不乏LustreFS、Hadoop HDFS 这样的知名产品。 2. 数据同步 这一部分技术主要用于将基础架构产生的数据...

    物流小镇大脑建设方案.docx

    硬件环境:选择高性能的服务器、网络设备和存储设备等,确保平台的稳定运行和数据安全。 软件环境:部署云计算平台、大数据处理框架、人工智能算法库等必要的软件环境。 系统部署:根据平台的架构和功能需求,进行...

    档案大数据来袭.doc

    如果拥有 了丰富、廉价且可靠的档案信息存储设备后,档案信息数字化、存储成本的垂直下降, 以及廉价的信息数据存储技术和简便的信息数据提取技术,将使保存数字档案信息不仅 变得不再昂贵,而且选择性地操作删除...

    NVIDIA GTC CHINA 2020大会资料汇总(144份).zip

    推荐系统推理性能优化在“双十一”中的应用; 性能提升 7 倍 + 的高性能 GPU 广告推荐加速系统的落地实现; GPU 加速的数据处理在推荐系统中的应用; Merlin : GPU 加速的推荐系统框架; Merlin HugeCTR :深入研究...

    阿里巴巴开源的分布式文件系统 TFS.zip

    淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优化,承载着淘宝主站所有图片、商品描述等数据存储。 文章首先概括了...

    智慧街道治理数字化平台解决方案.docx

    大数据技术:通过大数据技术,实现海量数据的存储、处理和分析,挖掘数据价值,提升街道治理水平。 物联网技术:应用物联网设备,实现街道设施的智能化监控和管理,提高设施使用效率和安全性。 人工智能技术:借助...

    AI时代的Power服务器架构.pptx

    支持8块PCIe 4.0 标准IO设备,是x86平台2倍速率 海量存储 最大支持40块3.5寸硬盘,单机容量480T 或36块3.5寸盘+4块2.5寸硬盘 高效节能 支持单盘上下电,保证高效节能。 为不同配置匹配对应优化散热策略。 FP5466G ...

    工业大数据案例.docx

    而互联网、移动互联技术的快速普及,使车辆在行驶过程中上传各种相关数据从而形成海量数据源。经过大数据统计分析,这些数据源可以为我们提供准确丰富的参考数据和指导意见。例如:它能够正确指导汽车制造商对消费...

    工业大数据案例(1).docx

    而互联网、移动互联技术的快速普及,使车辆在行驶过程中上传各种相关数据从而形成海量数据源。经过大数据统计分析,这些数据源可以为我们提供准确丰富的参考数据和指导意见。例如:它能够正确指导汽车制造商对消费...

    大数据PPT材料.docx

    在中国市场,工信部发布的物联网"十二五"规划上,把信息处理技术作为4项关键技术创新工程之一提出来,其中包括了海量数据存储、数据挖掘、图像视频智能分析,这都是大数据的重要组成部分。而另外 3 项关键技术创新...

    浅析大数据与人工智能的发展.docx

    大数据(big data),指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。 大数据包括结构...

    5G工业边缘计算网关,支持边缘计算

    TG452系列网关是一款边缘计算网关,该系列产品可帮助用户快速接入高速互联网,实现安全可靠的数据传输,采用...可扩展大容量内存空间,海量数据存储有助于应用扩展。实现终端数据处理优化,为数据安全提供条件,有效减

Global site tag (gtag.js) - Google Analytics