mangos 之 Database模块
1.mangos提供一个Database基类,所有的具体种类的数据库从这个类继承,比如mysql,sqlite等。
2.Database中有几个纯虚接口需要具体数据库类实现,比如Query,PQuery,这两个接口是执行有返回值的
sql语句。Execute,DirectExecute执行不需要返回值的sql语句。
3.Execute和DirectExecute的区别是,如果数据库操作线程没有启动,那么就调用DirectExecute访问数据
库;如果有数据库线程,就调用Execute从队列里面取访问任务进行处理。
4.事务和非事务的sql操作走不通的通道到数据库访问线程。
5.可变参数的相关函数都是在Database中提供的,然后调用上面的虚接口定位到具体的类方法中。
6.还抽象了一个QueryResult类,mysql和sqlite分别继承并实现自己的查询结果类。
7.mangos在获取配置信息的时候,每种值都提供了两套函数,比如GetInt(const char* name,int*value)和 GetIntDefault(const char* name,int value),而调用的时候多用Default版本,自己提供一个默认值,connector也是这样的,看来还是有点道理。
8.执行sql语句的log处理时,每次都现场生成文件名(根据时间),追加打开文件,写文件,然后关闭。我们的处理方式是打开了就一直写,不关闭,知道达到一定大小为止,而且是开专门的线程来写,既然mangos都是每次都要从新打开一次来写,是不是表示这样的开销不会太大?或者只是针对数据库操作的,而数据库操作不会太频繁?
阅读(1411) | 评论(0) | 转发(0) |