永続的なストアが非常に明確に必要なプロジェクトを開始することを考えていました。CouchDBについて簡単に触れている記事に出くわしたとき、私はしぶしぶRDBMSを決定しようとしていました。私が最後に調べてからDBテクノロジーにいくつかの進歩があったように思われるので、データベースに入る前にここでデータベースについて質問したいと思いました。
これが私の基準です。(最後にもう一度基準をリストしているので、説明をスキップしたい場合は下にスクロールしてください。)
プロジェクトはオープンソースであり、私は何も求めないので、データベースはオープンソースで無料であることが望ましいです。さらに、ソフトウェアはLinuxとWindowsの両方で実行する必要があります。
プロジェクトには、C++である必要がある部分があります。プロジェクトは、第二言語を使用することを正当化するのに十分なコードの大きさではありません。つまり、基本的にすべてがC++になります。
このプロジェクトはWebとは何の関係もないので、データベースがWebライブラリのデトリタスを必要としないことが望ましいです。
保存したいオブジェクトは、基本オブジェクトとコンテナオブジェクトの2つのカテゴリのいずれかに分類されます。コンテナであるオブジェクトの違いは、さらに多くのオブジェクトを含みます。つまり、パーツの一部の問題です。そのような場合をクリーンかつ効率的に処理できるデータベースが必要です。
また、少なくとも最初は、スキーマが急速に進化することを期待しています。また、古いデータの一部が新しいスキーマに適合しないのではないかと思います。そのため、さまざまなバージョンのスキーマを保持したいと思います。可能であれば、あるスキーマのデータを別のスキーマに変換できるようにしたいと思います。
アプリケーションが意図したとおりに機能するためには、人々はデータベースの大きなチャンクを互いに交換する必要があります。そのため、ある程度自動化できる、データのインポートとエクスポートの簡単な方法が必要です。
最後に、データベースを何らかの方法で単体テストでシミュレートできれば便利です。
これらは私の要件です。人々が答えやすいように、以下にそれらを複製しました。
ありがとうございました
非技術的要件1.オープンソース、できれば無料。2.WindowsおよびLinuxで実行します
- C++インターフェイスを備えています。
- Web以外のアプリケーションを、できればRESTなしで処理できます。
- 「部品の部品」の問題をかなりうまく処理できます。
- 複数のインデックスを処理できます。
- ある種のスキーマバージョンの概念があり、複数のスキーマバージョンを処理でき、あるスキーマから別のスキーマにテーブルを移行できます。
- データベースのあるインスタンスから別のインスタンスにデータを移動するための単純なメカニズムが必要です。
- できれば、テストのための何らかのメカニズムがあります。