1. 块存储、文件存储、对象存储这三者的本质差别是什么
一、概念及区别
针对不同的应用场景,选择的分布式存储方案也会不同,因此有了对象存储、块存储、文件系统存储。这三者的主要区别在于它们的存储接口:
1. 对象存储:
也就是通常意义的键值存储,其接口就是简单的GET,PUT,DEL和其他扩展,
2. 块存储:
这种接口通常以QEMU Driver或者Kernel Mole的方式存在,这种接口需要实现Linux的BlockDevice的接口或者QEMU提供的BlockDriver接口,如Sheepdog,AWS的EBS,青云的云硬盘和阿里云的盘古系统,还有Ceph的RBD(RBD是Ceph面向块存储的接口)
3. 文件存储:
通常意义是支持POSIX接口,它跟传统的文件系统如Ext4是一个类型的,但区别在于分布式存储提供了并行化的能力,如Ceph的CephFS(CephFS是Ceph面向文件存储的接口),但是有时候又会把GFS,HDFS这种非POSIX接口的类文件存储接口归入此类。
二、IO特点
按照这三种接口和其应用场景,很容易了解这三种类型的IO特点,括号里代表了它在非分布式情况下的对应:1. 对象存储(键值数据库):
接口简单,一个对象我们可以看成一个文件,只能全写全读,通常以大文件为主,要求足够的IO带宽。
2. 块存储(硬盘):
它的IO特点与传统的硬盘是一致的,一个硬盘应该是能面向通用需求的,即能应付大文件读写,也能处理好小文件读写。但是硬盘的特点是容量大,热点明显。因此块存储主要可以应付热点问题。另外,块存储要求的延迟是最低的。
3. 文件存储(文件系统):
支持文件存储的接口的系统设计跟传统本地文件系统如Ext4这种的特点和难点是一致的,它比块存储具有更丰富的接口,需要考虑目录、文件属性等支持,实现一个支持并行化的文件存储应该是最困难的。但像HDFS、GFS这种自己定义标准的系统,可以通过根据实现来定义接口,会容易一点。
因此,这三种接口分别以非分布式情况下的键值数据库、硬盘和文件系统的IO特点来对应即可。至于冷热、快慢、大小文件而言更接近于业务。但是因为存储系统是通用化实现,通常来说,需要尽量满足各种需求,而接口定义已经一定意义上就砍去了一些需求,如对象存储会以冷存储更多,大文件为主。
2. ORACLE中,数据块的概念(越详细越好)
数据块是数据库中最小的数据存储单位,用户再对数据库执行输入输出操作时就是从数据块读取的。在oracle11g中,数据块分为头部信息区和存储区,头部信息区不存放数据,但是存放有关存储区中表数据、索引数据的的相关信息起到引导的作用则存储区真正存放数据记录。
3. Oracle中数据库、数据文件、表、表空间、用户之间是什么关系(转)
问题:我是数据库的初学者,望大家不吝赐教!! 在Oracle中数据库、数据文件、表、表空间、用户之间是什么关系啊?比如我知道表和数据文件隶属于表空间;表空间与用户是多对多的关系。 希望大家能写的通俗具体一点,呵呵呵 我在逻辑上有点混乱了!答案:呵呵,问的好,这涉及到数据库的物理结构和逻辑结构。 首先,你需要明白的一点是:数据库的物理结构是由数据库的操作系统文件所决定,每一个Oracle数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。 每一个Oracle数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引等)的数据物理地存储在数据库的数据文件中。数据文件通常为*.dbf格式,例如:userCIMS.dbf。数据文件有下列特征:①、一个数据文件仅与一个数据库联系;②、一旦建立,数据文件只增不减;③、一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。 其次,我们再来叙述一下Oracle的逻辑结构:Oracle的逻辑结构包括表空间(tablespace),段(segment),数据块(data block)以及模式对象(schema object)。 Oracle数据库在逻辑上是由多个表空间组成的,表空间在物理上包含一个或多个数据文件。而数据文件大小是块大小的整数倍;表空间中存储的对象叫段,比如数据段,索引段和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中的最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。 ⑴、表空间(tablespace) 表空间是数据库中最大的逻辑单位,每一个表空间由一个或多个数据文件组成,一个数据文件只能与一个表空间相联系。每一个数据库都有一个SYSTEM表空间,该表空间是在数据库创建或数据库安装时自动创建的,用于存储系统的数据字典表,程序系统单元,过程函数,包和触发器等,也可用于存储用户数据表,索引对象。表空间具有在线(online)和离线(offline)属性,可以将除SYSTME以外的其他任何表空间置为离线。 ⑵、段(segment) 数据库的段可以分为四类:数据段、索引段、回退段和临时段。 ⑶、区 区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储与段中,它由连续的数据块组成。 ⑷、数据块 数据块是数据库中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的Oracle版本DB_BLOCK_SIZE的默认值是不同的。 ⑸、模式对象 模式对象是一种应用,包括:表、聚簇、视图、索引序列生成器、同义词、哈希、程序单元、数据库链等。 最后,在来说一下Oracle的用户、表空间和数据文件的关系: 一个用户可以使用一个或多个表空间,一个表空间也可以供多个用户使用。用户和表空间没有隶属关系,表空间是一个用来管理数据存储的逻辑概念,表空间只是和数据文件发生关系,数据文件是物理的,一个表空间可以包含多个数据文件,而一个数据文件只能隶属一个表空间。 总结一下:解释数据库、表空间、数据文件、表、数据的最好办法就是想象一个装满东西的柜子。数据库其实就是柜子,柜中的抽屉是表空间,抽屉中的文件夹是数据文件,文件夹中的纸是表,写在纸上的信息就是数据。
4. 什么是数据块啊
数据块是一组或按顺序连续排列在一起的几组记录,是主存储器与输入、输出设备或外存储器之间进行传输的一个数据单位。是数据的物理记录,与数据的逻辑记录(逻辑上有联系,在存储器上占有一组邻接单元的数据单位)之间的对应关系有3种方式:①一个块即为一个记录;②一个块包含若干个逻辑记录;③一个逻辑记录占有几个块。数据块的大小可以是固定的或是可变的,块与块之间有间隙。设计数据块大小,受到多方面因素的影响,包括输入、输出效率,存储空间代价以及计算机应用特点等。
在 text 、ntext 和 image 数据中,数据块是应用程序和 SQL Server 2000 实例之间一次传输的数据单元。该术语还适用于这些数据类型的存储单元。在磁带备份文件中,数据块是物理 I/O 的单元。
5. oracle数据库中表、段、区、块是什么意思
oracle的逻辑结构包括表空间(tablespace),段(segment),区(extent),数据块(data block)
oracle数据库在逻辑上是由多个表间组成的,表空间中存储的对象叫段,比如数据段,索引段,和回退段。段由区组成,区是磁盘分配的最小单位。段的增大是通过增加区的个数来实现的。每个区的大小是数据块大小的整数倍,区的大小可以不相同;数据块是数据库中最小的I/O单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。块的大小由参数DB_BLOCK_SIZE设置,其值应设置为操作系统块大小的整数倍。
表空间
表空间是Oracle数据库最大的逻辑结构,一个Oracle数据库在逻辑上由多个表空间组成,一个表空间只隶属于一个数据库。Oracle中有一个称为SYSTEM的表空间,这个表空间是在创建或安装数据库时自动创建的。主要用于存储系统的数据字典,过程,函数,触发器等;也可以存储用户的表,索引等。一个表空间可以有多数据文件,但是一个数据文件只能属于一个表空间。
一个表空间就是一片磁盘区域,他由一个或者多个磁盘文件组成,一个表空间可以容纳许多表、索引或者簇等。每个表空间有一个预制的磁盘区域称为初始区间(initial extent)用完这个区间后再用下一个,直到用完表空间,这时候需要对表空间进行扩展,增加数据文件或者扩大已经存在的数据文件
段
Oracle中的段可以分成4种类型:数据段、索引段、回滚段、临时段。
数据段用来存储用户的数据,每个表都有一个对应的回滚段,其名称和数据表的名字相同。索引段用来存储系统、用户的索引信息。回滚段用来存储用户数据修改前的值,回退段与事务是一对多的关系,一个事务只能使用一个回退段,而一个回退段可存放一个或多个事务的回退数据。临时段用于order by语句的排序以及一些汇总。
区
区是磁盘空间分配的最小单位。磁盘按区划分,每次至少分配一个区。区存储于段中,它由连续的数据块组成。区的分配过程中,每次至分配5个区。如果所剩的空闲空间不够5个区,就会出现错误:ORA-0。可以通过字典dba_tablespaces查询表空间中区的信息。可以通过字典user_tables查询段中区的信息。可以通过字典user_extents查询区的分配状况。我们可以通过以下SQL语句分别查询表空间、段、区中区的分配信息
SQL>select * from dba_tablespaces;
SQL>select table_name, tablespace_name, min_extents, max_extents from user_tables;
SQL>select * from user_extents;
数据块
数据块是数据中中最小的数据组织单位与管理单位,是数据文件磁盘存储空间单位,也是数据库I/O 的最小单位,数据块大小由DB_BLOCK_SIZE参数决定,不同的oracle版本DB_BLOCK_SIZE的默认值是不同的。
6. openGauss数据库的主要逻辑对象有哪些
看官网文档,如下图描述还是比较清晰的:
基本概念
1、数据库(Database)
数据库是存储在一起的相关数据的集合,这些数据可以被访问,管理以及更新。
数据库用于管理各类数据对象,与其他数据库隔离。创建数据对象时可以指定对应的表空间,如果不指定相应的表空间,相关的对象会默认保存在PG_DEFAULT空间中。数据库管理的对象可分布在多个表空间上。
2、数据块(Block)
数据块是数据库管理的基本单位,默认大小为8KB。
3、行(ROW)
一行(元组,或记录)是一组相关的数据,例如一条用户订阅的数据。
4、列(Cloumn)
每一列被当作是一个字段。每个字段中的值代表一种类型的数据。例如,一个表可能有3个字段:姓名、城市和国家。这个表就会有3列,一列代表姓名,一列代表城市,一列代表国家。表中的每一行包含3个字段的内容,姓名字段包含姓名,城市字段包含城市,国家字段包含国家。
5、表(Table)
表是由行与列组合成的,是数据库中用来存储数据的对象,是整个数据库系统的基础。
每张表只能属于一个数据库,也只能对应到一个表空间。每张表对应的数据文件必须在同一个表空间中。
6、数据文件(Datafile Segment)
通常每张表只对应一个数据文件。如果某张表的数据大于1GB,则会分为多个数据文件存储。
7、表空间(Tablespace)
在openGauss中,表空间是一个目录,在物理数据和逻辑数据间提供了抽象的一层,为所有的数据库对象分配存储空间,里面存储的是它所包含的数据库的各种物理文件。由于表空间是一个目录,仅是起到了物理隔离的作用,其管理功能依赖于文件系统。
表空间可以存在多个,创建好之后,创建数据库对象时可以指定该对象所属的表空间。
8、模式(schema)
数据库对象集,包括逻辑结构,例如表、视图、序、存储过程、同义名、索引及数据库链接。
9、事务(Transaction)
数据库管理系统执行过程中的一个逻辑单位,由一个有限的数据库操作序列构成。在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序。
同时,事务也是恢复和并发控制的基本单位,必须具备ACID特性,即:
原子性(Atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
一致性(Consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(Isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(Durability):持久性也称永久性(Permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。