SequoiaDB命令行创建主子表

创建主子表

var test = db.createCS("test")
db.test.createCL("main", {IsMainCL:true, ShardingKey:{time, 1} }, ShardingType: range) // 主子表只能以范围切分

db.test.createCL("bar1")
db.test.createCL("bar2")

// 挂载集合,每次一个
db.test.main.attachCL("test.bar1", {LowBound: {time : 20190101 }, UpBound:{time : 20190401} } )
db.test.main.attachCL("test.bar2", {LowBound: {time : 20190401 }, UpBound:{time : 20190701} } )
// 也可以跨集合空间去挂载
db.test.main.attachCL("foo.bar", {LowBound: {time : 20190701 }, UpBound:{time : 20191001} } )

// 但是呢,插入记录的时候,不可以插入不在切分范围内的数据,如:
db.test.main.insert({name: a1, phone:"12312312312"}) // 没有time字段,会自动补全为null,但是不在范围内
db.test.main.insert({name: a1, time: null }) // 有time字段,但值为null,也无法插入

主子表的二维划分

db.createCS("test")

db.test.createCL("main", {IsMainCL:true, ShardingKey:{time, 1} }, ShardingType: range) // 主表只能以范围切分

db.test.createCL("bar1", ShardingType:"Hash", ShardingKey:{id, 1}) // 子表以Hash划分
db.test.createCL("bar2" ShardingType:"Hash", ShardingKey:{id, 1})

// 挂载集合,每次一个
db.test.main.attachCL("test.bar1", {LowBound: {time : 20190101 }, UpBound:{time : 20190401} } )
db.test.main.attachCL("test.bar2", {LowBound: {time : 20190401 }, UpBound:{time : 20190701} } )

猜你喜欢

转载自blog.csdn.net/weixin_43837588/article/details/88059958
今日推荐