带你认识存储 & 数据库 | 青训营笔记
存储 & 数据库简介
存储系统是指用于存储数据和文件的计算机系统,它可以提供数据的备份、恢复、共享和访问等功能。存储系统通常包括硬件和软件两个方面,其中硬件包括磁盘阵列、存储器、磁盘控制器、网络设备等,而软件包括操作系统、数据备份软件、数据恢复软件、数据存储管理软件等。
数据库是指一种组织和管理数据的系统,它允许用户创建、访问和维护数据。数据库通常包括数据表、字段、索引、存储过程和触发器等元素,其中数据表是数据库的核心元素,它包含了各种数据记录。
主流存储产品剖析
单机存储
单机存储是单个计算机节点上的存储软件系统,一般不涉及网络交互分布式存储。
Linux经典哲学:一切皆文件
- 文件系统的管理单元:文件
- 文件系统接口:文件系统繁多,如Ext2/3/4,sysfs,rootfs等,但都遵循VFS的统一抽象接口
- Linux文件系统的两大数据结构:Index Node & Directory Entry
key-value存储
- 常见使用方式:put(k,v)&get(k)
- 常见数据结构:LSM-Tree,某种程度上栖牲读性能,追求写入性能
- 拳头产品:RocksDB
分布式数据库
HDFS
- HDFS堪称大数据时代的基石
- 时代背景:专用的高级硬件很贵,同时数据存量很大,要求超高吞吐
Ceph
Ceph:开源分布式存储系统里的万金油
单机关系型数据库
关系型数据库是一种用来存储结构化数据的数据库系统。它使用表格来存储数据,每个表格包含行和列,每行中的数据以列的形式存储。关系型数据库的核心概念是关系,关系是由行和列组成的,每对行之间的关系称为一个关系。
单机非关系型数据库
相比于关系型数据库,非关系型数据库更加灵活和开放,允许对数据进行更为简洁和自由的存储和访问。非关系型数据库通常用于存储非结构化数据,如文档型数据、键值存储、图型数据和分布式数据等。
- 关系型数据库一般直接使用SQL交互,而非关系型数据库交互方式各不相同
- 非关系型数据库的数据结构千奇百怪,没有关系约束后,schema相对灵活
- 不管是否关系型数据库,大家都在尝试支持SQL(子集)和“事务”
新技术演进
目前主要的探索方向:软件架构变更、AI增强、新硬件革命
个人思考
绝大部分的计算机软件,都离不开数据存储,也就是离不开数据库,数据库可以说是重中之重。我现在正在学习MySQL,对MySQL的索引、MVCC等内容有了一定的了解,不得不说,数据库真的是一个非常复杂的软件系统。同时我们作为程序员,不能只做到会用,而是要做到知道一定的原理,这样可以让我们编写的SQL语句达到尽可能好的性能。