starrydb是遵循some object doing something原则开发的数据库,
是封闭的,可编程的,可并发的,分布式的数据库系统。
目前是供单机使用lite版本,之后会开发基于网络的分布式版本。
我的目标是可以开发分布式的大型数据处理系统,
也可以处理单机的复杂数据的系统。
数据和数据的处理在这个数据库内被融合在一体。
starrydb是融合类似erlang的多线程技术,处理的数据,
每个数据对象都有单独的线程处理无需程序员维护。
starrydb带有定时器可以添加自动处理脚本,
实现输出输入数据的自动化调用。
使用数据库需要有lua语言与C++语言基础。
数据库是由节点(node), 对象(object),字段组成。
每个数据库句柄代表一个节点,
节点可以有任意数量的对象,
每个对象可以有任意数量的子对象。
数据库的构造是以节点为顶点展开的对象树结构。
任意对象有且只有一个父对象。
C++语言的接口
node_create()
创建数据库节点并返回句柄
node_get()
获得节点的名字
node_del
删除数据库节点
ob_create
对象的创建输入参数是对象的全名
对象的全名是指包括所有父对象名称的以#分割的名字
这个接口会从节点依据对象名依次创建对象
"this#1#2"
例如这个对象名会创建名字为
"this#1"和"this#1#2"的两个对象
ob_delete
对象删除
ob_query
对象内键值的查询
ob_set
对象内键值的设置
ob_querys
对某个对象下的所有子对象的数据的检索
ob_move
将某个对象从原父对象迁移到目的对象
ob_getevent
获得队列里的消息
ob_setevent
设置消息过滤
ob_delevent
删除事件
ob_do
对某个对象下的所有子对象执行一个脚本
ob_order
对几个对象顺序执行脚本
script_run
创建一个脚本环境运行脚本
下面开始是设置输入参数和获得输出参数的接口
set_number
设置一个数值
set_string
设置一个字符串
ret_type
返回当前参数堆栈顶层参数的类型
ret_remain
返回剩余的数据的长度
ret_number
返回一个数值
ret_valueskip
跳过一个参数
ret_strleagth
如果当前栈内参数是字符型返回长度
ret_string
返回字符串
ret_str
安全的返回字符串
lua的接口
lua环境分为两大类,数据库内和数据库外
数据库外的脚本接口
o.doing
指定数据库内的对象执行一个脚本
o.setevent
设置一个事件
o.getevent
获取一个事件
delevent
删除一个事件
set_number
添加到输入堆栈添一个number类型的数据
starry的接口函数中有不固定类型的数据输入堆栈
starry::set_number(S, 6);
starry::ob_set(S, "this#first", "a");
这里是在输入堆栈添加一个数字6,
ob_set会把堆栈的数据添加到当前节点的first对象的a字段内。
starry数据库支持5种数据
enum data_type { data_nil = 0, data_string, data_wstring, data_number, data_point_map, };data_nil 空数据
set_string
ret_type
ret_remain
ret_number
ret_valueskip
ret_strleagth
ret_string
lua数据库内接口
query_double
set_double
query_int64
set_int64
query_string
set_string
query_int32
set_int32
doing
让指定对象运行一段脚本
new_guid
创建一个新的文字的guid
map_size
map类型的长度
map_key
map类型的从零索引开始的key
map_type
map类型的指定key的类型
create
为当前对象创建一个子对象
delself
删除对象自己,必须是一个空对象
addtime
添加定时器
deltime
删除定时器