开源数据库 - mysql - 组织结构(与oracle的区别)
组织形式区别
mysql(Schema -> Table -> Column -> Row)
- Schema(方案):
- Scheme是关于数据库和表的布局及特性的信息。
- 它可以用来描述数据库中特定的表以及整个数据库和其中表的信息,如表的一些特性、数据如何在表中存储、数据如何分解、各部分信息如何命名等。
- 一个MySQL服务器可以拥有多个Schema(方案),每个Scheme下可以定义多个Table(表)。
- Table(表):
- 表是某种特定类型数据的结构化清单。
- 它由行和列组成,用于存储具有相同属性的数据。
- 在MySQL中,每个表都有一个唯一的名称,并存储在特定的Scheme下。
- Column(列):
- 列是表中的一个字段,用于存储特定类型的数据。
- 每个列都有相应的数据类型,这限制了该列中可以存储的数据种类。
- Row(行):
- 行是表中的一个记录,用于存储一组相关的数据。
- 每行数据都包含与表结构相匹配的多个列的值。
因此,更完整的MySQL数据组织层次结构应该是Schema -> Table -> Column -> Row。在这个层次结构中,Scheme定义了数据库的结构和特性,Table是存储数据的容器,Column定义了数据的类型和结构,而Row则是实际存储的数据记录。
mysql中(innodb作为引擎)可以通过启用InnoDB的innodb_file_per_table
参数将每一个table放在单独的一张表中
oracle(表空间(Tablespace)-> 段(Segment)-> 扩展区(Extent)-> 数据块(Data Block)-> 行(Row))
在Oracle数据库中,数据的组织形式与MySQL有所不同,但同样具有层次结构。Oracle数据库的组织形式通常可以理解为:表空间(Tablespace)-> 段(Segment)-> 扩展区(Extent)-> 数据块(Data Block)-> 行(Row)。以下是这一层次结构的详细解释:
- 表空间(Tablespace):
- 表空间是Oracle数据库中的最大逻辑划分区域,用于存放数据库对象,如表、索引、回滚段等。
- 它将相关的逻辑结构(如段、扩展区等)组合在一起,并映射到物理存储结构中的数据文件上。
- 一个表空间可以由一个或多个数据文件组成,而一个数据文件只能属于一个表空间。
- 段(Segment):
- 段是由一组相关的数据块组成的逻辑存储结构,用于存储特定的数据库对象,如表、索引或簇等。
- 每个段都包含一个或多个扩展区,用于存储数据。
- 在Oracle中,每当创建一个具有独立段的数据对象时,都会为该对象创建一个段。
- 扩展区(Extent):
- 扩展区是由一组连续的Oracle数据块构成的存储结构,用于为段分配存储空间。
- 一个或多个数据块组成一个扩展区,而一个或多个扩展区再组成一个段。
- 在Oracle数据库中,分配存储空间是以扩展区为单位进行的。
- 数据块(Data Block):
- 数据块是Oracle数据库中最小的逻辑存储单位,也是执行数据库输入/输出操作的最小存储单位。
- 它包含了表数据、索引数据和簇数据等,并且具有固定的结构,包括块头、表目录、行目录、空余空间和行数据等部分。
- 数据块的大小可以在创建数据库时指定,通常为2KB、4KB、8KB等。
- 行(Row):
- 行是数据块中的一个记录,用于存储一组相关的数据。
- 每行数据都包含与表结构相匹配的多个列的值。
- 在Oracle中,行是数据的最小存储单位,用于表示数据库中的一个实体记录。
总的来说,Oracle数据库通过这种层次结构来组织和管理数据,使得数据的存储、检索和操作变得更加高效和灵活。每个层次都有其特定的功能和作用,共同构成了Oracle数据库的完整存储体系。
两者对比就可以看出mysql的组织结构相比于oracle要简单很多