储存自定义函数
简单例子
db = new Sdb()
创建函数
db.createProcedure( function sum(x,y){return x+y;} )
调用函数
var i = db.eval( "sum(10,15)" )
print(i)
删除函数
db.removeProcedure( "sum" )
编写js复制一个CL
procedure.js
db = new Sdb();
db. createProcedure(
function copyCL(_pcs, _pcl, _lcs, _lcl){
var pcl = db.getCS(_pcs).getCL(_pcl);
var lcl = db.getCS(_lcs).getCL(_lcl);
var i = 0;
var bulkInsertNum = 1024;
var recordArr = [];
var cursor = pcl.find();
while(cursor.next()){
i++;
recordArr.push(cursor.current().toObj());
if(recordArr.length >= bulkInsertNum){
lcl.insert(recordArr);
recordArr = [];
print("insert" + i + "records");
}
}
if(recordArr.length != 0){
lcl.insert(recordArr);
recordArr = [];
print("insert" + i + "records");
}
}
)
运行
bin/sdb -f procedure.js
- shell环境:
db.eval("copyCL('foo','bar','foo1','bar')")
为什么要专门写一个文件?
- 提高代码的复用性
- 在SDB Shell环境中,不支持代码换行,难以编写复杂的存储过程
日志审计
开启日志审计
vi SequoidDB_HOME/conf/local/11810/sdb.conf
在协调节点的conf文件添加一行auditmask=ALL
原理
db = new Sdb()其实就是连接到本地的协调节点
而此时,协调节点的日志就会开始记录
所以,如果你不连接到其他节点去操作数据库的话,没有必要去开启其他节点的日志审计功能
只需要开启协调节点的日志审计功能
即可,其他节点的不必开启