文件系統和資料庫有什麼區別?

fans news 發佈 2021-12-01T14:45:44+00:00

很容易忘記的一件事是,計算機歸根結底是機器。鑑於我們有能力感知周圍的世界,並擁有複雜的機制,使我們能夠做出價值判斷、與他人交流並應用邏輯來解決問題,而計算機通過複雜的電路運行,最終通過開關操作或關閉。現代計算機有數百萬個稱為電晶體的小開關。

很容易忘記的一件事是,計算機歸根結底是機器。鑑於我們有能力感知周圍的世界,並擁有複雜的機制,使我們能夠做出價值判斷、與他人交流並應用邏輯來解決問題,而計算機通過複雜的電路運行,最終通過開關操作或關閉。現代計算機有數百萬個稱為電晶體的小開關。不像早期的計算機簡單得多,程式設計師可以有效地使用打孔卡來編寫簡單的程序,今天的計算機如此複雜,如此廣泛,以至於人們已經開發出抽象來使使用計算機更像我們在現實中工作的方式世界。此外,隨著技術的進步,我們以前做事的方式逐漸變得過時,因此我們需要開發更好的做事方式。

我們開發的早期抽象之一是「文件」的概念。文件只是計算機可以理解的格式的信息。一個非常簡單的例子是文本文件。在書面英文文本中,可以(有一些限制)以非常小的數字表示的字符數量有限。特別是最初的美國信息交換標準代碼 (ASCII) 格式定義了計算機可以理解的英文符號的數字。例如,大寫字母「A」的數字為 65。標準的關鍵在於它們是任意的。計算機的運行方式不需要將數字 65 分配給字母「A」。這只是某人做出的選擇,並說服其他人使用該標準,然後它就被採用了。後來,人們意識到 255 個符號不足以涵蓋世界語言和制定的不同標準,最終收斂到我們今天擁有的 Unicode 標準。因此,文本文件只是一系列以特定字符格式表示文本的數字。同樣,可以將圖片掃描到計算機上並以特定的格式存儲。

文件的關鍵在於它們都歸結為一系列數字。圖片與小說或程序之間沒有本質上的區別。但是,有一個核心要求。必須存儲文件。如果每次啟動計算機時都必須從頭開始重新創建所有內容,那麼計算機將毫無用處。因此,從最早的計算機時代開始,就開發了多種存儲信息的方法——從穿孔卡開始,穿孔的存在與否決定了某些東西是打開還是關閉。後來,出現了電磁標準,將少量地鐵放在塑料盤上並進行磁化或不磁化。隨後出現了具有許多不同層的硬碟驅動器,然後是光學標準(CD、DVD、藍光)和最新的固態驅動器。其中大部分的動力是增加空間量,並減少訪問文件的時間。毫無疑問,我們今天使用的存儲技術在 20 年後將不再相同。

這呈現了兩個術語中的第一個 - 文件系統。顧名思義,文件系統只是一個用於存儲文件的系統。就像字符格式一樣,理論上任何人都可以開發自己的文件存儲方式,但這是不切實際的。最早的文件系統使用「文件分配表」(FAT),邏輯上是一個將磁碟劃分為簇的表,然後為文件分配簇。出於歷史和簡單的目的,FAT 文件系統(特別是 ExFAT 和 FAT32)是用於跨多個設備、平台和作業系統交換數據的事實上的文件系統。例如,當您在數位相機上拍攝照片並將其存儲在 SD 卡上時,很可能使用的是 FAT 文件系統。其他常見的有適用於 Windows/DOS 的新技術文件系統 (NTFS)、適用於 Linux 的擴展文件系統 (EXT2/3/4) 和適用於 Mac 的分層文件系統 (HFS)。

需要注意的關鍵是文件系統只影響文件的存儲方式,而不是文件本身。對於程式設計師來說,從 FAT 文件系統、NTFS 或 HFS 讀取文件看起來是一樣的。

資料庫解決了一個不同的問題。文件系統不關心它們存儲的數據(它是任意的),而資料庫有助於結構化數據。它們還提供查詢該數據的方法,即快速查找信息。它們還提供安全性。例如,許多文件系統允許您指定誰可以讀取整個文件,但不能讀取其中的一部分。

結構化數據意味著資料庫設計者定義了存儲什麼信息,以及它必須以什麼格式存儲。假設您有一個聯繫信息資料庫。資料庫可以強制電話號碼「欄位」中只有數字(一種數據)。如果用戶嘗試輸入帶有字母的電話號碼,資料庫將返回一個錯誤——使用資料庫的程序不一定要檢查(但可能出於其他原因)。由於資料庫強制執行該格式,因此程序可以保證來自資料庫的信息採用該格式。同樣,如果有一個生日欄位,資料庫將確保它是一個日期而不是文本。

查詢使用計算機科學技術快速瀏覽所有數據以查找條件或對信息進行排序。例如,資料庫允許按字母順序對所有人進行排序,或者查找出生日在一月份的人。

與文件系統一樣,有許多資料庫系統(以及資料庫系統的類型),每一個都有不同的好處:Microsoft SQL Server、Oracle、MySQL、PostgreSQL 都是常用的關係資料庫系統。資料庫通常是文件本身(一些抽象使資料庫本身成為一個文件夾),因此數據存儲在文件系統上。

我之前提到過,但通常資料庫本身並不是最終用戶「看到的」。因此,像 Amazon 或 eBay 這樣的網站將使用資料庫,但用戶將與通常稱為「業務規則層」的內容進行交互。這種編程只是檢查以確保在放入資料庫之前一切都已正確完成。例如,正是這一層阻止人們在不付費的情況下從亞馬遜獲取某些東西。資料庫管理員是直接在資料庫級別工作的人員。

總而言之,使用計算機本質上是一個將現實世界轉換為計算機可以理解的表示的過程——本質上是數字。各種格式的文件都包含信息——無論是文本文件,字符由數字或圖片或其他任何東西表示。存儲這些的方法是文件系統,其中最常見的是文件分配表 (FAT) 文件系統。資料庫不是簡單的任意信息,而是強制執行結構良好的數據,允許查詢快速限制或排序信息,並提供更高的安全性。

關鍵字: