數據 (計算機)

可以透過計算機設備可視化的各種類型的數據
數據（Data）需要解釋才能成為信息。要將數據轉換為信息，必須考慮的幾個已知因素。所涉及的因素由數據的創建者和所需信息決定。元數據用於引用有關數據的數據。元數據可以間接、指定或給定。與物理事件或過程相關的數據也將具有時間數據。在幾乎所有情況下，這個時間分量是隱含的。當溫度記錄器等設備從溫度傳感器接收數據時就是這種情況。當接收到溫度時，假設數據具有“現在”的時間參考。所以設備一起記錄日期，時間和溫度。
數字數據是使用（1）和零（0）的二進制數系統表示的數據，而不是模擬表示。在現代（1960年後）計算機系統中，所有的數據都是數字的。在大多數情況下，計算機中的數據作為並行數據移動。在大多數情況下移動到或來自計算機的數據作為串行數據移動。請參見並行通信和串行通信。來自模擬設備（例如溫度傳感器）的數據必須通過“模數轉換器”或“ADC”（請參見類比數位轉換器）將模擬數據轉換為數字數據。
表示數據的數量，字符，或在其上的操作由執行符號計算機被存儲並記錄在硬盤（磁、光盤或機械的記錄介質），和傳輸在數字電信號的形式。
程序是一組數據，由一系列編碼軟件指令組成，用於控制計算機或其他機器的操作。物理計算機存儲元件由一個地址和一個字節/字的數據存儲組成。數字數據通常存儲在有關聯數據庫中，如表或數據庫，通常可以表示為 關鍵字/值
數據可以組織在許多不同類型的數據結構中，包括數組、圖形和對象。數據結構可以存儲許多不同類型的數據，包括數字，字符串甚至其他數據結構。數據通過I/O設備進出計算機。
在另一種使用方法，二進制文件（不是人類可讀的）有時被稱為與人類可讀的“文本”不同的“數據”。2007年數字數據總量估計為2810億千兆字節（= 281億字節）。這數據來自三個狀態：靜止數據，傳輸中的數據和正在使用的數據。

**特徵**
在特殊的情況下，單個數據是存儲在特定位置的值。
從根本上說，計算機遵循一系列以數據形式給出的指令。執行給定任務（或多個任務）的一組指令稱為“程序”。在名義情況下，由計算機執行的程序將由二進制機器代碼組成。由程序操縱但不是由CPU實際執行的存儲元素也是數據。程序指令和程序操作的數據都以完全相同的方式存儲。因此，計算機程序可以通過操縱其程序化數據來操作其他計算機程序。
程序和數據之間的界限會變得模糊。一個解釋器，例如，是一個程序。解釋器的輸入數據本身就是一個程序，只是不是以本地機器語言表示的。在許多情況下，解釋的程序將是一個人類可讀的文本文件，它由文本編輯器程序（通常與純文本數據相關聯）進行操作。元編程類似地涉及將其他程序操作為數據的程序。如編譯器，鏈接器，調試器，程序更新程序，病毒掃描程序等程序使用其他程序作為其數據。
要將數據字節存儲在文件中，必須以“文件格式”序列化。通常，程序存儲在與其他數據不同的特殊文件類型中。可執行文件包含程序；所有其他文件也是數據文件。然而，可執行文件也可能包含內置於程序中的“在線”數據。特別地，一些可執行文件具有數據段，其名義上包含常數和初始值（兩個數據）。
例如：用戶可能會首先指示操作系統從一個文件加載文字處理程序，然後使用文字處理程序編輯存儲在另一個文件中的文檔。在此示例中，該文檔將被視為數據。如果字處理器還具有拼寫檢查器，則拼寫檢查器的字典（單詞列表）也將被視為數據。該算法使用的拼寫檢查建議更正是，要麼機器代碼的一些解釋的數據或文本編程語言。

**主鍵和數值，結構和續寫性**
數據中的鍵提供值的上下文。無論數據的結構如何，總是存在一個關鍵組件。數據和數據結構中的數據鍵對於給數據值賦予意義至關重要。沒有一個直接或間接與一個值結合的關鍵字，或者一個結構中的值的集合，這些值就變得毫無意義，不再是數據。也就是說，必須至少有一個與值組件相關聯的關鍵組件，以便將其視為數據。數據可以以多種方式在計算機中表示，具體如下：

**隨機存儲**
 隨機訪問存儲器保存計算機處理器可以直接訪問的數據。計算機處理器（CPU）可能僅操縱其內部的數據（處理器寄存器）或存儲器。這與數據存儲相反，處理器必須在存儲設備（磁盤，磁帶...）和存儲器之間移動數據。RAM是線性連續位置的一個或多個塊的陣列，處理器可以通過提供用於讀取或寫入操作的地址來讀取或寫入。RAM的“隨機”部分意味著處理器可以在任何時間以任何順序在存儲器中的任何位置上操作。（另見內存管理單元）。在RAM中，數據的最小元素是“二進制位”。訪問RAM的功能和限制是處理器特定的。通常主存儲器或RAM設置為“集的陣列的電子開/關開關”或位置在地址0（開始十六進制0）。根據處理器（CPU）架構，每個位置通常可以存儲8,16,32或64個並行位。因此，存儲在RAM中的字節中的任何值具有表示為與存儲器陣列中的第一存儲器位置的偏移的匹配位置，即0 + n，其中n是存儲器位置陣列中的偏移量。

**主鍵**
 數據主鍵不需要是內存中的直接硬件地址。間接，抽象和邏輯密鑰代碼可以與值相關聯地存儲以形成數據結構。數據結構具有從其中存儲數據值的結構開始的預定偏移（或鏈接或路徑）。因此，數據密鑰由結構的鍵加上結構中的偏移（或鏈接或路徑）組成。當重複這樣的結構時，將數據值和數據鍵的變化存儲在相同的重複結構中，結果可以被認為類似於表，其中重複結構的每個元素被認為是一列，結構的每個重複被認為是表的一行。

**有規律的數據結構**
 重複數據結構的表格視圖只是許多可能性之一。重複數據結構可以分層次地組織，使得節點在父子關係的級聯中彼此鏈接。值和潛在的更復雜的數據結構鏈接到節點。因此，節點層次結構提供了用於尋址與節點相關聯的數據結構的關鍵。這種表示可以被認為是倒置的樹。例如現代計算機操作系統文件系統是一個常見的例子；而XML是另一個。

**按主鍵分類數據**
 當數據按主鍵排序時，數據具有一些固有的特徵。主鍵的子集的所有值都顯示在一起。當通過具有相同密鑰的數據組順序通過或者主鍵的子集改變時，這在數據處理圓中被稱為中斷或控制中斷。它特別有助於數據值在密鑰子集上的聚合。

**外圍存儲**
 直到非易失性計算機存儲器如USB記憶棒的出現，傳統上通過將數據寫入諸如磁帶和磁盤驅動器的外部塊設備來實現持久數據存儲。這些設備通常尋求磁介質上的位置，然後讀取或寫入預定大小的數據塊。在這種情況下，媒體上的查找位置是數據鍵，塊是數據值。早期的數據文件系統或用於在數據文件的磁盤驅動器上預留連續塊的光盤操作系統。在這些系統中，文件可能會被填滿，在所有數據都已寫入數據空間之前已經用盡。因此，未生產過多的未使用的數據空間被保留，以避免產生這種情況。這被稱為原始磁盤。後來的文件系統引入了分區。它們為分區保留了磁盤數據空間塊，並且更經濟地使用了分配的塊，通過根據需要動態地將分區的塊分配給文件。為了實現這一點，文件系統必須跟蹤目錄或文件分配表中的數據文件使用或未使用的塊。雖然這更好地利用了磁盤數據空間，但是它導致了磁盤上文件的碎片化，以及由於延遲引起的伴隨的性能開銷。現代文件系統動態重組碎片文件以優化文件訪問時間。

**索引數據**
 從更大的集合中檢索一小部分數據意味著依次搜索數據。這是不經濟的。索引是從文件，表和數據集中的數據結構中複製密鑰和位置地址的方法，然後使用反向樹結構來組織它們，以減少檢索原始數據子集所需的時間。為了做到這一點，在檢索開始之前必須知道要檢索的數據子集的關鍵字。最流行的索引是B樹和動態散列密鑰索引方法。索引是歸檔和檢索數據的另一個昂貴的開銷。還有其他方式組織索引，例如排序密鑰或糾正數量（甚至密鑰和數據在一起），

**抽象和簡介**
 對象方向使用兩個基本概念來理解數據和軟件：1）程序代碼類的分類秩序結構，這是分層數據結構的一個例子；和2）在運行時，創建對已經從類庫實例化的對象的內存中數據結構的數據鍵引用。只有在實例化之後，存在指定類的執行對象。在對象的密鑰引用無效後，該對象引用的數據不再是數據，因為數據密鑰引用為空；因此物體也不再存在。存儲對象的數據的存儲單元然後稱為垃圾，並重新分類為可用於重用的未使用的內存。

**數據庫數據**
 數據庫的出現為持久性數據存儲引入了更多的抽象層。在持久化數據時，數據庫使用元數據和客戶端和服務器系統之間的結構化查詢語言協議，通過網絡進行通信，使用兩階段提交日誌記錄系統來確保事務完整性。

**並行分佈式數據處理**
 現代可擴展/高性能數據持久性技術依賴於高帶寬網絡上的許多商用計算機的大規模並行分佈式數據處理。一個例子是Apache Hadoop。在這樣的系統中，數據分佈在多個計算機上，因此係統中的任何特定計算機必須直接或間接地表示在數據的關鍵字中。這使得能夠區分兩個相同的數據集，每個在同一時間在不同的計算機上進行處理。

**另見**
 彙編語言- 大數據- 總線- 字節- 計算機內存- 處理器 CPU- 處理器緩存- 數據- 數據字典- 數據模型- 數據網絡傳輸- 數據存儲器- 數據流- 數據類型- 數據庫- 數據總線- 數據組- 外鍵- 哈希值- 信息處理器- 指令集- 內存地址- 移位- 唯一/主鍵- 處理器寄存器- 移位寄存器- 狀態- 組- 數值- 馮·諾依曼體系