簡體   English   中英

B樹數據庫選項

[英]B-Tree database options

我需要實現兩個不同pgsql表的兩個b樹索引,最好是在運行python web服務器進程的同一個盒子的內存中(查詢需要盡可能快)。 我想知道實現此目標的最佳方法:

  1. 在進程內的內存中索引和維護b樹(手動使用python庫)
  2. 在單獨的內存數據庫(redis,mongo等)中實現索引
  3. 使用諸如neo4j或flock之類的圖形數據庫(借以玩新玩意的借口)
  4. 調整pgsql來做索引本身。 (以數據庫中其他數據的性能下降為代價嗎?)

我的需求按重要性順序是:

  • 查詢速度
  • 最近鄰居搜索*
  • 索引大小
  • 開源
  • python綁定:)

附加說明:樹一次可以達到數千個節點,必須承受較高的插入/刪除率

*因此,如果我搜索756.837,但僅存在755.928和757.113,則根據參數返回任意一個

需要明確的是,這個postgres數據庫將在處理的數據之上提供傳統的webapp原始數據。 我願意增加復雜性以維護webapp數據的性能。

第一步將是查看可以將PostgreSQL索引推送到所需位置的程度。 典型的btree索引速度很快,但沒有很多功能。 特別是,它們不能很好地進行knn搜索。 根據您的需要,您可能需要將索引從Btree更改為GiST。 GiST提供了KNN搜索(假設您的數據類型支持此功能!),並允許您執行其余大部分查找工作。 缺點是,根據您的數據類型,您可能最終需要進行一些編程以獲得對某些數據類型的適當支持。

與標准btree索引相比,GiST提供了更多的搜索選項,但查詢速度也較慢。 但是,主要優點是它們確實比GIN索引支持更高的插入/更新速率,並且它們還支持knn搜索。

如果那不適合您...。您可能想在內存中實現其他功能,可能使用內存中的緩存(如memcached),甚至只是普通的Sys V IPC和單獨的進程。 但是請注意並發訪問內存!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM