C++ 哈希表企业级项目运用---淘宝分布式文件系统

简介: C++ 哈希表企业级项目运用---淘宝分布式文件系统

本篇文章是小编自己的见解 要是有什么不准确的地方欢饮评论区留言 讨论

项目背景: 根据淘宝统计 淘宝上面的卖家已经达到近1000万的虚拟店 有着上十亿的产品  每个产品大概具有大量的文字和图片(平均15k) 数据所占的空间在1PB以上

1PB是什么概念:

P1B=1024TB=1024*1024*1024MB

如果使用1T的磁盘来保存  则需要1024*1024*1024的磁盘来保存 这是不现实的 而且磁盘读写I/O的速度远远小于计算机从内存 高速缓存 读取数据的速度  当然也可以选择专门做存储的公司EMC

本篇主要是讲述C++ 哈希表企业级项目运用

下图是相关的关系:

所以 在这里建议使用C++ 数据结构 哈希表(散列表的使用 来优化其分布式存储)

大家在这里先了解一下淘宝分布式文件系统的文件存储模式

1.淘宝分布式系统文件是以block(块)文件储存的  每一块的文件都是由块索引 主块 扩展块构成

2.淘宝分布式系统文件是临时数据 需要变成永久性数据  淘宝分布式系统的文件存储使用了自研的数据库系统,称为Tair(Taobao Distributed Key-Value Storage System)。Tair是一种高性能、高可用性的分布式存储系统,旨在满足淘宝海量数据的存储和访问需求。它支持多副本机制以提供数据冗余和容错性,并且具备快速读写、高并发和水平扩展等特点,适用于大规模互联网应用场景。

3.此段 采用的是哈希表的存储优化

下图介绍

1.块信息 保存了每个主块的信息 这里主要指的是图片信息

2.哈希桶大小 :记录的是文件经过哈希核心算法所求得的索引 在这种大型项目中 建议P值就设为文件的数目

3.起始的偏移量的本质是文件指针(指向的是空文件的第一个空间) 在C++里面对应的是这三个大类

  1. ifstream:用于从文件中读取数据(输入操作)。
  2. ofstream:用于向文件中写入数据(输出操作)。
  3. fstream:既可以进行读取操作,也可以进行写入操作。

主块里面存储的是图片(非结构化数据)的空间  每一个索引值都代表了一个键值 每一个价值代表着对应的实际值  这样能大大加快查找的速度和访问效率 只需要将块索引放在计算机内存中 文件储存在淘宝的服务器上面

总结;

C++哈希表的应用主要是用于哈希表对数据的访问 可以极大的优化查询的效率 同时也是数据库优化的一个部分(但是更多的还是使用红黑树 )    同时将B树 B+树 B-tree树 红黑树进行对比使用   选出最好的优化方案

本篇文章的理解是建立在哈希表理解熟练的基础上才能理解 大家学习编程要一步一个脚印 在追求质量的同时追求速度  小编今天的内容就到这里了

对了 在这里小编想推荐一篇课程:https://xxetb.xetslk.com/s/2PjJ3T

相关文章
|
2月前
|
编译器 C++ 开发者
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
【Conan 入门教程 】使用Conan 2.X和Autotools高效构建C/C++项目
78 1
|
2月前
|
算法 测试技术 数据处理
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
【C/C++ 面试技巧】如何在简单的项目里突出自己的价值?
50 1
|
2月前
|
算法 测试技术 开发工具
编写高效技术文档的艺术:C++项目实践指南
编写高效技术文档的艺术:C++项目实践指南
79 0
|
2月前
|
设计模式 架构师 前端开发
JavaEE企业级分布式高级架构师课程
本课程主要面向1-5年及以上工作经验的Java工程师,大纲由IT界知名大牛 — 廖雪峰老师亲自打造,由来自一线大型互联网公司架构师、技术总监授课,内容涵盖深入spring5设计模式/高级web MVC开发/高级数据库设计与开发/高级响应式web开发/分布式架构设计等主流核心技术。
22 1
JavaEE企业级分布式高级架构师课程
|
2月前
|
开发工具 C语言 C++
CMake构建大型C/C++项目:跨平台设计与高级应用(二)
CMake构建大型C/C++项目:跨平台设计与高级应用
44 0
|
19天前
|
存储 算法 Linux
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
【实战项目】网络编程:在Linux环境下基于opencv和socket的人脸识别系统--C++实现
42 6
|
2天前
|
C++
C++入门项目——通讯管理系统
C++入门项目——通讯管理系统
|
6天前
|
设计模式 存储 算法
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
C++从入门到精通:3.7阅读和理解开源项目——在实际项目中应用C++编程技巧和规范
|
7天前
|
存储 Serverless C++
【C++高阶(五)】哈希思想--哈希表&哈希桶
【C++高阶(五)】哈希思想--哈希表&哈希桶
|
28天前
C/C++test两步完成CMake项目静态分析
通过将C/C++test集成到CMake项目中,并根据项目的需要进行配置,可以在两步内完成CMake项目的静态分析。这样可以帮助开发人员及时发现并修复潜在的代码问题,提高代码质量和可靠性。
8 0