㈠ 資料庫索引為什麼使用B+樹
B tree: 二叉樹(Binary tree),每個節點只能存儲一個數。
B-tree: B樹(B-Tree,並不是B「減」樹,橫杠為連接符,容易被誤導)
B樹屬於多叉樹又名平衡多路查找樹。每個節點可以多個數(由磁碟大小決定)。
B+tree 和 B*tree 都是 B-tree的變種
一般來說,索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲的磁碟上。這樣的話,索引查找過程中就要產生磁碟I/O消耗,相對於內存存取,I/O存取的消耗要高幾個數量級,所以評價一個數據結構作為索引的優劣最重要的指標就是在查找過程中磁碟I/O操作次數的漸進復雜度。換句話說,索引的結構組織要盡量減少查找過程中磁碟I/O的存取次數。而B-/+/*Tree,經過改進可以有效的利用系統對磁碟的塊讀取特性,在讀取相同磁碟塊的同時,盡可能多的載入索引數據,來提高索引命中效率,從而達到減少磁碟IO的讀取次數。
不了解磁碟相關知識的可以查看 硬碟基本知識(磁頭、磁軌、扇區、柱面)
下面通過示意圖來看一下,B-tree、B+tree、B*tree
從圖中可以看出,B-tree 利用了磁碟塊的特性進行構建的樹。每個磁碟塊一個節點,每個節點包含了很關鍵字。把樹的節點關鍵字增多後樹的層級比原來的二叉樹少了,減少數據查找的次數和復雜度。
B-tree巧妙利用了磁碟預讀原理,將一個節點的大小設為等於一個頁(每頁為4K),這樣每個節點只需要一次I/O就可以完全載入。
B-tree 的數據可以存在任何節點中。
B+tree 是 B-tree 的變種,數據只能存儲在葉子節點。
B+tree 是 B-tree 的變種,B+tree 數據只存儲在葉子節點中。這樣在B樹的基礎上每個節點存儲的關鍵字數更多,樹的層級更少所以查詢數據更快,所有指關鍵字指針都存在葉子節點,所以每次查找的次數都相同所以查詢速度更穩定;
B*tree 每個磁碟塊中又添加了對下一個磁碟塊的引用。這樣可以在當前磁碟塊滿時,不用擴容直接存儲到下一個臨近磁碟塊中。當兩個鄰近的磁碟塊都滿時,這兩個磁碟塊各分出1/3的數據重新分配一個磁碟塊,這樣這三個磁碟塊的數據都為2/3。
在B+樹的基礎上因其初始化的容量變大,使得節點空間使用率更高,而又存有兄弟節點的指針,可以向兄弟節點轉移關鍵字的特性使得B*樹額分解次數變得更少;
㈡ 資料庫類型
資料庫大致可以這么分類:
1關系資料庫
1.1大型商業資料庫:支持數據存儲量大,訪問效率高,適合大型企業應用,收費較高,具體包括:
Oracle
DB2(IBM)
SYbase(這個是比較早的,公司現在不做資料庫了)
SQL SERVER,版本包括2000,2005,2008, 2012等
1.2 中小型應用資料庫:
SQL SERVER 2000
Acess
Visual foxpro
1.3 中小型開源資料庫:
MYSQL(這個開源資料庫在一些大型應用中會以集群的方式使用)
PostgreSQL
SQLite
1.4嵌入式資料庫:
SQLite也可以算在這里
1.5 列存儲模式資料庫:主要用於研究和數據倉庫應用
MonetDB
2 面向對象資料庫
Berkeley DB(現在已經被Oracle買下了)
Oracle也提供了面向對象的功能
3 XML資料庫,這類資料庫一般是附屬於關系資料庫功能的,只有研究型的是處理純XML文檔的
DB2 ,附加XML處理版本
Oracle,裡麵包含XML查詢功能
SQLSERVER,包含XML數據查詢功能
4 NOSQL資料庫,目前大型互聯網公司和微博等網站廣泛使用的數據存儲系統,典型的有:
HBase
Cassandar
MongoDB
還有很多,這里不逐一列列舉了
㈢ 資料庫類型有哪幾種
資料庫類型可分為層次型、網狀型和關系型。
層次型資料庫是把數據根據層次構造(樹結構)的方法呈現;網狀型資料庫是採用網狀原理和方法,以網狀數據模型為基礎建立的資料庫;關系型資料庫是指採用了關系模型來組織數據的資料庫。
資料庫的作用
1、實現數據共享:數據共享包含所有用戶可同時存取資料庫中的數據,也包括用戶可以用各種方式通過介面使用資料庫,並提供數據共享。
2、減少數據的冗餘度:同文件系統相比,由於資料庫實現了數據共享,從而避免了用戶各自建立應用文件。減少了大量重復數據,減少了數據冗餘,維護了數據的一致性。
3、保持數據的獨立性:數據的獨立性包括邏輯獨立性(資料庫中資料庫的邏輯結構和應用程序相互獨立)和物理獨立性(數據物理結構的變化不影響數據的邏輯結構)。
4、數據實現集中控制:文件管理方式中,數據處於一種分散的狀態,不同的用戶或同一用戶在不同處理中其文件之間毫無關系。利用資料庫可對數據進行集中控制和管理,並通過數據模型表示各種數據的組織以及數據間的聯系。
㈣ 請問資料庫有哪些種類呢
資料庫通常分為:
層次式資料庫、網路式資料庫和關系式資料庫三種。
而不同的資料庫是按不同的數據結構來聯系和組織的。
資料庫有類型之分,是根據數據模型劃分的。目前成熟地應用在資料庫系統中的數據模型有:層次模型、網壯模型和關系模型。
一、層次模型:
層次模型是用樹結構表示記錄類型及其聯系的。
樹結構的基本特點是:
1、有且僅有一個結點無父結點;
2、其它結點有且有一個父結點。
在層次模型中,樹的結點是記錄型。上一層記錄型和下一層記錄型的聯系是1:n的。
層次模型就象下面我們給出的一棵倒立的樹。
注意:在層次式資料庫中查找記錄,必須指定存取路徑。這種關系模型不支持m:n聯系。
二、網狀模型:
網狀模型中結點間的聯系不受層次限制,可以任意發生聯系,所以她的結構是結點的連通圖。
網狀模型結構的特點是:
1、有一個以上結點無父結點;
2、至少有一個結點有多於一個父結點。
注意:雖然網狀模型能反映各種復雜的關系,但網狀模型在具體實現上,只支持1:n聯系,對
於m:n聯系可將其轉化為1:n聯系。
三、關系模型:
關系模型的本質就是用若干個二維表來表示實體及其聯系。
關系是通過關系名和屬性名定義的。一個關系可形式化表示為:
R(A1,A2,A3,…,Ai,…)
其中:R為關系名,Ai為關系的屬性名。
目前常用的資料庫管理系統有:
ACCESS、SQL Server、 Oracle、MySQL、FoxPro和Sybase等。
ACCESS 是美國Microsoft公司於1994年推出的微機資料庫管理系統.它具有界面友好、易學易用、開發簡單、介面靈活等特點,是典型的新一代桌面資料庫管理系統。
Oracle公司是全球最大的信息管理軟體及服務供應商,成立於1977年,總部位於美國加州 Redwood shore。Oracle提供的完整的電子商務產品和服務包括: 用於建立和交付基於Web的Internet平台; 綜合、全面的具有Internet能力的商業應用; 強大的專業服務,幫助用戶實施電子商務戰略,以及設計、定製和實施各種電子商務解決方案...
SQL是英文Structured Query Language的縮寫,意思為結構化查詢語言。SQL語言的主要功能就是同各種資料庫建立聯系,進行溝通。按照ANSI(美國國家標准協會)的規定,SQL被作為關系型資料庫管理系統的標准語言。SQL語句可以用來執行各種各樣的操作,例如更新資料庫中的數據,從資料庫中提取數據等。目前,絕大多數流行的是關系型資料庫管理系統。
內容來源網路,僅供參考!