[英]B+ Tree structure implementation using SQL
我非常了解純sql中現有的二進制搜索樹實現,但是我無法真正想象一個人如何構建實現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.