集合空间

    • 任何一个集合必须属于且仅属于一个集合空间。
    • 集合空间名最大长度为 127 字节,且需为 UTF-8 编码。
    • 集合空间由若干固定大小的数据页组成。在创建集合空间时,用户可以指定数据页大小。一旦数据页大小被指定后,它将不能被修改。
    • 在一个数据节点中,一个集合空间最多可以访问 128M 个数据页。对应不同数据页大小,集合空间在该数据节点的容量上限为:

    在集群环境下,每个集合空间拥有除名称外的以下属性:

    属性名描述
    数据页大小(PageSize)数据页/索引页大小
    集合空间所属域(Domain)所属域
    Lob 数据页大小(LobPageSize)Lob 数据页大小

    Note:

    关于更多集合空间的属性及属性的取值请参考 Sdb.createCS()

    数据文件结构如图 1 所示:

    数据文件的前 64KB 字节为文件头,其后为 16MB 的 SME 段 ( Space Management Extend )和 4MB 的 MME 段 ( Metadata Management Extend )。20MB+64K 字节是该数据文件的元数据。元数据之后的空间为实际存储数据的存储空间。SME 段用于标示数据文件中已经被占用和未被占用的数据页。该段每一个比特位(bit)代表数据实际存储空间的 1 个数据页。

    比特位为 0 意味着该数据页空闲,为 1 意味着该数据页已被使用。所以一个数据文件最多能使用 16MB * 8, 总共 134,217,728? 个数据页。

    MME 段被切分成 4096 个 1KB 大小的元数据块 ( Meta Block, 简称为:MB )。每个元数据块分别对应一个存放在该数据文件中的集合,所以一个集合空间最多能存放 4096 个集合。数据文件中,元数据之后的空间是实际数据的存储空间。

    当一个集合被 drop 或者被 truncate 后,该集合占用的数据块将被释放为空闲数据页。此时,数据文件的大小并不会缩减,但该集合空间中所有集合都能够自由使用数据文件内部的可用的空闲数据页。

    索引文件

    索引文件结构如图 2 所示:

    SequoiaDB 巨杉数据库索引文件结构图

    与数据文件的结构相比,索引文件存在如下的区别:

    • 没有 MME 段

    索引文件采用 B 树的结构来组织记录的索引。B 树节点中包含着排序后的索引键和每一个索引键对应的记录偏移。一旦获取记录偏移,在使用索引查找数据过程中能够快速在数据文件中定位数据。