できればPython Webサーバープロセスが実行されている同じボックスのメモリに、2つの異なるpgsqlテーブルの2つのbツリーインデックスを実装する必要があります(クエリはできるだけ高速である必要があります)。これを実装する最良の方法を考えていました:
- プロセス内のメモリ内の b ツリーにインデックスを付けて維持します (手動で Python ライブラリを使用)。
- 別のメモリ内データベース (redis、mongo など) にインデックスを実装する
- neo4j や flock などのグラフ データベースを使用する (新しいホットさで遊ぶ言い訳)
- pgsql を微調整して、インデックス自体を実行します。(データベースに存在する他のデータのパフォーマンスが低下する代わりに?)
私のニーズは、重要な順に次のとおりです。
- クエリ速度
- 最近傍探索*
- 索引サイズ
- オープンソース
- pythonバインディング:)
追記事項: ツリーは一度に数千のノードに達する可能性があり、高い挿入/削除レートに耐える必要があります
*したがって、756.837 を検索すると、755.928 と 757.113 しか存在しない場合、パラメーターに応じていずれかが返されます
明確にするために、この postgres データベースは、処理中のデータに加えて、従来の webapp crud データを提供します。Web アプリケーション データのパフォーマンスを維持するために、複雑さを追加しても構わないと思っています。