SequoiaDB的Lob和索引

Lob

Large Object的缩写,大对象(LOB)功能旨在突破 SequoiaDB 的单条记录最大长度为 16MB 的限制,为用户写入和读取更大型记录提供便利。LOB 记录的大小目前不受限制。

每一个 LOB 记录拥有一个 OID,通过指定集合及 OID 可以访问一条 LOB 记录。在非分区集合及哈希分区集合中均可使用 LOB 功能。集合间不共享 LOB 记录。当一个集合被删除时,其拥有的 LOB 记录自动删除。

LOB 记录的存储格式:
LOB的记录格式
每个 LOB 记录包含若干个分片。分片所占空间大小均为 LobPageSize(创建集合空间时指定,默认为 256 KB,请参考 Sdb.createCS())。在哈希分区中,LOB 记录的每一个分片会被按照 OID 加分片序号分散存储在相应的分区组中。其哈希空间与所属集合的哈希空间相同。

目前 LOB 的存储格式为二进制类型。

命令行

db = new Sdb()

上传一个本地文件到集合中
db.foo.bar.putLob('/opt/sequoiaDB/bin/sdb')

查看集合中的Lob,可以查看其OID、createTime
db.foo.bar.listLobs()

根据唯一的OID在集合中下载一个Lob到本地中,文件名定义为myLob
db.foo.bar.getLob('123fdg121fdsa', '/opt/myLob')

在Shell中把一个OID对应的Lob删除
db.foo.bar.deleteLob('123fdg121fdsa')

索引

概念
在 SequoiaDB 数据库中,索引是一种特殊的数据对象。索引本身不做为保存用户数据的容器,而是作为一种特殊的元数据,提高数据访问的效率。

SequoiaDB中,索引使用B-Tree结构。
在这里插入图片描述
命令行

db = new Sdb()

给集合bar创建一个索引,索引字段为key升序+key2降序,唯一索引:false,强制唯一索引:false
db.foo.bar.createIndex('indexName', {key:1, key2:-1}, [UniqueIndex?], [EnforcedUniqueIndex?] ) 

给集合bar创建一个索引,索引字段为key,设置为唯一索引,并强制为唯一索引
db.foo.bar.createIndex('indexName', {key:1, key2:-1}, true, true )
此时给集合中插入两条没有索引字段,但数据一致的记录
db.foo.bar.insert( {name:'a1', phone:'12312312312'} )
db.foo.bar.insert( {name:'a1', phone:'12312312312'} )
第二条插入语句会报错,因为开启强制唯一索引后,插入的数据若没有指定的索引字段,会自动补全为null
即:
db.foo.bar.insert( {name:'a1', phone:'12312312312', key:null, key2:null} )

猜你喜欢

转载自blog.csdn.net/weixin_43837588/article/details/88072087
LOB