簡體   English   中英

什么數據結構可用於存儲具有多個可比較屬性的對象

[英]What data structure could be used to store objects with multiple comparable attributes

我想建立一個數據結構來存儲多個房屋的信息,以后用戶可以通過搜索查詢檢索到理想的房屋信息。 為了實現快速搜索,我會使用紅黑樹。 我面臨的問題是,每個節點的鍵只包含房屋的一個屬性,即價格,至於床的數量、土地面積等其他屬性,它們不能存儲在一棵樹中。 對於這個問題,什么是好的數據結構,最初我認為一棵樹嵌套在一棵樹中,這是可行的還是被認為是好的?

您面臨的問題可以使用數據之上的二級索引來解決。 二級索引是數據庫領域中深入研究的一個概念,您應該可以輕松找到資源來幫助您了解它們是如何在實際數據庫中實現的。

因此,您當前擁有數據的主鍵:對象 memory 引用或引用集合的索引。 對於您要查詢的每個屬性,您需要有一種快速查找匹配對象的方法。 您使用的確切數據結構將取決於您執行的查詢類型,但某種搜索樹將是一個很好的通用數據結構,並且通常對於更新非常有效,這對於許多數據庫來說非常重要。 您的數據結構應該接受與特定屬性相關的查詢,並返回對與該查詢匹配的所有對象的引用或主鍵。

在您的示例中,您可能有一棵紅黑樹表示價格,另一棵表示床位數。 如果您正在回答“price = 30 or number-of-beds = 4”的查詢,那么您需要做的就是查詢您的價格數據結構,然后查詢您的床位數據結構,然后因為您有一個“或" 在您的查詢中,您只需取從您的數據結構返回的主鍵的並集(取“和”的交集)。

請注意,如果您添加或更新對象,那么您還需要更新所有發生變化的索引。 這是您在真實數據庫中也看到的權衡; 較慢的寫入速度更快的讀取。

嵌套樹方法可能會起作用,具體取決於您進行的查詢類型,但如果數據結構不是 static,它很快就會變得不合適 - 如果您更新對象,更新樹的速度會非常慢。

暫無
暫無

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

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