This SO answer概述了MySQL如何将其数据库组织成文件,但没有描述文件本身的结构。
我想知道,在物理层面上,关系数据库管理系统如何将它们的记录存储在文件中。文件的结构大致是什么,列/值在哪里(如果它只是一个 CSV),以及它是如何遍历的。
This SO answer概述了MySQL如何将其数据库组织成文件,但没有描述文件本身的结构。
我想知道,在物理层面上,关系数据库管理系统如何将它们的记录存储在文件中。文件的结构大致是什么,列/值在哪里(如果它只是一个 CSV),以及它是如何遍历的。
我认为现在应该开始指出,在关系数据库中——按照EF Codd 博士的说法——信息是通过一种且只有一种结构来表示的,即关系,它通常被描述为一个表。
关系模型专门处理逻辑抽象级别的各个方面,因此表(抽象)是数据库逻辑级别的一部分(它易于进行逻辑操作,例如投影、连接、限制等) ,因此它完全独立于所使用的数据库管理系统(简称 DBMS)所使用的物理存储。
既然如此,由于关系模型必须只处理逻辑层面的方面,它提供了物理数据独立性,这设置了 DBMS(例如,SQL 平台,如 IBM DB2、Microsoft SQL Server、PostgreSQL 等——尽管非常强大,严格来说,它们是半关系型的,即它们不完全符合关系框架的规定—) 可以自由地 (a) 以开发人员/供应商认为方便的任何方式在物理抽象级别存储 (b) 数据通过逻辑级表表示。
重要的是要注意,物理级存储可以依次划分为不同的抽象子级。
因此,物理安排取决于所考虑的特定 DBMS,因此它们可能因平台而异。
详细介绍了不同SQL平台使用的物理结构示例
如果您有兴趣,您可能会发现这个关于计算机化信息系统的一些不同抽象级别的问题的答案。