概念
大对象LOB (Large Object) 的功能是为了突破 SequoiaDB 巨杉数据库的单条记录最大长度为 16MB 的限制,为用户写入和读取更大型记录提供便利。对于文档、图片、音频和视频等非结构化的数据,用户可以使用 LOB 存储。LOB 存放在集合中,每一个 LOB 都需要一个 OID 来唯一标示。LOB 的内容只存放在一个集合中,当集合被删除时,其拥有的 LOB 将自动删除。
存放 LOB 的集合应该满足如下要求:
- 当集合是普通集合,集合只存在某一个数据组中。此时,LOB 的最大容量为集合能使用的最大文件空间。
- 当集合是哈希分区集合,LOB 对该哈希分区集合的 ShardingKey 没有要求。一般情况下,用户在创建哈希分区集合来存放 LOB 时,可以使用 "_id" 键作为 ShardingKey。当集合为哈希分区集合时,集合存在一个或者多个数据组中。在这种情况下,LOB 最大的容量由哈希分区集合使用的数据组的数据决定。
存储结构
LOB 以集合为单位进行存储,因此它保持集合空间和集合的逻辑结构。在磁盘的数据存储中,对应的集合空间会增加 2 个文件:
[CollectionSpace].1.lobm
[CollectionSpace].1.lobd
LOB 以集合为单位进行存储