Chinaunix首页 | 论坛 | 博客
  • 博客访问: 323085
  • 博文数量: 100
  • 博客积分: 2620
  • 博客等级: 少校
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2009-09-16 02:50
文章分类

全部博文(100)

文章存档

2011年(5)

2010年(12)

2009年(83)

分类:

2009-12-09 00:04:30

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都是每次都要从新打开一次来写,是不是表示这样的开销不会太大?或者只是针对数据库操作的,而数据库操作不会太频繁?
阅读(1376) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~