メモリにC++オブジェクトのコレクションがあり、SQL文を使用してそのオブジェクトをクエリしたいとします。私は、データベース行の列のようなオブジェクトのプロパティを公開するために、ある種のインタフェースを実装するつもりです。これを実現するライブラリがありますか? 本質的に、私は.NETプラットフォームを使用せずにLINQのようなものを達成しようとしています。SQL文を使用してメモリ内オブジェクトを照会する
答えて
C++オブジェクトは、SQLテーブルと同じものではありません。
SQL構文を使用してオブジェクトを照会する場合は、まずオブジェクトをテーブル構造(ORM、object-relational-mapping)にマップ/保持する必要があります。 Linq以外にも数多くの素晴らしいORMソリューションがあります。
オブジェクトをSQLテーブルに表示したら、SQLエンジンを参照して大量の作業を行う必要があります。ほとんどのSQLプラットフォームは、ほとんどまたは常にメモリ内にテーブルを保持するように設定できます。
代わりに、オブジェクトをキャッシュするように特別に設計されたシステムが考えられます。 Linuxでは、memcachedが主な選択肢です。
私もこの種のものを探していましたが、SQLliteが私に最も近いと思われます。
オブジェクトの世界とエンティティ・リレーショナル・データ(ER)の間に落とし穴があります。その番号はObject-relational impedance mismatchです。基本的には、オブジェクトの概念をオブジェクト・リレーショナル・マッピング(ORM)と呼ばれるリレーショナル・データベースの概念に「マップ」する必要があるということです。
多態性の例:派生クラスはER概念ではないので、たとえば、同じクラスに属するすべてのオブジェクトのすべての属性がすべての「親」属性を持つ同じテーブルに格納されます OR派生クラス(オブジェクト)は、派生元の抽象クラスと同じテーブルに格納されます。
コミュニティでサポートされているORMを使用するのが最善でしょうが、動機が正しい場合は、自分のORMソリューションを利用することで利益を得ることができます。
当社では独自のORMソリューションを開発しました(6年前に開始されたので、C++で書かれ、モデラーはWindowsデスクトップアプリケーションでした)。しかし今はおそらくADO.NET Entity Framework(LINQの "big" brother)または別のサポートされているORM
- 1. JPAでメモリ内データを照会する
- 2. SQLステートメント内の "LIKE"を使用して、文章内の単語を順序に関係なく照会する
- 3. オブジェクトを使用してEntity Frameworkを照会する
- 4. SQLを使用してXMLデータ列を照会する
- 5. linqを使用してオブジェクト配列を照会します
- 6. Linqを使用してXML文書を照会する
- 7. XElementを使用してネームスペース内のノードを照会します
- 8. Linq文字列を使用してintを照会します。
- 9. テキストエリアを使用したユーザー入力としてのSQL照会
- 10. "、"セパレータを使用してSQLデータベースからデータを照会
- 11. JPAを使用してリストメンバーと照会してオブジェクトをロードするベストプラクティス
- 12. ハイライトを使用してフレーズクエリを照会
- 13. LINQを使用してCSVをSQLのように照会する方法は?
- 14. 複数のキーワードを別々に照会してSQLで一括して照会
- 15. linqを使用してセッション変数内のデータを照会する方法
- 16. SQL照会
- 17. SQLを使用してXMLからデータを照会/ udpateできますか?
- 18. コマンドラインを使用してPDFを照会していますか?
- 19. VB.NETを使用してリモートサーバーのイベントログを照会する方法?
- 20. Hibernateを使用して「拡張テーブル」を照会する
- 21. JDBCを使用してUTF-8データベースを照会する方法
- 22. スレッドプールを使用してリモートデータベースを照会する
- 23. Pandas/Pythonを使用してHDFストアを照会する方法
- 24. VB.NETを使用してNTPサーバーを照会する
- 25. APDUを使用してNetbeansでJavacardアプレットを照会する
- 26. .NETを使用してStarDict(.dict)ファイルを照会する方法
- 27. 地理的エリア/ポイントを使用してデータベースを照会する
- 28. 2つの制約を使用してPHPMYADMINを照会する
- 29. Django:モデルを使用して複数のテーブルを照会する
- 30. linqを使用してnull可能なフィールドを照会する
私はいくつかのプロジェクトでSQLiteを使いました。 MySQLには完全なメモリ内テーブル型もあります。 –