2009-08-04 14 views
3

メモリにC++オブジェクトのコレクションがあり、SQL文を使用してそのオブジェクトをクエリしたいとします。私は、データベース行の列のようなオブジェクトのプロパティを公開するために、ある種のインタフェースを実装するつもりです。これを実現するライブラリがありますか? 本質的に、私は.NETプラットフォームを使用せずにLINQのようなものを達成しようとしています。SQL文を使用してメモリ内オブジェクトを照会する

答えて

2

C++オブジェクトは、SQLテーブルと同じものではありません。

SQL構文を使用してオブジェクトを照会する場合は、まずオブジェクトをテーブル構造(ORM、object-relational-mapping)にマップ/保持する必要があります。 Linq以外にも数多くの素晴らしいORMソリューションがあります。

オブジェクトをSQLテーブルに表示したら、SQLエンジンを参照して大量の作業を行う必要があります。ほとんどのSQLプラットフォームは、ほとんどまたは常にメモリ内にテーブルを保持するように設定できます。

代わりに、オブジェクトをキャッシュするように特別に設計されたシステムが考えられます。 Linuxでは、memcachedが主な選択肢です。

+0

私はいくつかのプロジェクトでSQLiteを使いました。 MySQLには完全なメモリ内テーブル型もあります。 –

0

私もこの種のものを探していましたが、SQLliteが私に最も近いと思われます。

1

オブジェクトの世界とエンティティ・リレーショナル・データ(ER)の間に落とし穴があります。その番号はObject-relational impedance mismatchです。基本的には、オブジェクトの概念をオブジェクト・リレーショナル・マッピング(ORM)と呼ばれるリレーショナル・データベースの概念に「マップ」する必要があるということです。

多態性の例:派生クラスはER概念ではないので、たとえば、同じクラスに属するすべてのオブジェクトのすべての属性がすべての「親」属性を持つ同じテーブルに格納されます OR派生クラス(オブジェクト)は、派生元の抽象クラスと同じテーブルに格納されます。

コミュニティでサポートされているORMを使用するのが最善でしょうが、動機が正しい場合は、自分のORMソリューションを利用することで利益を得ることができます。

当社では独自のORMソリューションを開発しました(6年前に開始されたので、C++で書かれ、モデラーはWindowsデスクトップアプリケーションでした)。しかし今はおそらくADO.NET Entity Framework(LINQの "big" brother)または別のサポートされているORM

関連する問題