我需要实现两个不同 pgsql 表的两个 b-tree 索引,最好在运行 python webserver 进程的同一个盒子上的内存中(查询需要尽可能快)。我想知道实现这一点的最佳方法:
- 在进程内索引和维护内存中的 b-trees(使用 python 库手动)
- 在单独的内存数据库(redis、mongo 等)中实现索引
- 使用像 neo4j 或flock 之类的图形数据库(玩新热点的借口)
- 调整 pgsql 以自己做索引。(以数据库中其他数据的性能下降为代价?)
我的需求是,按重要性排序:
- 查询速度
- 最近邻搜索*
- 索引大小
- 开源
- 蟒蛇绑定:)
附加说明:树一次可以达到数千个节点,必须承受高插入/删除率
*因此,如果我搜索 756.837,但仅存在 755.928 和 757.113,则根据参数返回任一
需要明确的是,这个 postgres 数据库将在正在处理的数据之上提供传统的 webapp crud 数据。我愿意增加复杂性以维护 webapp 数据的性能。