<分区>
我目前正在开发一些基于服务器/客户端的应用程序。
该应用程序是多线程的,具有插件支持(通过 dlopen
,...)并且应该与多个数据库一起工作。
现在我正在寻找一些开始设计 DBI-ABC 的提示。首先,我想到了一个像这样的简单界面:
typedef struct {
unsigned int userid;
std::string username;
std::string fullname;
unsigned int usermodes;
} user_row_t;
class AbstractDBI
{
public:
virtual ~AbstractDBI() {};
virtual bool getUserData(int userid,user_row_t &row) const = 0;
virtual bool setUserData(user_row_t &row) const = 0;
// ...
}
这种设计足以处理应用程序核心使用的所有语句。但是如果我们需要在用户编写的插件中访问数据库,我们将不得不接触 DBI 类。
由于应用程序将承受沉重的负载,准备好的语句是必不可少的。我们还想使用数据库特定的数据类型,例如用于 postgres 的 inet
。
有没有人做过这样的事情,可以给我一些建议吗?