存储与数据库
存储系统
存储系统是指用于存储和管理数据的硬件设备和软件系统的组合。它提供了持久性的数据存储和读写功能,并支持对数据的访问、保护和管理。存储系统可以是独立的设备,也可以是集成在计算机系统或网络环境中的一部分。
存储系统的主要功能包括:
- 数据持久性:存储系统能够将数据保存在非易失性介质(如硬盘、固态驱动器等)中,以确保数据在计算机断电或重启后仍然可以被访问和恢复。
- 数据访问:存储系统可以按需读取和写入数据,允许应用程序和用户通过适当的接口(如文件系统、数据库接口等)对数据进行读写操作。
- 数据保护:存储系统提供数据的冗余和备份机制,以确保在存储设备故障或数据损坏时能够进行数据恢复,并保护数据的完整性和可用性。
- 数据管理:存储系统提供了对存储数据的管理功能,例如数据的组织、索引、压缩、加密等,以便更好地满足数据的访问和使用需求。
- 存储容量扩展:存储系统能够扩展存储容量,以适应不断增长的数据量需求。这可以通过添加更多的存储设备,或使用分布式存储系统来实现。
常见的存储系统包括磁盘阵列(如 RAID)、网络存储(如存储区域网络 SAN 和网络附加存储 NAS)、对象存储、云存储等。存储系统的选择取决于应用场景的要求,如性能、容量、可靠性、成本等因素的权衡。一个优秀的存储系统能够提供高性能、可靠性、可扩展性和易管理性,从而满足不同应用对数据存储的需求。
将数据从应用程序存储到存储介质通常涉及以下几个步骤:
- 数据写入缓冲区:当应用程序需要将数据存储到存储介质时,首先将数据写入到一个临时的缓冲区。缓冲区可以是内存中的一块空间或者操作系统提供的临时文件。
- 文件系统管理:数据在缓冲区中后,操作系统通过文件系统管理这些数据。文件系统负责将数据组织成文件,并分配存储空间给文件。它还维护了文件的元数据信息,如文件名、大小、权限等。
- 存储设备访问:一旦数据被写入文件系统,操作系统将使用相应的驱动程序和协议与存储介质进行交互。对于硬盘等传统存储介质,操作系统会将数据划分为块并通过磁盘驱动器将这些块写入磁盘。对于固态驱动器(SSD)等新型存储介质,操作系统可能使用不同的接口和命令进行数据写入。
- 数据持久性:一旦数据被写入存储介质,它将保持在存储介质上,即使计算机断电或重启。这是存储介质的一项关键功能,确保数据的持久性和可靠性。
数据库
关系型数据库和非关系型数据库的区别
关系型数据库(Relational Database)和非关系型数据库(Non-Relational Database)是两种常见的数据库类型,它们在数据组织、数据模型、查询语言以及适用场景等方面存在一些区别。
关系型数据库:
- 数据组织:关系型数据库使用表格(表)来组织数据,表由行(记录)和列(字段)组成,每个表都具有固定的结构。
- 数据模型:关系型数据库采用结构化数据模型,通过定义表之间的关系(外键)来建立关联。
- 查询语言:关系型数据库使用结构化查询语言(SQL)进行数据查询和操作。
- 数据一致性和完整性:关系型数据库提供事务支持,能够保证数据的一致性和完整性。
- 强大的查询能力:通过 SQL 查询语言的丰富功能,关系型数据库可以进行复杂的数据查询和分析。
- 数据一致性:关系型数据库注重数据一致性,使用 ACID(原子性、一致性、隔离性和持久性)特性来确保数据的可靠性。
非关系型数据库:
- 数据组织:非关系型数据库使用不同的数据模型(如键值对、文档、列族、图等)来组织数据,没有固定的表结构。
- 数据模型:非关系型数据库采用非结构化或半结构化数据模型,对数据存储灵活且没有固定的关系定义。
- 查询语言:非关系型数据库使用不同的查询语言或接口来操作数据,如MongoDB使用的是基于文档的查询语言。
- 可扩展性和分布式能力:非关系型数据库通常具备较好的可扩展性和分布式能力,适合处理大规模数据和高并发访问。
- 灵活的数据模型:非关系型数据库允许动态地添加新的字段或属性,适应数据模式变化的需求。
- 高性能:由于非关系型数据库不需要复杂的关系查询,因此通常可以获得更高的读写性能。
选择关系型数据库还是非关系型数据库需要根据实际需求进行评估。关系型数据库适用于需要强大的事务支持、复杂查询和数据一致性要求较高的场景,而非关系型数据库适用于大规模数据、高性能、灵活性要求较高的场景。
结构化数据管理
给定一条用户注册数据后,数据库将写入关系型数据库以表形式管理;经典存储将写入文件,自行定义管理结构。从结构化数据管理的角度来看,数据库提供了更高级和全面的功能,包括数据关系管理、查询语言、安全性和高级特性等,使得结构化数据的管理更为方便和可靠。经典存储则较为简单,需要开发人员自行处理数据关系和操作,功能受限。因此,在需要对结构化数据进行复杂管理和查询的场景下,数据库是更为合适的选择。
因此,通过上述特性可以凸显出数据库支持「事务」的优越性。 事务具有:
● A(tomicity),事务内的操作要么全做,要么不做
● C(onsistency),事务执行前后,数据状态是一致的
● I(solation),可以隔离多个并发事务,避免影响
● D(urability),事务一旦提交成功,数据保证持久性
复杂查询能力
如果写入数据之后,想做很复杂的查询怎么办?
比如Example:请查询出名字以xiao开头,且密码提示问题小于10个字的人,并按性别分组统计人数 数据库方法: