SequoiaDB 简介
安装部署
数据库实例
分布式引擎
SAC 管控中心
参考手册
常见问题及解答(FAQ)
版本信息
setAttributes - 修改集合的属性
db.collectionspace.collection.setAttributes(<options>)
SdbCollection
该函数用于修改集合的属性。
options ( object,必填 )
通过参数 options 可以修改集合属性:
ReplSize ( number ):写操作需同步的副本数,默认值为 1,表示写操作只需写入主节点
取值如下:
格式:ReplSize: 0
ShardingKey ( object ):分区键,取值为 1 或 -1,表示正向或逆向排序
当集合仅存在于一个数据组中,或者集合没有挂载子集合时,ShardingKey 可以被修改。
格式:ShardingKey: {<字段1>: <1|-1>, [<字段2>: <1|-1>, ...]}
ShardingType ( string ):分区方式,默认值为"hash"
取值如下:
当集合仅存在于一个数据组时,ShardingType 可以被修改。
格式:ShardingType: "range"
Partition ( number ):分区数,默认值为 4096
格式:Partition: 512
AutoSplit ( boolean ):是否开启自动切分功能,默认值为 false,表示不开启自动切分
格式:AutoSplit: true
Note:
创建域和集合时均可指定参数 AutoSplit。如果显式指定集合的 AutoSplit,系统将优先按集合指定的值决定是否开启自动切分。
EnsureShardingIndex ( boolean ):是否根据参数 ShardingKey 指定的字段自动创建名为"$shard"的索引,默认值为 true,表示自动创建
当集合仅存在于一个数据组时,EnsureShardingIndex 可以被修改。
格式:EnsureShardingIndex: false
Compressed ( boolean ):是否开启数据压缩功能,默认值为 true,表示开启数据压缩功能
格式:Compressed: false
CompressionType ( string ):压缩算法类型,默认值为"lzw"
取值如下:
格式:CompressionType: "snappy"
Note:
snappy 压缩和 lzw 压缩的使用场景可参考数据压缩。
StrictDataMode ( boolean ):是否开启严格数据类型模式,默认值为 false,表示不开启
开启严格模式后,如果数据类型为数值,在运算过程中出现溢出则会报错;如果数据类型非数值,则不进行任何操作。
格式:StrictDataMode: true
AutoIncrement ( object ):自增字段的属性
格式:AutoIncrement: {Field: <字段名>, ...}
或 AutoIncrement: [{Field: <字段名1>, ...}, {Field: <字段名2>, ...}, ...]
AutoIndexId ( boolean ):是否根据字段 _id 自动创建名为"$id"的唯一索引,默认值为 true,表示自动创建
格式:AutoIndexId: false
函数执行成功时,无返回值。
函数执行失败时,将抛异常并输出错误信息。
setAttributes()
函数常见异常如下:
错误码 | 错误类型 | 可能发生的原因 | 解决办法 |
---|---|---|---|
-32 | SDB_OPTION_NOT_SUPPORT | 选项暂不支持 | 检查当前集合属性,如果是分区集合不能修改与分区相关的属性 |
当异常抛出时,可以通过 getLastErrMsg() 获取错误信息或通过 getLastError() 获取错误码。更多错误处理可以参考常见错误处理指南。
v2.10 及以上版本
创建一个普通集合,然后将该集合修改为分区集合
> db.sample.createCL("employee") > db.sample.employee.setAttributes({ShardingKey: {a: 1}, ShardingType: "hash"})
创建一个普通集合,然后将该集合修改为分区集合,并且自动切分
> db.sample.createCL("employee") > db.sample.employee.setAttributes({ShardingKey: {a: 1}, ShardingType: "hash", AutoSplit: true})
创建一个普通集合,然后将该集合的压缩算法修改为 snappy
> db.sample.createCL("employee") > db.sample.employee.setAttributes({CompressionType: "snappy"})
创建一个有自增字段的集合,修改其自增起始值
> db.sample.createCL("employee", {AutoIncrement: {Field: "studentID"}}) > db.sample.employee.setAttributes({AutoIncrement: {Field: "studentID", StartValue: 2017140000}})