1. 程式人生 > >數據庫基本原理# 3:一個數據庫中有什麽?

數據庫基本原理# 3:一個數據庫中有什麽?

決定 完整 存在 相關 recipe 信息 插入 是什麽 window

數據庫基本原理# 3:一個數據庫中有什麽?

值得一提的是很多人將不需要去創建他們自己的數據庫。你可能從不會去創建你自己的表格或者是其他的一些數據結構。你可能是安裝應用系統為你創建數據庫,你也只是做一些備份修復工作以及處理系統安全問題。當然這也是完全能夠理解的,畢竟這與很多企業和許多不太重要的數據庫應用系統的需求十分的一致。但是,最好能去了解一部分SQL服務器 ,比如它是什麽和它是怎麽運行的。

數據庫其實就是文件

你需要去保存你之後想要能幫你找到的信息。有條理的儲存信息是非常必要的。如果你進行一項文字處理程序,你會將不同的文檔存儲在不同的文件中。你不會將你所有的文檔都放進同一個大的文件裏。這種做法與SQL服務器功能十分類似。當你有一臺服務器,你不能簡單的把各種類型的並且對於你企業十分必要的信息全部儲存在一個大文件並放進服務器裏。相反的,你要去組織好那些信息。SQL服務器起初的組織機制是數據庫。數據庫允許在不同存儲區域保存信息集。此外,它允許你隔離這些不同的信息集以此保證安全性,同時也方便你控制誰可以來查看或修改數據.

在數據庫中有稱為表的東西。表定義儲存關系。你在往數據庫中存儲的信息將被添加到這些表中。你也能夠通過這些表將數據添加到數據庫或者從中刪除。你還可以從這些表中檢索數據庫中的信息。

除了數據庫中的表外,還有許多將幫你管理存儲在數據庫中的信息的不同結構。這包括一些不同類型的對象,這些對象可以幫你處理數據,如視圖、存儲過程和函數。你還可以得到一組完整的安全對象,如角色和用戶。

數據庫實際上是由存儲在Windows文件系統某處的文件組成。這些文件的格式都是專們的二進制形式,除了通過SQL服務器外,其他軟件不能直接讀取。向這些文件寫入數據是SQL 服務器中最寶貴且耗時的操作之一(盡管在大多數情況下,服務器所涉及的時間是以微秒計算的)。因為這一貢獻,對於數據庫是由文件定義的和文件被儲存在數據庫的問題的理解是非常重要的

兩種類型的文件

你可以和很多人一樣把數據存儲在文本文件或者電子表格中。但當你需要多人同時訪問,都在同一時間更新一些數據,刪除,插入新的信息,其他的存儲貯存機制變得很有問題。這就是你為什麽要使用數據庫。由於SQL Server必須對存儲的數據進行大量不同的工作,所以它會產生一些不同的機制來執行這些操作。數據庫的結構是以兩種不同類型的文件來存儲不同類型的信息,當你檢查這些類型時你可以參考這些數據。

註:實際上還有幾個其他的文件類型可以添加到數據庫中,但現在我們在這裏討論的是基本原理,所以現在我們將保持它的簡單。

數據文件

定義數據庫所需的第一類文件是數據文件。數據文件易理解和解釋。你寫入數據庫的信息就被存儲在這種文件中。任何給定的數據庫都可以由多個數據文件組成。數據文件可以放在多個硬盤上。如果您有更高級的存儲機制,如存儲區域網絡(SAN),您可能有其他結構,而不是服務器上簡單的硬盤驅動器,但它們將作為驅動器映射到Windows操作系統,SQLServer也可以使用這些存儲數據文件。

日誌文件

創建數據庫需要的第二種類型文件是日誌文件。日誌文件稍微復雜一些,比數據文件難理解。日誌文件記錄數據庫中的每一條事務。當數據在系統中以某種方式被操縱時,就會發生事務。這些操作可以對現有數據進行更新,通過將數據插入表中來添加新數據或刪除數據。這些操作導致信息被寫入日誌文件中,還有許多其他的函數也與日誌文件相關。這些文件通常比數據文件小得多,因為日誌中的條目只需要被保存,直到數據被成功的寫到數據文件中。因為寫入數據文件會受到不同類型的故障的限制,一旦數據被寫入數據文件,日誌就會被刪除。清理日誌文件的過程將會在另一個帖子中詳細討論。當你最初創建文件時,你可以調整它們的大小。在創建文件之後,你可以調整大小,包括上下調整。每個文件也可以被設置為自動增長,但這很復雜,所以值得花更多時間來理解它的含義。

自動增長設置

如果你有大量的數據庫,那麽管理數據庫中的文件會有很大的工作量。你需要檢查可用空間,當空間足夠時將文件的大小增大。所有這些手動工作的一種方法是使用數據庫的自動增長設置。

警告:要小心使用這個設置,你可以填滿一個驅動器,讓你的服務器離線。將數據庫設置為自動增長,這意味著數據庫將在開始耗盡空間是自動調整文件大小。許多人在使用這種設置,還有許多應用程序在安裝是將其設置為on。為了避免這個問題,你應該在文件中設置一個較高的增長限制。你可以將這些文件設置為數據庫或固定大小的百分比。對於規模較小的數據庫,按百分比增長是可以工作的,但隨著數據規模的不斷擴大,按百分比增長的過程就會變的越來越長。最好的做法就是將增長設置為一個特定的值,而不是一個百分比。當數據庫被創建,關於如何設置這些的詳細信息將被覆蓋。

放置文件的位置

當你安裝SQL Server 時,你有選擇來定義你的數據庫文件放置的位置。你也可以通過服務器屬性窗口來調整。當你在創建一個數據庫時,為了確保在運行是有足夠的空間,最後有知道你放置文件的位置 。為了看到文件放置的位置,連接到你的服務器上,在數據庫基礎2上有相關的要點概述。一旦連接,在“對象資源管理器”窗口中,右鍵單擊服務器名稱本身。這將產生一個上下文菜單。在菜單底部選擇“屬性”菜單選項。這將打開服務器屬性窗口,您將處於默認的“常規”,tab。選擇“數據庫設置”選項卡,您將看到與此非常類似的內容:

查看這裏的有趣區域是標題為“數據庫默認位置”部分的窗口底部。你將看到三個不同的目錄,其中一個用於數據、日誌和備份。通過單擊條目右側的省略號,可以調出默認的“文件瀏覽器”窗口,以更改日誌或數據文件的默認位置。你也可以修改輸入直接在文本框中任何一個物理路徑如上圖所示,使用通用命名約定(UNC)路徑。

放置文件的目標應該是盡可能地分離功能。如果你有能力,最好將操作系統文件與數據和日誌文件分離。這意味著,如果可能的話,進一步,至少應該考慮將數據和日誌文件存儲在完全獨立的驅動器上。這允許對驅動器上的文件進行數據的最大吞吐量。

一旦你決定了儲存的位置是恰當的,如果你已經做了改變,就單機確定按鈕保存這些改變,如果你沒有做任何的改變,或是你不希望保存所做的修改,就單擊取消按鈕。這些點擊中的任何一個都將關閉服務器屬性窗口。

這兩種文件的類型都有幾個屬性,除了當你創建數據庫時的重要物理位置,物理位置的一部分將是文件名和擴展名。這些都能是有效的窗口操作系統名和擴展名,默認情況下,擴展名通常是mdf的數據文件和idf的日誌文件,你可以改變這些,如果你想。但是它可能會導致一系列的困惑,因為大多數人用默認作為最佳的練習。有一個邏輯文件名,允許您在數據庫中引用該文件進行操作,而無需返回完整的文件位置,包括驅動器。邏輯名一點也沒有必要匹配物理名稱,但是他們通常會這樣做。

結論

以上介紹了數據庫文件存儲的本質,下一章我們將在服務器上實際創建一個數據庫,那將會比這章要簡單。

*文章來自:

https://www.scarydba.com/2017/06/20/database-fundamentals-3-whats-database/

*原文引用: Inside SQL Server T-SQL Querying – Itzik Ben Gan

SQL Server 2008 Transact-SQL Recipes – Joseph Sack

數據庫基本原理# 3:一個數據庫中有什麽?