表是Oracle数据库中数据组织的基本单元。Oracle支持多种表,从不同的角度可划分为多种类型:
关系型表(Relational tables)和对象型表(Object tables)
关系型表是最常见的表类型。关系型表是一张二维表,其中“关系”是指不同字段值组合在一起构成的关系,以及表与表之间的关系(也就是外键)。
熟悉Java等面向对象语言的同学应该对“对象”这个概念很熟悉。对象型表是指表中的数据支持封装,继承等面向对象特性的那些表。
堆表(heap-organized table)和索引组织的表(index-organized table)
堆表中的每行数据是无序存储的。CREATE TABLE语句默认创建一个heap-organized table。
一个index-organized table中的行数据则按照primary key的值来排序。对于一些应用程序来说,使用index-organized table可以提高磁盘使用效率和性能。
外部表
当Oracle数据库应用程序必须访问非关系型数据(例如那些存储在HDFS或一个NOSQL数据库中的数据)时,外部表就非常有用了。
由于外部表的数据存储在数据库之外,因此数据库需要存储相关的metadata,才能知道如何访问这些数据。另外由于数据存储在Oracle数据库之外,Oracle并不拥有这些数据,因此不能修改或删除外部表中的数据。
压缩表
可以将堆表中的数据以压缩的形式存储,且这对于那些使用数据的应用程序来说是透明的。
表压缩的工作方式是,将在单独的data block中的那些重复数据压缩。一个block中的所有行和列的重复值仅会在block开头存储一次,而在重复值的原本所在位置用一个short reference引用block开头的值。因此当一个block中的重复值越多,则压缩率越高。
Table cluster
一个table cluster由一组表组成,这些表共享列并且将相关的数据存储在相同的data block中。当表是clustered,一个data block可以存储来自多个表的行。
临时表
临时表用于存储那些只需要在a transaction或a session使用的临时的数据。例如我们写一个很长的存储过程,会在sp的前半部分产生一些数据,并在sp的后半部分使用这些数据,且使用完后就不再需要这些数据了。这时就可以使用临时表,保证在a transaction或a session结束后,临时数据会被清理掉。
区块链表Blockchain tables
区块链表是Oracle新引入的,专门用于区块链应用程序的数据。
Oracle数据库中的表包括关系型表、对象型表、堆表、索引组织表、外部表、压缩表、表集群和临时表。关系型表是最常见类型,对象型表支持面向对象特性。堆表数据无序,而索引组织表按主键排序以提升性能。外部表用于访问非关系型数据,压缩表在不影响应用的情况下节省存储空间。表集群将相关数据存储在同一块中,临时表用于短期存储transaction或session中的数据,而区块链表是针对区块链应用设计的。
544

被折叠的 条评论
为什么被折叠?



