主流存储产品介绍 | 青训营笔记

2023年 8月 15日 32.3k 0

一、单机存储

1.1 单机存储简介

单机存储指的是将数据存储在单个计算机或设备上的存储方式。这种存储方式通常用于小规模的个人计算机或单用户环境中,数据直接存储在本地磁盘或其他存储介质上。

  • 存储介质:单机存储可以使用各种存储介质,如硬盘驱动器(HDD)、固态驱动器(SSD)、光盘、USB闪存驱动器等。不同的存储介质具有不同的特点,如容量、读写速度和可靠性等。
  • 数据管理:通过文件系统来管理数据。操作系统提供了文件系统接口,用于创建、读取、写入和删除文件。用户可以自由组织和管理自己的数据文件。
  • 容量限制:单机存储的容量通常受到硬件设备的限制。虽然现代存储介质容量越来越大,但仍存在存储空间有限的情况。因此,在处理大量数据或需要长期保存数据的情况下,可能需要考虑扩展存储容量或采用其他存储解决方案。
  • 数据安全性:由于单机存储将数据存储在本地,因此需要考虑数据的安全性和备份策略。定期进行数据备份有助于防止数据丢失或损坏,例如在硬件故障、文件系统损坏或意外删除时能够恢复数据。
  • 可移植性:单机存储通常具有良好的可移植性,用户可以将存储设备连接到不同的计算机或设备上,并在需要时访问数据。这种可移植性使得数据共享和数据迁移变得更加方便。
  • 1.2 单机存储简介——本地文件系统

    单机存储的本地文件系统是指用于管理和组织存储在计算机硬盘或其他存储介质上的文件和目录的软件系统。Linux有经典的名言:一切皆文件。文件系统的管理单元:文件。文件系统接口:文件系统繁多,如Ext2/3/4,
    sysfs, rootfs等,但都遵循VFS的统一抽象接口。

    Linux文件系统的两大数据结构:Index Node 和 Directory Entry。
    Index Node记录文件元数据,如id、 大小、权限、磁盘位置等。inode是一个文件的唯一 标识, 会被存储到磁盘上。并且inode的总数在格式化文件系统时就固定了。
    Directory Entry记录文件名、inode指针,层级关系(parent)等。dentry是内存结构,与inode的关 系是N:1(hardlink的实现)

    1.3 单机存储简介——key—value存储

    单机存储的key-value存储是一种简单而常见的数据存储模型,它将数据以键值对的形式进行存储和检索。每个键(key)都是唯一的,并且与一个特定的值(value)相关联。

  • 存储结构:key-value存储通常使用哈希表(hash table)或平衡树(balanced tree)等数据结构来实现。哈希表提供了快速的查找和插入操作,适用于大规模数据集。平衡树(如B树或红黑树)则对数据进行有序组织,适用于范围查询等操作。
  • 灵活性:key-value存储非常灵活,可以存储各种类型的数据,包括字符串、整数、浮点数、布尔值等。它不需要事先定义数据表结构,因此可以动态地添加、修改和删除键值对。
  • 高性能:key-value存储通常具有良好的性能,能够快速地进行数据插入、更新和查找操作。由于直接使用键进行查找,避免了复杂的关系型数据库连接和查询操作,因此在某些场景下比传统数据库更高效。
  • 扩展性:对于大规模的数据集,key-value存储可以通过分区和分布式架构实现水平扩展。通过将数据分布在多个节点上,可以提高存储容量和吞吐量。
  • 适用场景:key-value存储适用于许多场景,如缓存(Cache)、会话管理、用户配置、日志存储等。它在需要快速读写和查询操作的场景下非常有用。
  • 一些常见的单机key-value存储系统包括Redis、Memcached和LevelDB等。这些系统提供了对键值对的高效存储和检索,并且支持丰富的功能,如事务、持久化、分布式复制等。它们可以被广泛应用于各种应用程序和服务中,以提高性能和可伸缩性。

    常见数据结构: LSM-Tree, 某种程度上牺牲读性能,追求写入性能
    image.png

    二、分布式存储

    2.1 分布式存储简介

    分布式存储=在单机存储基础、上实现了分布式协议,涉及大量网络交互。分布式存储是在单机存储的基础上实现了分布式协议,并涉及大量的网络交互。与单机存储相比,分布式存储将数据存储在多台计算机或服务器上,通过网络连接这些计算机,使其共同组成一个存储集群。

    常见的分布式存储系统包括Hadoop分布式文件系统(HDFS),Amazon S3,Ceph和GlusterFS等。这些系统采用了各种分布式协议和算法来管理数据的存储、复制、分片和访问。分布式存储可以应用于大规模的数据存储和处理场景,如云存储、大数据分析和分布式数据库。

    image.png

    2.2 分布式存储一HDFS

    HDFS的研发时代背景:专用的高级硬件很贵,同时数据存量很大,要求超高吞吐。因此Hadoop分布式文件系统(简称HDFS)作为一个高容错性、高可靠性的分布式文件系统,旨在存储大规模数据集并提供快速的数据访问。HDFS将数据分布存储在一个集群中的多台计算机上,通过网络连接这些计算机形成一个逻辑上的整体。

    HDFS核心特点有以下几点:
    ● 支持海量数据存储;
    ● 高容错性;
    ● 弱POSIX语义;
    ● 使用普通x86服务器,性价比高;

    image.png
    HDFS广泛应用于大数据领域,可用于数据仓库、数据分析、日志存储和备份等场景。开发者可以使用Hadoop生态系统中的工具和API来访问和管理HDFS中的数据,如Hadoop MapReduce、Apache Hive和Apache Spark等。

    2.3 分布式存储一Ceph

    Ceph是开源分布式存储系统里的「万金油」。它作为一个开源的分布式存储系统,旨在提供高性能、高可靠性和可扩展性的存储解决方案。Ceph采用了一种分布式对象存储架构,可以轻松地扩展到大规模的存储集群,并支持多种数据存储接口。
    以下是Ceph的一些关键特点:

  • 对象存储:Ceph将数据以对象的形式进行存储,并使用全局唯一的对象标识符(Object ID)进行访问。这种方式使得Ceph可以灵活地管理和操作存储在集群中的各种数据类型,例如文件、块设备和虚拟机镜像等。
  • image.png

  • 分布式架构:Ceph将每个对象切分为多个数据块,并将这些块以冗余的方式存储在集群的不同节点上。这样可以实现数据的并行处理和高可用性,同时还可以通过数据分片和负载均衡来提高系统的性能。
  • 自我修复:Ceph具有自动故障检测和修复的能力。当集群中的节点或存储设备发生故障时,系统可以自动检测并从其他节点中恢复数据。这种自我修复机制可以确保数据的可靠性和持久性。
  • 可扩展性:Ceph可以很方便地进行横向扩展,通过添加新的存储节点来增加存储容量和吞吐量。它使用一种称为CRUSH的算法来实现数据的分布和负载均衡,使得数据在集群中的存储分布更加平衡。
  • 多协议支持:Ceph支持多种存储接口和协议,包括对象存储(RADOS)、块设备(RBD)和文件系统(CephFS)。这些接口可以满足不同应用场景下的存储需求,例如云计算、虚拟化和容器化等。
  • 弹性存储池:Ceph采用了存储池(Pools)的概念,可以将存储资源按照逻辑上的业务需求进行划分和管理。每个存储池可以配置不同的副本数、故障域和存储策略,以满足不同数据的可靠性和性能要求。
  • 三、单机数据库

    3.1 单机数据库简介

    单机数据库=单个计算机节点上的数据库系统。运行事务在单机内执行,也可能通过网络交互实现分布式事务。并且单机数据库是一种基于单台计算机的数据库系统,用于管理和存储数据。与分布式数据库不同,单机数据库只在一台计算机上运行,适用于小型应用或个人使用。

    以下是一些常见的单机数据库:

  • SQLite:SQLite是一个轻量级的嵌入式数据库引擎,它以库的形式存在,可以直接集成到应用程序中。SQLite具有简单、快速、零配置的特点,适合嵌入式设备和移动应用等场景。
  • MySQL:MySQL是一个流行的关系型数据库管理系统(RDBMS),它支持多种操作系统,并提供了丰富的功能和高性能。MySQL具有良好的可靠性和稳定性,并广泛应用于各种Web应用和中小型企业系统。
  • PostgreSQL:PostgreSQL是一个强大的开源关系型数据库管理系统,具有高度的可扩展性和灵活性。它支持丰富的特性,包括复杂查询、事务处理和触发器等,适用于要求较高数据完整性和安全性的应用。
  • 这些单机数据库系统都提供了结构化数据的管理和查询功能,通过SQL(Structured Query Language)进行数据操作和检索。它们可以通过本地连接或网络连接来访问,并且具有各自的管理工具和开发接口,方便用户进行数据库的管理和应用程序的开发。

    需要注意的是,单机数据库的容量和性能受限于单台计算机的资源,无法像分布式数据库那样实现横向扩展。因此,在需要处理大量数据或高并发访问的场景中,可能需要考虑使用分布式数据库系统来满足需求。
    image.png

    3.2 单机数据库——关系型数据库

    关系型数据库(Relational Database)是一种基于关系模型的数据库系统。它使用表格(也称为关系)来存储和组织数据,其中每个表格包含了多行和列,表示实体(Entity)和属性(Attribute)之间的关系。关系型数据库使用结构化查询语言(SQL)进行数据操作。

    关系型数据库的通用组件包括:

    Query Engine——负责解析query,生成查询计划;

    Txn Manager——负责事务并发管理;

    Lock Manager——负责锁相关的策略;

    Storage Engine——负责组织内存/磁盘数据结构;

    Replication——负责主备同步。

    image.png

    一些常见的关系型数据库系统包括:

  • MySQL:MySQL是一个流行的开源关系型数据库管理系统,广泛应用于Web应用和中小型企业系统。
  • PostgreSQL:PostgreSQL是一个强大的开源关系型数据库管理系统,具有高度的可扩展性和灵活性。
  • Oracle Database:Oracle Database是一个功能全面的商业关系型数据库管理系统,适用于大型企业和复杂的数据环境。
  • 在关系型数据库中,对于商业产品Oracle称王,对于开源产品MySQL & PostgreSQL称霸。

    image.png
    在关系型数据库中,存储部分的蓝色树部分每个节点为Page,对于每个节点有记录操作日志Redo Log,redo log (重做日志) 是InnoDB存储引擎独有的,它让MySQL拥有了崩溃恢复能力。比如MySQL实例挂了或宕机了,重启时,InnoDB 存储弓|擎会使用redo 1og 恢复数据,保证数据的持久性与完整性。并且也会记录临时数据Temp data,最后将Redo Log和临时数据传入磁盘中。

    3.3单机数据库——非关系型数据库

    非关系型数据库(NoSQL,Not Only SQL)是一种与传统的关系型数据库不同的数据库系统。它通过放宽对数据模型的要求和提供更高的可扩展性,适用于处理大规模、分布式和非结构化数据的场景。对于如今的非关系型数据库来说,有着MongoDB、Redis、Elasticsearch三足鼎立的局面。

    关系型数据库一般直接使用SQL交互,而非关系型数据库交互方式各不相同。非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活。不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”

    MongoDB

    image.png

    ●面向「文档」存储;
    ●文档可序列化成JSON/BSON,支持嵌套;
    ●存在「collection」 ,collection= 文档的集合;
    ●存储和构建索引能力依赖wiredTiger引擎;
    ●4.0后开始支持事务(多文档、跨分片多文档等);
    ●常用client/SDK交互,可通过插件转 译支持弱SQL。

    Elasticsearch

    image.png

    ●面向「文档」存储;
    ●文档可序列化成JSON,支持嵌套;
    ●存在「 index」,index=文档的集合;
    ●存储和构建索引能力依赖Lucene引擎;
    ●实现了大量搜索数据结构&算法;
    ●支持RESTFUL API,也支持弱SQL交互;

    Redis

    image.png

    ●数据结构丰富(hash表、 set、 zset、 list);
    ●C语言实现,超高性能;
    ●主要基于内存,但支持AOF/RDB持久化;
    ●常用redis- cli/多语言SDK交互。

    相关文章

    服务器端口转发,带你了解服务器端口转发
    服务器开放端口,服务器开放端口的步骤
    产品推荐:7月受欢迎AI容器镜像来了,有Qwen系列大模型镜像
    如何使用 WinGet 下载 Microsoft Store 应用
    百度搜索:蓝易云 – 熟悉ubuntu apt-get命令详解
    百度搜索:蓝易云 – 域名解析成功但ping不通解决方案

    发布评论