C ++のSQLiteの代替案[終了]
-
03-07-2019 - |
質問
データの高速検索(何らかのインデックスの必要性)が必要なため、多くの書き込みと読み取りでデータを保存し、データをシリアル化して保存できるアプリケーションを開発しています。
現在、仕事を完了するSQLiteの使用を考えていますが、他の選択肢も用意しています。 SQLiteの構文は、実際にはC ++コードにうまく収まりません(たとえば、列名ではなく列インデックス番号などで結果にアクセスする必要があります)。
解決
SQLiteを使用しますが、これに適したC ++ライブラリを見つけます。
この StackOverflowの質問が役立ちます。 ..
他のヒント
ラッパーライブラリに追加された依存関係は、その余分な依存関係のコストを処理するコストに見合うものではないと主張します。これらのラッパーライブラリのドキュメントが不足している場合でも、これらのラッパーライブラリのデバッグにこだわる必要はありません。 SQLLiteはより安定しており、ドキュメントが充実しているため、依存関係の信頼性が高くなります。
sqlliteを扱うか、最終アプリケーションに基づいてインテリジェントな方法で自分でラップします。
データベースが唯一の本当の選択肢であるかのように聞こえます。ただし、SQLite、MySql、またはPostgresを選択した場合、列のインデックスポイントは実際には重要ではありません。
おそらく、本当に欲しいのは、より優れたデータベース抽象化です。あなたはPocoを試してみたいかもしれません、それは素晴らしいものを持っています: http://pocoproject.org/
Berkeley DB、別名SleepyCat。アーカイブを検索すると、Mike Olsenによる、プロジェクトにおけるSQLの主な短所についての記事があります。昨年中に、ORMレイヤーが非常に良くなったためにSQLが廃止されることを示唆する別のフォローアップ記事があります。
SQLiteを使い続けて「自分でやる」と言ったら-ラッピングは非常に簡単です。私は自分でSQLiteをさまざまにラッピングしました。どうして?そのAPIは、データベースに関連する他のどの製品よりもずっと使いやすく、多くの労力を費やす必要がないためです。ラッパーライブラリを使用すると、ununownsを追加するだけで、最も重要なことは、ほとんどのラッパーは組み込みデータベースの提供専用ではありません。埋め込みデータベースでは、正しい方法がデータベースサーバーの最適なアプローチとは非常に異なることを常に繰り返します...
リストされたラッパーAPI のリストを取得することをお勧めしますSqliteサイトで? C ++を含む多くの言語にはたくさんあります。 Sqlite Plusは特に良いようです。 「通常は役に立たない」と述べたPOCOも良さそうです。
同意します。SQLiteがC ++または列名のインデックス作成と互換性がないと言うのは偽です。名前で列にアクセスすることを奨励するC ++ SQLiteラッパーはたくさんあります。 SQLite ++ は多くの1つに過ぎません。
SQLデリバティブの代わりに、Lucene(またはそこにある多くのクローンの1つ)のような転置インデックスIRライブラリを使用することを考えるかもしれません。 LuceneはJavaですが、マネージC ++ライブラリを作成してLecene.Netと相互運用できます。
速度に関しては、Luceneの読み取りのパフォーマンスに非常に満足しています。書き込み用に最適化されているわけではありませんが、何百万もの「ドキュメント」のインデックスを作成しようとしていない限り、それでもかなり良好です。
Windowsで作業していない場合は、Tokyo Cabinetを調べてください。かなり良いようです。私はWin32ポートを待っているので、パフォーマンスが印象的であるように見える以外、それについてはあまり言えません。
http:// anyall.org/blog/2009/04/performance-comparison-keyvalue-stores-for-language-model-counts/
これはSQLの派生物ではありません。まっすぐなBツリー/ハッシュベースのストアです。私の意見では、これは大歓迎です。私が知っている唯一の競争力のあるライブラリはバークレーDBであり、望ましいライセンスがありません。