簡體   English   中英

使用SQL的B +樹結構實現

[英]B+ Tree structure implementation using SQL

我非常了解純sql中現有的二進制搜索樹實現,但是我無法真正想象一個人如何構建實現B + Tree數據結構的數據庫模型。 可能嗎?

任何見識將不勝感激。

  1. B +樹和二進制搜索不同。
  2. 在表中可以使用B + Tree結構(假設您知道它是什么)。

是否推薦2是值得研究的東西,但我們公司做了很多工作。

在表上使用B + Tree的示例為:

ColId       SomeData        ParentId
------------------------------------
  1           Data 1          null
  2           Data 2          null
  3           Data 3            1
  4           Data 4            1
  5           Data 5            3

等等。 想法是,您可以通過查看父代ID來找到項目5的父代。 您可以制作/重復使用各種方便的算法來查找項目及其位置。 使用具有較大增量的ColId(例如,以10或100為增量)可讓您留出空間來將項目插入樹中。

例如......第5項的父項是第3項,祖父母是第1項。任何具有null的項都是根(起始)項...它們沒有父項。

可以想象,這是非常快速的搜索,但是更新或添加的速度卻很慢(如果您沒有按照上述建議留出空間)。 如果您確實留有空間,那么只有在空間用完並不得不重寫項目時才緩慢添加。 假設您很好地講授了數據,那么這種情況就不會經常發生。 如果是這樣,那么對於特定的格式,B + Tree可能不是很理想。 通常,如果對數據的大部分操作都在讀取/搜索/過濾等操作中,則B + Tree結構會很好。但是,如果有大量更新和添加操作,則可能效果不佳。

由於您的問題似乎與如何在sql服務器表中使用B + Tree格式有關,因此我將讓您了解一下此搜索與二進制搜索之間的區別。 二進制搜索是一種用於搜索內容的算法,首先對集合進行排序,然后每次除以一半,直到找到所需的內容為止。 B + Tree也可以用於搜索,但是有所不同,因為它在分層結構上運行(因此命名為Tree)。

暫無
暫無

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

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