SequoiaDB命令行的储存过程、日志审计

储存自定义函数

简单例子

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()其实就是连接到本地的协调节点
而此时,协调节点的日志就会开始记录
所以,如果你不连接到其他节点去操作数据库的话,没有必要去开启其他节点的日志审计功能
只需要开启协调节点的日志审计功能即可,其他节点的不必开启

猜你喜欢

转载自blog.csdn.net/weixin_43837588/article/details/88185973