概述

集合空间(Collection Space)是数据库中存放集合的物理对象。

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

Note:

集合空间的数据页大小由创建集合空间时指定的属性 PageSize 决定。默认情况下,PageSize 的值为 64K。

属性

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

Note:

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

存储单元

数据文件和索引文件组成 SequoiaDB 巨杉数据库的存储单元 ( Storage Unit, 简称为:SU )。每一个集合空间在其相关的数据节点中都对应一个数据文件和一个索引文件。它们的名字分别为 <集合空间名>.1.data 和 <集合空间名>.1.idx

数据文件

数据文件结构如图 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 个集合。数据文件中,元数据之后的空间是实际数据的存储空间。

图 1 列举了两个集合使用存储空间的情况。集合由一个或者多个数据块通过双向链表连接而成。每个集合在 MME 段的元数据中都包含一个起始数据块和结束数据块的指针。集合在扩展大小过程会从空闲的数据页中使用若干连续的数据页构建新的数据块,然后把该数据块连接到双向链表的末端。在扩展数据块过程,当空闲的数据页不够时,若数据文件还没达到文件大小上限,数据文件会扩展 128MB 字节的空闲数据页,以确保扩展数据块能够正常进行。

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

索引文件

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

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

  • 没有 MME 段
  • 一个索引块只有一个数据页

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

相关阅读

SequoiaDB 巨杉数据库-集合

SequoiaDB 巨杉数据库-集合空间相关推荐

  1. SequoiaDB 巨杉数据库-MongoDB协议兼容命令

    Note: 用户在查询时不建议使用 batchSize,如 db.cl.find().batchSize( 100 ).尤其在 mongo-java-v3.1 及以下.mongo-shell-v3.0 ...

  2. SequoiaDB 巨杉数据库-MongoDB协议兼容

    MongoDB 是一款开源的非关系型数据库,也是目前最流行的非关系型数据库之一. SequoiaDB 巨杉数据库兼容 MongoDB 的语法和协议,用户可以使用 MongoDB 的驱动访问 Sequo ...

  3. SequoiaDB 巨杉数据库-时间序列服务

    时间序列协议(STP,Serial Time Protocol)是 SequoiaDB 巨杉数据库内部逻辑时间同步的协议: STP 维护逻辑时间,提供逻辑时钟服务 在 SequoiaDB 中,逻辑时间 ...

  4. SequoiaDB巨杉数据库S3实例安装部署

    本章介绍 SequoiaS3 的安装.配置与启动. 安装 SequoiaS3 集成于 SequoiaDB 巨杉数据库的安装包中.SequoiaDB 安装完成后,用户可到安装路径下的 tools/seq ...

  5. SequoiaDB 巨杉数据库SDK驱动开发

    SequoiaDB 巨杉数据库为应用提供通过SDK驱动进行数据库操作和集群操作的接口.目前支持SDK驱动开发的语言如下: C 驱动 C++ 驱动 CSharp 驱动 JAVA 驱动 PHP 驱动 Py ...

  6. SequoiaDB 巨杉数据库

    如今,大型企业的应用平台正在向微服务架构进行转型.在微服务架构下,应用程序和数据库等底层平台的关系将会被重构,新一代分布式数据库必须支持弹性扩张.资源隔离.多租户.可配置一致性.多模式(支持各类 SQ ...

  7. 国产数据库哪家强?除了阿里华为,还有湖仓一体的SequoiaDB巨杉数据库!

    在过去的30多年,国产数据库一直都是跟随在国外数据库之后,Oracle.MySQL.SQLServer.PostgreSQL及MongoDB等国外厂商一直都霸占着最受欢迎数据库的榜单,但经过10年打磨 ...

  8. SequoiaDB巨杉数据库SequoiaFS挂载目录

    本章将介绍通过 SequoiaFS 在 SequoiaDB 巨杉数据库挂载目录的方法. Linux环境下挂载目录 挂载目录前应确保系统已经安装 SequoiaDB,并已部署 SequoiaDB 集群. ...

  9. SequoiaDB 巨杉数据库分区原理数据库分区

    在 SequoiaDB 巨杉数据库中,通过将集合数据拆分成若干小的数据集进行管理,从而达到并行计算和减小数据访问量的目的.根据管理方式的不同,可以分为以下两种分区类型: 数据库分区:用于描述数据在集合 ...

最新文章

  1. Camelyon Challenge: 癌症细胞区域检测竞赛
  2. mybatis mapper xml文件的导入方式和查询方式
  3. PHP语法(3.)环境变量
  4. C# Settings使用小结
  5. 使用二进制xtrabackup遇到的问题
  6. 升级xcode5.1 iOS 6.0后以前的横屏项目 变为了竖屏
  7. sqoop 命令在crontab 不能自定执行
  8. mysqltimestamp默认值
  9. C++面试题-指针-指针与指针的引用
  10. java包含某个字符串_JavaScript判断一个字符串是否包含指定子字符串的方法
  11. [并发]线程池关闭的问题
  12. Android开发学习(3)Hello Android!
  13. 解决iOS 12.4 (16G77), which may not be supported by this version of Xcode
  14. ffmpeg批量转换ts为mp4
  15. CircularProgressIndicator
  16. kali安装中文拼音输入法2
  17. Day 4 R基础概念——向量、矩阵
  18. html与word字体大小转换,字体大小不一样,当html转换为Word使用Microsoft.Office.Interop.Word...
  19. 【Web前端大作业实例网页代码】html+css新闻资讯网页带dw模板和登陆注册(9页)
  20. matlab棋盘格标定角点,相机标定(Camera calibration)Matlab——棋盘格标定原理,流程...

热门文章

  1. 免费网络游戏的三大利润途径与三个暴利来源
  2. 历年成人学士学位计算机考试题,成人学位英语考试历年真题练习
  3. Is the server running on host 192.168.121.128 and accepting TCP/IP connections on port 5432?
  4. Python 交集,并集,差集
  5. 快速提高编程能力---一年时间可以改变很多事
  6. jquery html5视频播放插件在iframe中无法全屏解决办法
  7. 【Excel技巧】Excel技巧之逆透视表的使用,办公神器,加班终结者
  8. DDGScreenShot--iOS 图片裁剪,圆角设置,你还用cornerRadius,还有更高级的方法
  9. 企业自动运行系统——产品策略
  10. ORACLE 千万条的数据优化