私は現在、いくつかのサーバー/クライアントベースのアプリケーションで作業しています。 アプリケーションはマルチスレッドであり、プラグインをサポートしています(dlopen
、...経由)。複数のデータベースで動作する必要があります。C++でのデータベースインターフェイスの開発を開始するのに最適なポイントは?
今、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
を使用します。
誰もがこのようなことをしてくれたことがありますか?
ありがとう、それは私が必要なヒントでした。フィールドは 'typdef struct {boost :: any data; fieldtype type} '' fieldtyp'はサポートされているすべての型を持つ単純な列挙型です。この基盤上では、DBIとデータベースに依存しない他のすべてのものを準備することができました。 –