精华内容
下载资源
问答
  • PostgreSQL 数据存储结构

    千次阅读 2018-07-16 17:59:23
    PostgreSQL 数据存储结构分为:逻辑储存和物理存储 逻辑存储结构是KingbaseES内部的组织和管理数据的方式。 物理存储结构是操作系统中组织和管理数据的方式。 逻辑存储结构适用于不同的操作系统和硬件平台。 逻辑...

    PostgreSQL 数据存储结构

    数据存储结构分为:逻辑储存和物理存储

    • 逻辑存储结构是内部的组织和管理数据的方式。
    • 物理存储结构是操作系统中组织和管理数据的方式。
    • 逻辑存储结构适用于不同的操作系统和硬件平台。
    • 逻辑存储结构和物理存储结构是分别进行管理。
    逻辑结构包括
    • 数据库集群-Database cluster
    • 数据库-Database
    • 表空间-tablespace
    • 数据库在逻辑上分成多个存储单元,称作表空间。
    • 表空间用作把逻辑上相关的结构放在一起。
    • 数据库逻辑上是由一个或多个表空间组成。
    • 新创建的数据库默认创建下面的表空间:
    • Catalog表空间 存放系统表信息
    • System表空间 存放用户数据
    • Temp表空间
    • 模式-Schema
    • 自动创建的系统模式
    • PG_CATALOG
    • PG_LARGEOBJECT
    • PG_TOAST
    • PG_PARTITION
    • 默认的用户模式PUBLIC。
    • 段-segment
    • 区-extent
    • 块-block
    1. 数据库对象-Database object
    • 模式对象
      表、索引、序列、大对象、视图、函数、存储过程、触发器、包 … …
    • 非模式对象
      用户、数据库
    1. 数据表-Table
    2. 索引-Index
    3. 序列-Sequence
    4. 视图-View
    逻辑与物理存储关系
    1. 逻辑关系存在表空间;
    2. 表空间存在对应的数据文件中;
    存储系统包括三个部分
    1. 内存中:buffer,MemoryContext;
    2. 数据文件,临时文件;
    3. 日志文件,日志缓存。
    新创建的数据库对应的数据文件的名称
    • Catalog表空间 – databasename.dbf
    • System表空间 – Udatabasename.dbf
    • Temp表空间-- Tdatabasename.dbf
    • 前面加 “U” 前缀代表用户数据表空间,用于保存用户表的数据。
    • 不带 U 代表 是系统表的表空间,用于保存系统表的数据。
    • U 前缀的数据文件代表的表空间名为PG。
    • 不带U 的数据文件代表的表空间为 CATALOG。
    数据库文件、表空间、其他文件之间的关系图

    image.png

    上图说明:

    • 每一个数据库具有一个或多个数据文件,用户存放数据库的所有数据。
    • 数据库的数据文件有以下特征:

    一个数据库文件只能与一个数据库的一个表空间相连。
    一个表空间可以由多个数据文件组成。

    • 数据库对象与文件关系:
    • 数据库对象放到表空间中。
    • 表空间有多个数据文件。
    • 表空间中有多个数据库对象。
    • 数据库对象逻辑上是存储在表空间中,物理上是存储在与表空间相关联的数据文件中。

    数据库包含的文件种类:

    1. 数据库文件:data/DB
      数据库对象,如:数据库、表,索引,序列等对象。
    2. 控制文件:data/CTL
      用来记录数据库集群的状态信息,如:版本信息、集群所管理的各种文件信息、检查点信息、事务状态信息等。
    3. 日志文件:data/REDOLOG
      记录数据修改操作的日志,用于系统发生故障时进行数据恢复。
    4. 临时文件:data/DB
      存放数据库进行计算的过程中,生成的各种中间对象,如排序运算的外存归并单元。
    5. 参数文件:data目录下
    数据文件结构

    image.png

    Page(页)

    image.png

    将数据文件中的空间从逻辑上划分成一个个页面(数据块)。页面是数据库I/O的基本单位,即只能整页读写数据文件, 页面的大小默认是8K。
    页面可以分成两种:

    1. 数据页面:数据页面是用来存储用户数据的。
    2. 控制页面:控制页面用来管理这些数据页面。

    数据库共享缓存中的空间划分也是按页为基本单位, 一个页的大小与数据文件中页的大小一致, 这样便于整页读取数据文件,并放入到数据库Buffer中, 从Buffer写入数据文件也同理,保证了缓存与数据文件结构和内容上的一致性。

    页面的寻址

    • 数据页面是由一个Uint32的变量寻址。前 11 位表示 fileid, 后 21 位表示文件内偏移。
    Block(块)

    概念上基本等同于Page, 但Block更多用于说明DMS中对数据文件中Page的描述。

    • 例如: 对文件的读写的操作, 文件读写位置的定位, 数据文件空间回收等操作, 单位均是以块进行。
    • 数据块的大小在系统初始化时指定,默认是8K,可以取值4K,8K,16K,32K。
    Extent(区)

    把数据文件中8个连续的Page构成的空间称为一个Extent。Extent是数据库进行数据文件空间分配/释放的基本单位。每个表、索引、序列对象都是由若干个区组成。数据文件被创建后,除自动保留部分区作为控制区外,其他区全部处于未分配状态。表、索引、序列对象的所有数据都存放在Extent中,当向这些Extent中插入数据时,若该Extent的所有页面都已占满,系统就会自动在所属表空间的数据文件中寻找一个尚未分配的区,并将其状态修改为数据区。

    控制页面
    • 用于空间管理的控制页面:PFS/GAM/IAM。
    • 用于增量备份的控制页面:DCM。
    • 判断可见性的控制页面:VM。
    • 预留的控制页面:BCM/SGAM。
    PFS

    Page Free Space,简称PFS页.

    • 功能:用于记录本数据文件中页面的空间使用情况。对文件中的每个页面,PFS中都有一个“字节”与之对应,该字节记录了该页面的状态。
    • 每个页面可能有三种状态 :

    PFS_FREE:该页面已被物理分配,但尚未分配给任何数据对象或控制页;
    PFS_DATA:该对象被分配作为数据页使用;
    PFS_CTRL:该对象被分配作为控制页使用;

    • PFS页前64bytes被预留为页头, 剩下81024-64=8128一共覆盖81288K=64MB空间.
      故PFS页每隔8128个页面出现一次, 系统初始化把第一个PFS页放在数据文件的第二个页面位置,即:第1号数据页面, 由此可知,第N个PFS页的位置在8128*N+1.
      image.png
    GAM

    Global Allocation Map,简称GAM页。

    • 功能:记录所在数据文件的Extent的分配情况,GAM页中除GAM头外,剩下空间的每一位(bit)均对应一个Extent的分配情况。若某bit位为1,则表明该bit位所关联的Extent已被分配出去,反之未被分配。
    • 若一个GAM页面大小为8K,则除GAM头(64 bytes)外,一个GAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。此外,GAM页每隔881288个页面出现一个,系统要求第一个GAM页出现在文件的第3个页面位置(即:第2个索引位置),由此得知,第N个GAM页的出现位置是: 881288*N+2
      image.png
    IAM

    Index Allocation Map,简称IAM页。

    • 功能:每个IAM页只隶属于一个数据库对象(例如:表),但一个数据库对象可包含多个IAM页,由此可见IAM页与数据库对象的关系是1对1,而数据库对象与IAM页的关系是1对多.
    • IAM的结构与GAM页类似,除IAM头外,剩下空间的每一位(bit)均对应着一个与IAM相关的Extent。若某bit位为1,则表明该bit位所关联的Extent已被分配给该IAM,反之未被分配。若一个IAM页面大小为8K,则除IAM头(64 bytes)外,一个IAM页面所能覆盖的文件范围是: (81024-64)8(88K),约4GB空间。但与GAM也不同之处在于:IAM的出现位置不固定,只在在创建数据库对象的时候才分配。
      image.png
    存储空间大小
    • 数据页大小:默认为8K (可支持4K, 8K, 16K, 32K)。
    • 最大存储容量:单个数据库(集群)最大容量为32TB。
    • 数据文件的最大尺寸:单个数据文件最大尺寸16GB。
    • 数据文件最大个数:单个数据库(集群)最多支持2048个数据文件。

    实战操作

    • 查询所有数据和临时文件信息
      SELECT * FROM PG_ALLDATAFILES;
    • 查询当前数据库的数据和临时文件信息
      SELECT * FROM PG_DATAFILES;
    • 查询数据和临时文件的空闲空间信息
      SELECT * FROM PG_FREESPACES;

    在这里插入图片描述

    展开全文
  • 数据存储结构 mongoDB

    2013-01-25 15:44:04
    数据存储结构。 1、MySQL的数据存储结构 MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。 MySQL如果使用...
    数据存储结构。


    1、MySQL的数据存储结构


    MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。


    MySQL如果使用MyISAM存储引擎,数据库文件类型就包括.frm、.MYD、.MYI


    MySQL如果使用InnoDB存储引擎,数据库文件类型就包括.frm、ibdata1、.ibd


    (1)、数据库文件:


    .frm文件:存储数据表的框架结构,MySQL数据库文件名与表名相同,每个表对应一个同名frm文件,与操作系统和存储引擎无关,即不管MySQL运行在何种操作系统上,使用何种存储引擎,都有这个文件。除了必有的.frm文件,根据MySQL所使用的存储引擎的不同(MySQL常用的两个存储引擎是MyISAM和InnoDB),存储引擎会创建各自不同的数据库文件。


    (2)、MyISAM数据库表文件:


    .MYD文件:即MY Data,表数据文件
    .MYI文件:即MY Index,索引文件
    .log文件:日志文件
    (3)、InnoDB采用表空间:


    ibdata1、ibdata2:系统表空间MySQL数据库文件,存储InnoDB系统信息和用户数据库表数据和索引,被所有表共用;


    .ibd文件:单表表空间文件,每个表使用一个表空间文件(file per table),用于存放用户数据库表数据和索引;


    日志文件:ib_logfile1、ib_logfile2。


    2、MongoDB的数据存储结构


    MongoDB对国内用户来说比较新, 它就像是一个黑盒子,但是如果对于它内部的数据存储了解多一些的话,那么将会很快的理解和驾驭MongoDB,让它发挥它更大的作用。


    MongoDB的默认数据目录是/data/db,它负责存储所有的MongoDB的数据文件。在MongoDB内部,每个数据库都包含一个.ns文件和一些数据文件,而且这些数据文件会随着数据量的增加而变得越来越多。所以如果系统中有一个叫做foo的数据库,那么构成foo这个数据库的文件就会由foo.ns,foo.0,foo.1,foo.2 等等组成,具体如下:


    [root@localhost db]# ll /data/db/  
    总计 196844  
    -rw------- 1 root root 16777216 04-15 16:33 admin.0  
    -rw------- 1 root root 33554432 04-15 16:33 admin.1  
    -rw------- 1 root root 16777216 04-15 16:33 admin.ns  
    -rw------- 1 root root 16777216 04-21 17:30 foo.0  
    -rw------- 1 root root 33554432 04-21 17:30 foo.1  
    -rw------- 1 root root 67108864 04-21 17:30 foo.2  
    -rw------- 1 root root 16777216 04-21 17:30 foo.ns  
    -rwxr-xr-x 1 root root 6 04-21 17:16 mongod.lock  
    -rw------- 1 root root 16777216 04-15 16:30 test.0  
    -rw------- 1 root root 33554432 04-15 16:30 test.1  
    -rw------- 1 root root 16777216 04-15 16:30 test.ns  
    drwxr-xr-x 2 root root 4096 04-21 17:30 _tmp  
    [root@localhost db]# 
    MongoDB内部有预分配表空间的机制,每个预分配的文件都用0进行填充,由于有了这个机制, MongoDB始终保持额外的空间和空余的数据文件,从而有效避免了由于数据暴增而带来的磁盘压力过大的问题。


    由于表中数据量的增加,数据文件每新分配一次,它的大小都会是上一个数据文件大小的2倍,每个数据文件最大2G。这样的机制有利于防止较小的数据库浪费过多的磁盘空间,同时又能保证较大的数据库有相应的预留空间使用。


    数据库的每张表都对应一个命名空间,每个索引也有对应的命名空间。这些命名空间的元数据都集中在*.ns文件中。


    在下图中,foo这个数据库包含3个文件用于存储表和索引数据,foo.2文件属于预分配的空文件。foo.0和foo.1这两个数据文件被分为了相应的盘区对应不同的名字空间。


    上图显示了命名空间和盘区的关系

    每个命名空间可以包含多个不同的盘区,这些盘区并不是连续的。与数据文件的增长相同,每一个命名空间对应的盘区大小的也是随着分配的次数不断增长的。这样做的目的是为了平衡命名空间浪费的空间与保持某一个命名空间中数据的连续性。上图中还有一个需要注意的命名空间:$freelist,这个命名空间用于记录不再使用的盘区(被删除的Collection或索引)。每当命名空间需要分配新的盘区的时候,都会先查看$freelist是否有大小合适的盘区可以使用。

    展开全文
  • 线性表的物理结构包括顺序存储结构和链式存储结构。 线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。   2、描述顺序存储结构有什么属性? (1)存储空间的起始位置:数组data...

    1、线性表的2种物理结构是什么?

    线性表的物理结构包括顺序存储结构和链式存储结构。

    线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

     

    2、描述顺序存储结构有什么属性?

    1)存储空间的起始位置:数组data,它的存储位置就是存储空间的存储位置。

    2)线性表的最大存储容量:数组长度MaxSize

    3)线性表的当前长度:length

     

    3、数据长度与线性表长度有什么区别?

    1)数组的长度是存放线性表的存储空间的长度,存储分配后这个量是一般是不变的。

    2)线性表的长度是线性表中数据元素的个数,随着线性表插人和删除操作的进行,这个量是变化的。

    3)在任意时刻,线性表的长度应该小于等于数组的长度。

     

    4、线性表的顺序存储结构有什么优缺点?

    (1)优点:无须为表示表中元素之间的逻辑关系而增加额外的存储空间可以快速地存取表中任一位置的元素;

    (2)插入和删除操作需要移动大量元素当线性表长度变仕较大时,难以确定有储空间的容量造成存储空间的碎片。

     

    5、顺序存储结构如何进行插入操作?

    1)如果插入位置不合理,抛出异常;

    2)如果线性表长度大于等于数组长度,则抛出异常或动态增加容量;

    3)从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;

    4)将要插入元素填入位置处;

    5)表长加1。

     

    6、顺序存储结构如何进行删除操作?

    1)如果删除位置不合理,抛出异常;

    2)取出删除元素;

    3)从删除元素位置开始遍历到最后一个元素位置,分别将它们都向前移动一

    个位置;

    (3)表长减1

     

    7、通过对时间复杂度的推导,可以说明什么?

    说明线性表的顺序存储结构,在存、读数据时,不管是哪个位置,时间复杂度都是O[1],而插入或删除时,时间复杂度都是O[n]。这就说明,线性表的顺序存储结构比较适合元素个数不太变化,而更多是存取数据的应用。

     

     

    8、地址是什么?地址是如何计算的?

    存储器中的每个存储单元都有自己的编号,这个编号称为地址。

    C语言中的数组是从0开始第一个下标的,于是线性表的第i个元素是要存储在数组下标为i-1的位置,即数据元素的序号和存放它的数组下标之间存在对应关系。如下图


     

     

     

    9、线性表表现出什么特征?

    1)集合中必存在唯一的一个“第一元素”;

    2)集合中必存在唯一的一个 “最后元素” ;

    3)除最后一个元素之外,均有 唯一的后继(后件);

    4)除第一个元素之外,均有 唯一的前驱(前件)。

     

    10、如何用数学语言定义线性表?

    如果用数学语言来进行定义,可如下:

    若将线性表记为(a1,…,ai-1,ai,ai+1,…an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。

    线性表元素的个数n(n>=0)定义为线性表的长度,当n=0时,称为空表。

       

     


    展开全文
  • 逻辑结构:数据的逻辑结构是对数据之间关系的描述,与存储结构无关,同一种逻辑结构可以有多多种存储结构。 逻辑结构主要分为两大类:线性存储结构和非线性存储结构 线性存储结构数据元素有序集合,数据结构之间...

    逻辑结构

    逻辑结构:数据的逻辑结构是对数据之间关系的描述,与存储结构无关,同一种逻辑结构可以有多多种存储结构。
    逻辑结构主要分为两大类:线性存储结构和非线性存储结构
    线性存储结构是数据元素有序集合,数据结构之间存在“一对一”的关系
    非线性存储结构是数据结构之间存在“一对多”得关系。列如图形结构、网状结构、树状结构等。
    有序表和无序表是逻辑上有序无序,是逻辑结构
    栈。队列也是逻辑结构

    存储结构

    存储结构也称物理结构:是数据逻辑结构在计算机中的表示(映像)。包括数据元素的表示和关系的表示。
    数据元素之间的表示方法分为顺序映像和非顺序映像
    常用的存储结构:顺序存储、链式存储、索引存储、散列存储。
    顺序表、哈希表、单链表都是存储结构
    散列是一种算法。

    线索树是链式存储结构上的基础上对树进行线索
    双向链表是线性表以链式存储结构存储
    循环队列是建立在顺序存储结构上的
    栈是逻辑结构,顺序栈和链栈是存储结构

    顺序表和链表是线性表的存储结构,所以是存储结构不是逻辑结构,
    链表又分为:单链表、双链表、循环单链表、循环双链表、静态链表。

    栈和队列是特殊的线性表,线性表的存储结构为:顺序表和链表。对应的栈为顺序栈和链栈;队为顺序队和链队

    展开全文
  • 百度百科:数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据存储结构数据运算结构。结合今天在复习过程中新的理解,主要总结一下逻辑结构和存储结构。 什么是...
  • MongoDB之数据存储结构

    2014-02-21 16:50:32
    1、MySQL的数据存储结构 MySQL的每个数据库都对应存放在一个与数据库同名的文件夹中,MySQL数据库文件包括MySQL所建数据库文件和MySQL所用存储引擎创建的数据库文件。 MySQL如果使用MyISAM存储引擎,数据库...
  • 这里面包含了redis最基本的数据类型:String,字符串类型是redis中最基本的类型,它能存储任何形式的字符串,包括二进制数据(JSON,Image...)。 大家有没有思考过redis是通过何种数据结构存储数据的呢?今天来...
  • 摘要 主要介绍 Cassandra 中数据存储格式,包括在内存中的数据和磁盘中数据。Cassandra 的写的性能表现非常好,为什么写的性能这么好?和它的数据结构有没有关系,以及和它的写的机制又有多大的关系。同时也将分析...
  • 数据存储结构数据的逻辑结构在计算机中的实现形式,也称为物理结构。 它包括数据元素的表示和关系的表示。 数据元素之间的关系在计算机中有顺序存储和链式存储两种不同的表示方法。由
  • 作者:许令波, Java 工程师, 淘宝网简介: 这部分主要介绍 Cassandra 中数据存储格式,包括在内存中的数据和磁盘中数据。Cassandra 的写的性能表现非常好,为什么写的性能这么好?和它的数据结构有没有关系,以及...
  • 2.线性表的顺序存储结构与链式存储结构(包括单(向)链表、循环链表和双向链表)的构造原理; 3.在以上两种存储结构的基础上对线性表实施的基本操作,包括顺序表的插入与删除、链表的建立、插入与删除、查找等操作...
  • 对GIS中所涉及的各要素进行抽象,并给出其存储结构,在此基础上提出了整体GIS空间数据与属性数据存储结构包括逻辑存储结构和物理存储结构。采用层次模型和关系模型相结合的记录式文件系统来对空间数据和属性数据...
  • 先来看看磁盘上的数据文件中的数据页的物理存储结构,因为后续研究索引的物理存储结构以及使用原理的时候,都是跟数据页的物理存储结构是有很大关联的。 数据库最终所有的数据包括我们建的各种表以及表里的数据)...
  • 定义:数据元素间抽象化的相互关系,与数据存储无关,独立于计算机,是由集体问题抽像出来的数学模型 类型: 1. 集合 一个或多个确定元素所构成的整体 特点:同属于一个集合,无其它关系 2.线性结构 特点:节点间...
  • 数据结构大致包含以下几种存储结构: 线性表,还可细分为顺序表、链表、栈和队列; 树结构,包括普通树,二叉树,线索二叉树等; 图存储结构; 线性表 线性表结构存储的数据往往是可以依次排列的,就像小朋友手拉手...
  • 本节主要讨论树的各种存储结构方法,包括相应的结点数据类型,并对相关的方法进行了简单的讨论。最好要结合视频一起使用。
  • 还记得数据结构这个经典的分类图吧: 今天主要关注一下线性表。 什么是线性表 线性表的划分是从数据的逻辑结构上进行的。线性指的是在数据的逻辑结构上是线性的。即在数据元素的非空有限集中 ...
  • 结点:结点就是数据元素的映像,包括数据域和指针域两个部分。 线性链表(单链表):当结点只有一个指针域时,就叫做线性链表和单链表。 链表的存取都是以头指针开始的,头指针指向第一个结点。 链表分两种:有头...
  • Redis存储结构数据类型

    千次阅读 2019-09-06 09:55:39
    存储结构: Redis的全称是remote dictionary server(远程字典服务器),它以字典结构存储数据(key-value),并允许其他应用通过TCP协议读写字典中的内容。 数据结构如下: 数据类型: 1、字符类型 String ...
  • 目录项:包括文件名和inode节点号。Inode:又称文件索引节点,包含文件的基础信息以及数据块的指针。数据块:包含文件的具体内容。 先说inode 理解inode,要从文件储存说起。文件储存在硬盘上,硬盘的最小存储...
  • 存储结构 前面的内容我们介绍了树和二叉树的一些基础概念,树是数据结构中的重中之重,而二叉树又是树结构中的重点。 一直以来,包括我上学的年代,对树和二叉树的掌握都是模棱两可,希望能通过这篇文章可以给各位讲...
  • 如何把本地数据库中的数据包括结构存储过程,触发器移动到服务器上
  • 本篇章主要介绍图,包括图的定义、相关术语、性质及存储结构,并用Python代码实现。
  • 由于图的任意两个顶点之间都可能存在联系,因此无法以数据元素在存储区中的物理位置来表示元素之间的关系,即图没有顺序存储结构,但我们可以用二维数组(矩阵)来表示元素之间的关系——邻接矩阵。除此之外还有链式...
  • 3.2 云存储关键技术及分布式数据存储的概念 关键技术 把一个大问题分解成小问题 分布式数据存储技术 主从结构(Master/Slave) Master:提供服务的接口 Slave:存储 Master节点接收用户的请求,包括增、...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 14,411
精华内容 5,764
关键字:

数据存储结构包括