簡介
在使用資料庫時,您必須學習大量術語才能理解這項技術,如何最好地使用它,以及它與您環境中其他部分的關係。本詞彙表旨在收集資料庫社群中常用的術語,並提供定義和上下文,以幫助您增長知識。
本詞彙表是一個正在進行的工作,也是一個活文件。我們打算隨著時間的推移更新它,以新增新主題並完善現有條目。我們有一個計劃在近期新增的術語待辦事項,但如果您有任何希望我們討論的內容,請開啟一個GitHub 問題來新增您的建議。
術語
- 1NF
- 1NF,即第一正規化,描述了一種資料庫規範化型別,其中每個表列只包含一個值。一個包含巢狀表作為值或包含多個值的列不符合 1NF。
- 2NF
- 2NF,即第二正規化,描述了一種資料庫規範化型別,它:1) 滿足 1NF 的要求,2) 沒有直接與候選鍵子集繫結的值。換句話說,如果一個關係處於 1NF,並且所有非候選值都完全依賴於複合鍵,而不僅僅是候選鍵的一部分,那麼它就處於 2NF。例如,一個 `book` 表,其候選鍵由 `title` 和 `author` 組成,如果它還包含描述作者出生日期的 `dob` 欄位,則不能處於 2NF。該列值僅依賴於 `author` 的值,如果值不同步,可能導致不一致。
- 3NF
- 3NF,即第三正規化,描述了一種資料庫規範化型別,它:1) 滿足 2NF 的要求,2) 每個非主鍵屬性都不傳遞依賴於主鍵屬性。例如,如果一個 `user` 表以 `user_id` 列作為主鍵,並有 `user_city` 列和 `user_state` 列,它將不符合 3NF,因為 `user_state` 透過 `user_city` 傳遞依賴於 `user_id`(城市和州應被提取到它們自己的表中並一起引用)。
- 4NF
- 4NF,即第四正規化,描述了一種資料庫規範化型別,它:1) 滿足 BCNF 的要求,2) 對於每一個非平凡的多值依賴,該依賴中的決定屬性要麼是候選鍵,要麼是它的超集。換句話說,如果一個欄位有多個相互獨立的依賴欄位,它可能導致違反 4NF 規則的冗餘。
- ACID
- ACID——由原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)這些詞的首字母組成——描述了資料庫事務旨在提供的一組特性。原子性保證事務中的所有操作要麼全部成功完成,要麼全部回滾。一致性,通常被認為是應用程式而不是資料庫維護的屬性,通常透過事務來實現,以確保所有相關值同時更新。事務隔離旨在允許併發事務獨立執行。永續性意味著事務在提交時應儲存在非易失性儲存器上。
- 訪問控制列表 (ACL)
- 訪問控制列表,通常縮寫為 ACL,是一個安全策略列表,它規定了每個使用者或程序可以對哪些資源執行哪些操作。ACL 有許多不同型別,但它們都描述了系統允許的許可權和訪問模式。
- Active Record ORM
- Active Record ORM 是一種物件關係對映器,其工作原理是嘗試將資料庫中的每個表表示為應用程式中的一個類。表中的每個記錄都表示為該類的一個例項。透過與應用程式中的這些表示進行互動來新增和管理資料庫條目。
- 反快取
- 反快取是一種策略,當在更快的記憶體快取中找不到資料時,必須從較慢的持久儲存中檢索資料時可以使用。該技術涉及中止事務並啟動非同步操作以將資料從較慢的介質獲取到記憶體。事務可以稍後重試,並且資訊將準備好從記憶體中提供。
- 原子性
- 原子性是主要與資料庫事務相關聯的質量,這意味著事務中封裝的操作以“全有或全無”的方式處理。這可以防止在錯誤條件發生之前執行部分操作,從而導致資料不一致。在事務的情況下,要麼所有操作都提交,要麼所有操作都回滾,以使資料庫保持在事務開始時的相同狀態。
- 屬性
- 屬性是描述資料庫中某個實體的特徵。在 ER(實體關係)模型中,屬性是任何不屬於關係但為實體新增資訊的額外屬性。
- 認證
- 認證是驗證身份的行為。在計算和資料庫中,認證主要用於證明請求訪問的人或程序具有驗證其可以以特定身份操作的憑據。實際上,這可能包括提供身份(如使用者名稱)和相關的認證材料(如密碼、證書或金鑰檔案,或由屬於該身份相關人員的硬體裝置生成的秘密)。認證與授權結合使用,以確定使用者是否具有在系統上執行操作的許可權。
- 授權是確定某個使用者或程序是否應被允許執行某個操作的行為。授權涉及根據一組描述誰應該被允許執行哪些操作的指導方針來檢查所請求的操作。授權通常依賴於在請求之前進行可信的認證過程,以確認主體的身份。
- 可用性
- 可用性是描述系統執行程度和執行工作能力的屬性。就資料庫等計算系統而言,對於單臺機器,可用性與該計算機上應用程式的正常執行時間是同義的。對於分散式系統,可用性受規則的約束,這些規則規定了當系統的一部分不可用時,系統可以以何種能力繼續執行。
- BASE
- BASE——由基本上可用(Basically Available)、軟狀態(Soft-state)和最終一致性(Eventually consistent)這些詞的首字母組成——描述了某些 NoSQL 資料庫的一組特性。它被用作某些不符合 ACID 合規性(原子性、一致性、隔離性和永續性)所描述屬性的資料庫的描述。BASE 資料庫選擇在網路分割槽的情況下,以犧牲嚴格的資料一致性為代價來保持可用性。軟狀態元件指的是系統狀態可能處於波動中,因為不同的成員協商系統中最正確的值。最終一致性是另一個相關的陳述,表明系統最終會達到一致性,只要有足夠的時間並且假設在此期間沒有引入新的不一致性。
- BCNF
- BCNF,即 Boyce-Codd 正規化,描述了一種資料庫規範化型別,它:1) 滿足 3NF 的要求,2) 每次依賴中的決定屬性(決定另一個屬性值的屬性)是依賴屬性的_超集_,或者是候選鍵,或者是候選鍵的超集。
- 藍綠部署
- 藍綠部署是一種部署軟體更新的技術,透過管理兩個相同基礎設施集之間的活躍流量,實現極少甚至沒有停機時間。新版本可以部署到非活躍的基礎設施組中並獨立測試。要釋出新版本,流量路由機制會切換,將流量從當前基礎設施導向具有新版本的基礎設施。以前活躍的基礎設施現在作為下一次更新的目標。這種策略的優點在於路由機制可以輕鬆地來回切換,根據部署的成功與否進行回滾或向前推進。
- 瓶頸
- 在計算中,當系統的效能或容量受到單個元件爭用的限制時,就會發生瓶頸。在資料庫中,這可能與資料庫執行的硬體或可用的網路環境有關。應用程式使用模式也可能影響哪個資源最受爭用。要解決瓶頸,您必須首先識別限制系統性能的資源,然後增加額外容量或採取措施減少使用率。
- CAP 定理
- CAP 定理是關於分散式資料庫的一個陳述,它指出任何系統最多隻能提供以下三種質量中的兩種:一致性(Consistency)、可用性(Availability)和分割槽容錯性(Partition tolerance)。通常認為,分割槽容錯性必須是任何分散式系統的一個特性(因為避免所有網路分割槽的唯一方法是擁有一個非分散式系統)。因此,每個分散式系統都必須做出選擇,是優先考慮資料一致性(在發生分割槽時拒絕接受新更改)還是系統可用性(為了能夠在分割槽期間引入新更改而犧牲一些一致性)。
- CRUD
- CRUD——代表建立(Create)、讀取(Read)、更新(Update)和刪除(Delete)的首字母縮寫——描述了操作儲存資料的基本操作。在 SQL 中,CRUD 的元件大致對應於 `INSERT`、`SELECT`、`UPDATE` 和 `DELETE` 操作,但許多其他操作可以促進更精細的動作。更一般地說,CRUD 也常在使用者介面和 API 的上下文中被討論,作為系統可能允許的操作型別的描述。
- 快取
- 快取是系統的一個元件,旨在更快地檢索高價值或頻繁請求的資料片段。通常,快取透過將有用資料的一部分儲存在效能更高或更接近客戶端的介質上,而不是專注於長期非易失性儲存的通用持久介質。通常,快取往往效能更高,但容量更有限,成本也更高。
- 旁路快取
- 旁路快取是一種快取架構,它將快取放置在應用程式和資料庫之間的常規路徑之外。在這種安排下,如果資料在快取中可用,應用程式將從快取中獲取資料。如果資料不在快取中,應用程式將向原始資料來源發出單獨的查詢以獲取資料,然後將該資料寫入快取以供後續查詢。快取和後端資料來源之間的最小交叉使這種架構能夠抵禦快取不可用的情況。旁路快取非常適合讀寫密集型工作負載。
- 快取失效
- 快取失效是指定並從快取中刪除特定專案的過程。最常見的情況是,在更新記錄時作為例行程式的一部分執行此操作,以便快取中的資料不會向客戶端提供過期資料。
- 金絲雀釋出
- 金絲雀釋出描述了一種釋出策略,其中軟體的新版本被部署到一小部分伺服器上,以在影響有限的環境中測試新的更改。觀察測試組的部署和結果行為,團隊可以決定是回滾更改還是繼續將更改部署到更廣泛的主機範圍。金絲雀釋出是一種在生產環境中進行測試的方法,同時限制了受任何問題影響的客戶端數量。
- 候選鍵
- 關係資料庫中的候選鍵是最小超鍵的術語。換句話說,候選鍵是任何可以用來唯一標識關係中每個記錄的列或列組合,且不包含對特異性沒有幫助的列。在 `cars` 表中,唯一的 `car_id` 列將是一個候選鍵,`make`、`model` 和 `year` 列的組合也將是一個候選鍵(假設這足夠具體以消除任何重複)。然而,`car_id` 和 `make` 則不是候選鍵,因為在這種情況下,`make` 對縮小每行的唯一性沒有任何幫助。
- 級聯
- 在關係型資料庫中,級聯是一種處理與父表有相關聯條目的子表記錄刪除或更新的選項。級聯意味著操作(刪除或更新)也應應用於子行、依賴行。這有助於在刪除情況下避免孤立行,在更新情況下避免值不同步。
- Cassandra
- Apache Cassandra 是一個分散式、寬列 NoSQL 資料庫,專注於操作和管理大量資料。Cassandra 具有出色的可擴充套件性,叢集中的每個節點都可以接受讀寫操作。資料以行形式儲存,每行都具有唯一識別符號,並基於分割槽鍵進行分割槽。每個分割槽鍵返回一行資料,其中包含內部定義的列名和值,這意味著同一列族中的每行可能包含不同的列。
- 檢查約束
- 檢查約束可能是新增到關係資料庫中最靈活的表或列約束。它被定義為一個布林條件,提出的資料必須滿足該條件才能被系統接受。由於條件的性質相當開放,檢查約束可以用於建模許多不同型別的需求,以確保進入系統的資料符合預期。
- 叢集
- 在計算中,叢集是一組計算機,它們都致力於協助完成一個共享任務。與部署在單臺計算機上的資料庫相比,資料庫叢集用於提高某些型別操作的容量、可用性和效能。不同的集群系統採用許多不同的拓撲、技術和權衡,以實現不同級別的效能或容錯能力。由於不同實現的 çeşitlilik,很難概括適用於所有叢集資料庫系統的特定特性。
- 排序規則
- 資料庫中的排序規則指的是不同字元系統的排序和比較特性。大多數資料庫允許您分配排序規則設定,這會影響系統中文字的排序、顯示和相互比較方式。排序規則通常使用一組標籤來定義,這些標籤描述了字元集、語言環境以及關於大小寫、重音和其他字元修飾符的敏感性或不敏感性的不同選項。
- 集合
- 在文件資料庫中,集合是用於儲存一組文件的容器。集合可以由應用程式和資料庫設計人員分配語義含義,但除此之外,它們只是在系統中將不同集合的文件相互分隔開的一種方式。不同的集合可以被分配不同的屬性,並且可以對特定文件集合執行操作。
- 列
- 列是面向表資料庫的一個元件,它標記並可能定義儲存在該列中每個值的型別。在傳統關係資料庫中,一系列列的屬性是定義表一般屬性的主要方式之一。新增到表中的每行都必須提供符合與表列相關聯的要求的值。在非關係資料庫中,列可以具有許多不同的屬性。然而,通常,它們用於標記和定義記錄選擇儲存在該列中的值的特性。
- 列式資料庫
- 列式資料庫或面向列的資料庫是一種面向表的資料庫,類似於傳統關係資料庫,但它在後臺按列而不是按記錄儲存資料。這意味著與單個列關聯的資料儲存在一起,而不是將與單個記錄關聯的所有資料分組。根據使用模式,這可以提供不同的效能特徵,但通常不影響使用者日常與表中資料的互動。儘管在文獻中經常混淆,但列式資料庫不應與寬列資料庫或列族資料庫混淆。
- 列族
- 列族是一種資料庫物件,它儲存鍵值對組,其中每個鍵都是行識別符號,每個值都是列名和值組。總而言之,列族構建了一個類似於關係資料庫中表的結構。然而,每行都可以定義自己的列,這意味著行的長度不同,並且在表示的列或儲存的資料型別方面不必相互匹配。
- 命令查詢職責分離
- 命令查詢職責分離是一種應用程式設計模式,它允許您根據操作對底層資料庫的影響來分離操作。通常,這意味著為讀取資料的查詢和更改資料的查詢提供不同的機制。分離這兩個上下文允許您進行基礎設施和系統更改,以獨立擴充套件每個用例,從而提高效能。
- 提交
- 在資料庫上下文中,提交資料是執行並持久儲存一組提議操作的過程。許多資料庫配置為在系統收到每個語句時自動提交,但事務是其中一種機制,您可以透過將多個語句組合在一起並作為一個組提交來控制資料庫的提交行為。資料庫中的提交是實際負責在系統上執行永久操作的行為。
- 複合鍵
- 在關係型資料庫中,複合鍵是由兩個或更多列組成的鍵,可用於唯一標識表中的任何記錄。例如,如果有一個 `shirts` 表,它只儲存每種尺寸和顏色組合的單個記錄,那麼可以使用 `color` 和 `size` 列的組合來定義複合鍵。
- 併發性
- 併發性是指系統能夠同時處理多個任務而不影響整體結果的能力。併發性允許系統並行執行操作,從而提高任務組的相對效能。
- 連線池
- 連線池是一種用於提高效能和避免連線耗盡的策略,透過管理應用程式和資料庫之間的連線。它透過維護一個數據庫連線池來實現這一點。透過保持連線開啟並將其用於多個查詢,應用程式可以避免每次建立連線的開銷,並且資料庫的連線限制可以透過連線池元件進行管理。
- 一致性
- 一致性是資料系統的一個屬性,意味著各個資料實體不衝突,並且即使引入了更改,也繼續建模它們旨在表達的資訊。每個資料片段和更改都必須經過驗證,以確保其符合資料結構所施加的規則,並且必須注意平衡任何可能影響其他資料的更改(例如同時借記和貸記不同的賬戶)。
- 約束
- 約束是對特定列或表施加的限制,影響系統接受的值範圍。約束用於定義資料庫系統可以強制執行的規則,以確保值符合要求。
- 遊標
- 資料庫遊標是客戶端以受控、精確的方式迭代記錄和查詢結果的一種方式。遊標主要用於透過迭代返回下一行進行處理,逐個分頁顯示與查詢匹配的結果。這可以幫助您透過將結果作為佇列訪問來操作未知數量的記錄。使用遊標時必須小心,因為它們會佔用資料庫系統資源,可能導致鎖定,並且通常會導致比其他方式所需更多的網路往返。
- 暗啟動
- 暗啟動是一種部署和釋出策略,有助於組織在生產環境中測試新更改,而不會影響使用者體驗。暗啟動涉及將新程式碼與原有功能並行釋出。然後請求和操作會被映象,並針對舊程式碼和新程式碼同時執行。雖然從使用者的角度來看,系統的行為只受原有程式碼影響,但新程式碼可以使用真實資料進行測試,以驗證功能並捕獲效能和功能問題。在經過適當驗證後,應用程式可以更改為獨佔使用新程式碼路徑。
- 資料
- 廣義上講,資料是事實或資訊片段。它們是包含有關某事資訊的測量值或值。在某些語境中,資料被定義為與資訊不同,因為資訊是經過分析或處理的資料,而資料僅由原始值組成。然而,實際上,這些術語通常被用作同義詞,並且通常包含任何事實以及解釋或上下文化它所需的上下文。資料是幾乎所有通訊和活動的基本組成部分,並且它可以在被收集、分析和上下文化時獲得意義和價值。
- 資料定義語言 (DDL)
- 資料定義語言,或 DDL,是一組用於定義資料庫結構和物件的命令或操作。它們是關係型資料庫和其他資料庫的關鍵組成部分,並表示為管理 SQL 等語言中資料的可用命令的子集。資料定義語言是該語言中專門用於描述、建立和修改結構以及將儲存資料的框架的部分。
- 資料獨立性
- 資料獨立性是描述資料庫客戶端或應用程式與負責表示和儲存資料的底層結構分離的術語。如果資料庫能夠以一種方式抽象結構,即使向關係新增額外屬性(邏輯獨立性)或儲存介質的詳細資訊發生變化(物理獨立性),使用者應用程式也能繼續執行,則實現了資料獨立性。
- 資料對映器 ORM
- 資料對映器 ORM,或簡稱資料對映器,是一個應用程式元件,它充當資料庫表示和應用程式中存在的資料結構之間的中介。資料對映器允許您的應用程式邏輯和資料庫資料表示保持獨立。資料對映器管理並轉換這兩種介質之間的資料,以便每個表示都是獨立的並且可以智慧地構造。
- 資料型別
- 資料型別是一種類別或屬性,它對有效值施加約束。例如,整數型別指定只有整數才適合變數或欄位,並且是預期的。資料型別允許您在定義欄位或容器時指定對資料的期望和要求。然後,程式語言或應用程式可以驗證引入的資料是否滿足必要的標準。資料型別還有助於確定可以對資料片段執行的可用操作。
- 資料庫
- 資料庫是一種用於組織、結構化和儲存資料的結構。資料庫通常由資料庫管理系統管理,該系統提供了一個介面來操縱和與資料庫及其管理的資料進行互動。資料庫可以是高度結構化的,也可以允許更靈活的資料儲存模式,並且可以以允許在檢索時查詢、召回和組合資料的方式儲存許多不同型別的資料。
- 資料庫抽象層
- 資料庫抽象層是一個程式設計介面,它試圖抽象底層資料庫技術之間的差異,為應用程式層提供統一的體驗或介面。資料庫抽象層通常對開發人員很有幫助,因為它們有助於標準化各種產品之間的實現差異,並且即使底層技術不斷發展也能保持穩定。然而,也存在一些挑戰,例如抽象洩露、向用戶隱藏特定於實現的特性或最佳化,以及建立難以擺脫的依賴。202
- 資料庫管理員 (DBA)
- 資料庫管理員,或 DBA,是一個負責配置、管理和最佳化資料庫系統以及相關的軟體和硬體生態系統的角色。他們可能涉及的一些職責包括架構規劃、配置、模式和變更管理、遷移、複製和負載均衡、分片、安全考慮、管理備份策略等等。資料庫管理員通常被期望在資料庫設計和理論方面擁有專業知識,並能夠幫助組織做出有關資料庫技術選擇和實施的決策。在許多現代組織中,DBA 傳統上承擔的職責現在分佈在開發和運維團隊的各個成員之間,或者已外包給外部提供商,以簡化該工作的某些基礎設施管理部分。
- 資料庫引擎
- 資料庫引擎是資料庫管理系統的一部分,負責定義資料的儲存和檢索方式,以及與系統和資料互動所支援的操作。有些資料庫管理系統支援提供不同功能和設計的多個數據庫引擎,而其他系統則只支援一個經過設計以符合軟體目標的資料庫引擎。
- 資料庫管理系統 (DBMS)
- 資料庫管理系統,通常稱為 DBMS,甚至簡稱為“資料庫”,是一種負責組織和管理資料的應用程式。DBMS 可以遵循許多不同的正規化並優先考慮某些目標。通常,它們至少負責持久化資料、組織和分類資料,以及攝取、操作和查詢資料。最常見的是,DBMS 提供客戶端/伺服器模型,其中伺服器負責控制和管理資料,而客戶端、庫或 API 可用於與伺服器互動以新增或查詢資料、更改資料結構或管理系統的其他方面。
- 資料庫模型
- 資料庫模型是資料庫管理系統用於儲存、組織和提供資料訪問的總體策略。有許多不同的資料庫模型可用,但關係模型使用高度結構化的表以特定格式儲存資料,可能是最常見的型別。其他型別的資料庫包括文件資料庫、寬列資料庫、層次資料庫、鍵值儲存等等。一些資料庫系統被設計為“多模型”,這意味著它們支援在同一系統內執行不同型別模型的資料庫。
- 資料庫代理
- 資料庫代理是負責管理資料庫客戶端和資料庫伺服器之間連線的軟體元件。資料庫代理用於多種原因,包括組織對有限數量連線的訪問、允許資料庫層的透明擴充套件以及重定向部署和類似場景的流量。資料庫代理通常設計為對應用程式透明,這意味著應用程式可以連線到代理,就像它們直接連線到後端資料庫一樣。
- 資料集
- 資料集,有時拼寫為 data set,是資料的單一集合。通常,這代表了一塊適用於特定任務、應用程式或關注領域的關聯資料。通常,資料集是資料本身以及解釋它所需的結構和上下文的組合。它們通常由定量和定性值的組合組成,可以作為進一步分析和解釋的原始資料。
- 反規範化
- 反規範化是一個將資料庫內的資料和結構“反規範化”或使其脫離規範化狀態的過程。如果旨在規範化的資料結構定義不佳或管理不當,可能會意外發生這種情況。然而,在某些情況下,它也常常被有意執行。反規範化傾向於透過將值冗餘地儲存在不同位置來允許更快地訪問資料。這樣做的缺點是寫入效能會受到影響,並且由於使用多個位置來表示相同的資料,資料可能會不同步。
- 髒讀
- 髒讀是一種特殊的異常型別,可能發生在一個事務讀取了另一個事務尚未提交的資料。如果第二個事務回滾而不是提交,第一個事務將使用一個不反映資料庫實際狀態的值。髒讀在某些事務隔離級別下是可能的,並且在並行操作資料時可能導致不一致。
- 分散式資料庫
- 分散式資料庫是跨越多個物理系統的資料庫系統。資料分散在多臺機器上,以實現效能或可用性。雖然分散式系統有助於擴充套件資料庫以處理更多負載,但它們也顯著增加了複雜性,可能導致一致性和分割槽挑戰,以及某些負面性能影響,例如在某些情況下資料寫入的增加。
- 文件
- 在文件資料庫的上下文中,文件被認為是表示單個記錄或包含相關描述性資訊的物件的容器。文件可以具有靈活的結構,不必與系統上的其他文件匹配,並且通常可以巢狀。文件通常以 JSON 或 YAML 等資料序列化格式表示,這些格式可以使用標籤和元資料組織文件。
- 文件資料庫
- 文件資料庫是一種資料庫模型,它將專案表示為稱為文件的單個物件。雖然文件可以分組以進行組織,但它們不必共享相同的結構,並且可以設計成獨特地捕獲描述所討論專案所需的資料。文件資料庫通常不支援強大的連線操作來連結不同的文件,但通常因其靈活性以及易於表示程式設計資料結構而備受讚譽,從而縮短了生產時間。
- 永續性
- 永續性是資料的一種品質,表示它已捕獲到即使程式崩潰也能存活的持久儲存上。通常,這意味著將資料重新整理到非易失性儲存介質,例如不需要電力來維持狀態的硬碟。
- 編碼
- 編碼是一種系統,用於在可以表示書面語言中使用的元件的字元系統和計算機可以儲存和操作的數字表示之間進行轉換。已經開發出具有各種字元範圍的不同編碼系統。有些針對特定語言或語言家族(如 ASCII),而另一些則試圖為適用於許多語言的更大字元集提供表示(如 UTF Unicode 變體)。
- 加密傳輸
- 加密傳輸是指在傳送訊息給接收方之前對訊息進行加密的任何型別的通訊過程。傳輸加密是必要的,以確保隱私(防止他人看到敏感資訊)以及避免篡改(使資料操作顯而易見)。部署資料庫時可以使用許多不同的加密傳輸系統,包括 TLS/SSL 加密、VPN 和專用網路。
- 瞬時性
- 瞬時性是一種特性,表示資料或情況不是永久的。在許多方面,它與永續性相反。在資料庫中,某些專案,例如您希望持久化的資料,不應是瞬時的。然而,其他元件,例如用於加密資料庫和客戶端之間連線的金鑰,可以透過防止金鑰洩露影響未來或過去的會話而受益於瞬時性。
- 臨時儲存
- 臨時儲存,有時也稱為易失性或非永續性儲存,是指任何持續時間短的儲存介質,通常與特定條件相關聯。例如,在應用程式中,儲存在記憶體中的資料僅在程序執行時才存在。類似地,儲存到臨時目錄的資料僅在系統重新啟動之前可用。通常,臨時儲存對於臨時資料或作為資料可以儲存在更永久介質上的暫存區域很有用。
- 最終一致性
- 最終一致性是某些分散式計算或資料庫系統實現的一致性/可用性策略的描述。分散式系統的 CAP 定理指出,系統在面對網路分割槽時必須選擇是優先考慮可用性還是資料一致性。最終一致性系統選擇偏愛可用性,即使伺服器的對等節點不可用以確認操作,也繼續提供請求。最終,當分割槽解決時,將執行一致性例程以決定任何不一致資料的最正確狀態,但在一段時間內,不同伺服器上的資料將不一致。
- 逐出
- 在快取的上下文中,逐出是將資料從快取中刪除的過程。這可能因為當前值被某個操作 invalidated 而發生,也可能由於旨在刪除最舊或最少使用資料的策略而自動發生。
- 擴充套件和收縮模式
- 擴充套件和收縮模式是一種在不影響現有應用程式的情況下引入資料庫模式新更改的策略。它透過分階段、精心控制地引入更改來實現,首先新增新的或更改的結構與現有結構並行,然後擴充套件應用程式邏輯以同時使用這兩種結構。最終,經過測試後,應用程式可以停止寫入原始結構,並且可以將其刪除。
- 抽取-轉換-載入 (ETL)
- 抽取、轉換和載入,通常縮寫為 ETL,是將資料從資料來源複製和處理到受管系統的過程。首先從當前系統抽取資料,使其可供目標系統訪問。接下來,對資料進行操作和修改,以匹配新系統的要求和格式。最後,將重構的資料載入到新系統中。
- 功能標誌
- 功能標誌,或功能切換,是一種程式設計策略,它涉及透過外部開關或控制來控制功能。開關通常首先設定為指示功能不應處於活動狀態。當組織準備就緒時,他們可以啟用開關,程式將開始使用其新功能。這允許在不立即啟用新功能的情況下部署新功能。它將新軟體的部署與軟體的釋出解耦,從而更好地控制更改的引入方式,並在生產環境中進行更充分的測試。
- 欄位
- 資料庫列或欄位是資料庫表中特定型別資料的容器。關係型資料庫中的資料庫欄位是規則的,因為表中的每一行都將包含相同數量的具有相同特徵的欄位。資料庫欄位可以包含的值可以透過分配給該欄位的資料型別以及進一步限制有效值的約束來控制。
- 平面檔案資料庫
- 平面檔案資料庫是一種儲存在檔案中的資料庫或類資料庫結構。這些檔案以統一的格式定義了資料庫的結構和資料。許多平面檔案資料庫的例子,如 CSV(逗號分隔值)檔案,都是以純文字形式編寫的,但也存在二進位制格式。平面檔案資料庫與更復雜型別的一個區別在於,儲存格式本身通常負責描述資料之間的關係,而不是資料庫系統。
- 外部索引鍵
- 外部索引鍵是關係資料庫中指定的一列或一組列,用於維護兩個表之間的資料完整性。一個表中的外部索引鍵引用另一個表中的候選鍵,通常是主鍵。由於引用的是候選鍵,因此資料庫中的每一行都將是唯一的,並且兩個表可以逐行連結在一起。這些指定列的值預計在兩個表中保持相同。外部索引鍵約束允許資料庫系統強制執行此要求,不允許值不同步。
- 全文搜尋
- 全文搜尋描述了一系列技術和功能,允許您在資料庫系統中搜索文件的完整文字。這與僅依賴元資料、部分文字源和其他不完整評估的搜尋功能直接相反。全文搜尋依賴於使用自然語言感知解析器進行非同步索引,以分析和分類文件中的文字。
- 圖資料庫
- 圖資料庫是一種 NoSQL 資料庫,它使用圖結構來儲存和定義資料之間的關係。圖資料庫由節點構建,節點表示實體並可以包含屬性。節點之間透過邊連線,邊不僅負責連線節點,還定義關係的性質。例如,一個節點可能描述一個人,其屬性為“教師”。它可能透過一條名為“教授”的邊連線到班級節點,但可能透過一條名為“結婚”的邊連線到另一個人節點。
- GraphQL
- GraphQL 是一種可用於查詢和操作資料的語言,通常用於構建 API。客戶端能夠指定所需的確切資料,伺服器則根據提供的結構生成響應。GraphQL 的優勢在於它能夠使用自定義結構返回資料,將來自不同後端的資料拼接在一起,以及在單個 API 呼叫中回答複雜的查詢。
- HTAP 資料庫
- HTAP 資料庫,即混合事務/分析資料庫,是一類資料庫,旨在提供快速、可靠的事務處理的優勢,以及在同一臺機器上併發處理繁重、複雜的分析工作負載的能力。這些資料庫產品並非在事後分析資料,而是試圖允許即時分析,從而可以快速影響決策方式。
- 層次資料庫
- 層次資料庫是一種將自身組織成樹狀結構的資料庫模型。每個新記錄都附加到一個父記錄。隨著記錄新增到資料庫中,樹狀結構出現,記錄從根記錄越來越多地扇出。記錄之間的連結可以遍歷以到達其他記錄。使用層次模型的系統示例包括 LDAP(輕量級目錄訪問協議)和 DNS(域名系統)。
- 水平擴充套件
- 水平擴充套件,也稱為向外擴充套件,是一種擴充套件策略,涉及增加可以執行給定任務的單元數量。這通常意味著增加可以響應請求的工人池中的計算機數量。向外擴充套件具有許多優點,包括成本、靈活性以及可以處理的流量級別,但可能會增加協調和複雜性方面的複雜性,尤其是在涉及資料時。
- 熱備份
- 熱備份是指資料庫系統在活動使用期間進行的備份。如果可能,它們通常是首選,因為它們不需要資料庫系統離線執行操作。熱備份並非總是可能的,因為它們可能需要鎖定資料庫的某些部分,或者可能降低正常資料庫任務可用的 IOPS(每秒輸入/輸出操作)。
- 記憶體資料庫
- 記憶體資料庫是一種資料庫系統,其中整個資料集都可以載入到計算機記憶體中並進行處理。這種處理模型提供了巨大的效能優勢,因為所有資料都已在主記憶體中,並且從較慢的儲存中檢索資料沒有延遲。使用記憶體資料庫時必須小心,要有一個持久化資料或在機器重新啟動時重新填充記憶體資訊的策略。266
- 索引
- 資料庫索引是一種為在表中更快查詢記錄而建立的結構。索引允許資料庫系統透過為特定列的值維護單獨的結構來高效查詢資料。針對索引列的查詢可以透過使用比逐行檢查更高效的查詢策略來快速識別表中適用的行。索引列改進了讀取操作,但確實增加了寫入操作的開銷,因為表和索引都必須更新。在設計表索引時平衡這兩個考慮因素很重要。
- 資料攝取
- 資料攝取是將新資料匯入資料系統的行為。這可以是一次性資料載入操作,也可以是持續消耗由其他系統生成的資料。資料攝取是填充和更新分析資料庫和大資料儲存的常見階段,因為它們通常涉及整合來自各種來源的資料。
- 內連線
- 內連線是一種關係資料庫操作型別,它僅返回連線列值在兩個表中都存在的行來連線兩個表。使用內連線,兩個表中連線列必須匹配。沒有使用 `NULL` 值來填充一個表或另一個表中缺失的行。
- 互動式事務
- 互動式事務是一種資料庫事務功能,允許客戶端以臨時方式手動指定事務操作。事務不再是圍繞一組可以連續執行而無需暫停的查詢的包裝器,互動式事務允許開發人員短暫暫停其資料庫操作,以執行其他邏輯,然後再繼續事務處理。這為事務處理提供了靈活性,但如果管理不當,可能導致不必要的事務執行時間過長。
- 隔離性
- 在資料庫的上下文中,隔離性是一種屬性,描述資料和操作在事務內部和事務之間如何可見。隔離級別可以由資料庫管理員或查詢作者設定,以定義隔離級別和效能之間的權衡。隔離性是 ACID 首字母縮略詞描述的關鍵保證之一。
- 隔離級別
- 隔離級別描述了資料庫在處理事務時可以在隔離性和效能之間進行權衡的不同型別。隔離級別決定了事務之間可能發生的資料洩露型別或可能發生的資料異常。一般來說,更高的隔離級別提供更多的保證,但代價是處理速度更慢。
- 連線
- 在關係型資料庫中,連線是一種基於共享的“連線”列或多列連線兩個表的操作。連線列中的值必須在每個表中都是唯一的。連線操作根據連線列值匹配行,以建立由每個表的列組成的擴充套件虛擬行。根據使用者希望如何處理在另一個表中沒有匹配對應行的行,可以使用不同型別的連線。
- 鍵
- 在資料庫上下文中,鍵是指任何可以用於唯一標識單個行的一個或一組屬性或列。某些資料由於其天然的唯一性(自然鍵)可以被用作鍵,而其他資料集可能需要生成一個鍵來標識每個記錄(代理鍵)。每個表或資料集合可以有多個唯一標識行的鍵(稱為候選鍵),但通常,有一個主鍵(稱為主鍵)被指定為訪問行的主要方式。
- 鍵值資料庫
- 鍵值資料庫,或鍵值儲存,是一種資料庫模型,允許使用者使用鍵儲存和檢索具有任意結構的資料。鍵用於識別和訪問記錄,記錄可以由單個值或更復雜的資料結構組成。鍵值資料庫中的每個記錄都可以定義自己的結構,因此不像關係資料庫那樣具有統一的表結構。鍵值資料庫很有用,因為它們非常靈活,並且使用許多面向物件開發人員熟悉的模型。
- 左連線
- 左連線是關係型資料庫的一種連線操作,它返回第一個表中所有行,無論是否在第二個表中找到匹配的行。連線操作透過匹配在每個表中指定比較列中具有相同值的記錄來構造虛擬行。左連線的結果將包含兩個表中列值匹配的行,並額外包含來自第一個(或左)表的所有不匹配行。對於這些行,與第二個(或右)表關聯的列將用 `NULL` 值填充,以指示未找到匹配行。
- 詞素
- 詞素是語言層面的意義單位,在自然語言處理和全文搜尋上下文中具有相關性。通常,當文字被索引時,它被分解成單獨的標記,然後使用詞典、同義詞庫和其他詞表等語言層面的資源將其作為詞素進行分析,以瞭解如何進一步處理它們。
- 區域設定
- 在資料庫和一般計算中,區域設定指定了在執行操作和渲染結果時應使用的區域、語言、國家/地區和其他上下文資料。在資料庫中,區域設定可以影響列排序、值之間的比較、拼寫、貨幣識別符號、日期和時間格式等。在資料庫伺服器級別定義正確的區域設定或在資料庫會話期間請求所需的區域設定對於確保執行的操作將產生預期結果至關重要。
- 鎖
- 在資料庫中,鎖是一種用於在某些操作期間防止修改資料庫記錄或表以保持一致性的技術。鎖可以阻止對鎖定資源的任何訪問,或者只阻止執行某些操作。它們可以針對特定記錄或整個表發出。因為鎖會阻止併發操作訪問鎖定的資料,所以鎖定的資料可能會影響效能並導致資源爭用。
- MariaDB
- MariaDB 是一個開源關係資料庫系統,其開發目標是為 MySQL 提供一個直接替代品,因為 Oracle 的收購讓社群中的一些人對該專案的未來方向感到不確定。自最初的分支以來,每個專案都增加了功能,擴大了兩個資料庫系統之間的差距。
- 微服務架構
- 微服務架構是一種應用程式和服務設計,它影響元件的開發、部署和操作。微服務方法將應用程式的功能分解,並將每個職責實現為獨立的服務。服務不是透過內部函式呼叫進行通訊,而是透過網路使用明確定義的介面進行通訊。微服務通常用於幫助加快開發速度,因為每個元件都可以獨立編碼和迭代。它還有助於可伸縮性,因為每個服務都可以根據需要進行擴充套件,通常藉助服務編排軟體。
- 遷移(資料庫,模式)
- 資料庫或模式遷移是用於將資料庫結構轉換為新設計的流程。這涉及修改資料庫或表的現有模式的操作,以及轉換任何現有資料以適應新結構。資料庫遷移通常是基於彼此構建的,並作為有序列表儲存在版本控制中,以便可以透過順序應用遷移檔案從任何先前版本構建當前資料庫結構。通常,開發人員必須決定如何最好地修改現有資料以適應新結構,這可能包括以前不存在的列或難以輕鬆逆轉的資料更改。
- MongoDB
- MongoDB 是當今最流行的面向文件的 NoSQL 資料庫系統。它使用 JSON 類似結構儲存資料,這些結構可以在資料儲存時指定。每個文件都可以擁有自己的結構,複雜程度可高可低。MongoDB 提供非 SQL 方法和命令,以程式設計方式或互動方式管理和查詢資料。MongoDB 以其快速的效能、可伸縮性以及支援快速開發週期而聞名。
- 單體架構
- 單體架構(Monolithic architecture)是一個用於指代傳統應用程式的術語。在單體應用中,儘管不同的部分可能為了便於開發而在內部進行了拆分,但一旦構建完成,整個應用程式就是一個單一的實體,具有許多不同的功能和職責。單體應用可以透過多種方式與外部世界互動,但程式內部不同功能之間的通訊和協調都在內部進行。單體架構有時被認為更容易實現,但它在擴充套件性和可用性方面存在侷限性,因為整個應用程式必須作為一個單一單元進行擴充套件和縮減。
- 多版本併發控制(MVCC)
- 多版本併發控制(MVCC)是一種允許資料庫系統併發訪問資料的策略,作為行和表鎖定的替代方案。MVCC透過為每個訪問一組資料的使用者建立表示一致資料狀態的“快照”來工作。MVCC的目標是提供一個系統,其中讀查詢永遠不會阻塞寫查詢,寫查詢也永遠不會阻塞讀查詢。每個客戶端都能夠像它是唯一的訪問者一樣讀取和使用資料,而資料庫系統則跟蹤每個使用者正在讀取和更新的資料的多個版本。鎖定或常規的事務回滾和衝突管理策略用於解決因更新相同資料而引起的爭議。
- MySQL
- MySQL 是當今最流行的關係型資料庫系統之一。它於1995年首次釋出,並於2010年被Oracle收購。MySQL作為一款功能強大且易於使用的關係型系統,擁有悠久的歷史。它提供了多種儲存引擎,並擁有廣泛的社群支援。它被用於許多流行的開源和商業專案,多年來一直被認為是許多網際網路服務的關鍵軟體組成部分。
- Neo4j
- Neo4j 是一個高效能的圖資料庫系統。它提供ACID相容事務,採用圖資料結構,並使用Cypher查詢語言來管理和查詢儲存的資料。Neo4j 允許開發者輕鬆擴充套件圖資料工作負載,併為多種不同語言提供客戶端。
- 網路資料庫
- 網路資料庫是一種早期的資料庫模型,它構想的資料物件可以擁有比層次資料庫更復雜的關係。網路資料庫不將節點的連線限制為單個父節點和零個或多個子節點,而是允許你表示具有多個父節點的節點。這使得你可以表示更復雜的結構,但通常,該模型隨著關係型資料庫的引入而被取代。
- NewSQL
- NewSQL 是一類新型關係型資料庫產品的描述符,這些產品試圖彌合關係型資料庫系統的結構和良好排序保證與NoSQL資料庫相關聯的高效能和可擴充套件性之間的鴻溝。雖然NewSQL 是一個相當寬鬆的分類,但它通常指的是允許SQL或類似SQL查詢、事務保證以及靈活擴充套件和分散式處理的資料庫。
- NoSQL
- NoSQL 資料庫,有時也稱為非關係型資料庫或“不僅是SQL”資料庫,是一個廣泛的類別,涵蓋了所有偏離常見關係型資料庫模型的資料庫系統。雖然非關係型資料庫早已存在,但該類別通常指代使用替代模型(如鍵值、文件型、圖型和列族儲存)的新一代資料庫。它們通常用於管理不適合關係模型的,且高度注重靈活性和可擴充套件性的資料。
- 節點
- 在資料庫中,“節點”通常指資料庫的單個例項。當談論分散式資料庫的基礎設施架構時,其中多個伺服器可能參與處理請求,此時“節點”一詞經常被使用。
- 不可重複讀
- 不可重複讀是一種在特定事務隔離級別下可能出現的不必要的併發一致性問題。當事務內部重複的讀操作基於事務外部的提交而返回不同資料時,就會發生不可重複讀。這種隔離性破壞是某些事務隔離級別旨在防止的行為型別之一。
- 正規化化
- 資料庫正規化化是一個構造資料庫的過程,旨在消除資料冗餘並杜絕引入不一致性的可能性。正規化化通常以“正規化”的形式討論,每個正規化都在前一個正規化的基礎上增加額外的檢查和保證。在實踐中,資料正規化化通常是在資料完整性保證和效能之間進行權衡,因此結構通常不會達到最高級別的正規化化。
- OLAP 資料庫
- OLAP 資料庫(或線上分析處理資料庫)是一種主要設計用於分析和生成洞察的資料庫系統。用於OLAP的資料庫不需要與即時事務處理(OLTP資料庫)相同的效能特性。相反,它們通常設計用於攝取和處理大型資料集、執行復雜且長時間執行的查詢,以及生成報告、圖表和洞察,以幫助制定業務決策。
- OLTP 資料庫
- OLTP 資料庫(或線上事務處理資料庫)是一種主要設計用於促進快速、近乎即時的資料庫任務的資料庫系統。通常,OLTP 資料庫與多客戶端可能同時訪問資料且需要快速響應時間的應用程式一起使用。OLTP 資料庫針對可靠性和處理速度進行了最佳化。
- ORM
- ORM(或物件關係對映器)是一種資料庫工具,旨在在許多資料庫使用的關係模型和客戶端應用程式中使用的面向物件資料模型之間進行轉換。該工具提供了一種在程式碼中表示資料庫物件並將程式設計物件轉換為適合儲存在資料庫中的格式的方式。雖然ORM可以是有用的工具,但它們通常不是完美的抽象,並且可能導致不同模型在如何表示資料方面發生衝突的問題。
- 物件關係阻抗失配
- 物件關係阻抗失配是一個術語,用於描述許多資料庫使用的關係資料模型與許多應用程式中使用的面向物件資料檢視之間存在的普遍緊張關係。阻抗失配指的是兩種模型之間的差異,這些差異使得它們之間精確的轉換變得困難或不可能。它是一個廣義術語,用於指代該領域中可能出現的許多不同型別的問題,包括表示繼承、封裝、型別差異、不同的併發一致性保證等等問題。
- 樂觀併發控制
- 樂觀併發控制,有時簡稱為OCC,是資料庫系統用來處理衝突併發操作的策略。樂觀併發控制假設併發事務很可能不會相互干擾,並允許它們繼續執行。如果事務嘗試提交時發生衝突,它將在此時回滾。如果您認為工作負載中的大多數事務不會相互衝突,那麼OCC是一個有吸引力的策略。只有確實發生衝突的事務才會遭受效能損失(它們將被回滾並必須重新啟動),而所有非衝突事務都可以執行,而無需等待檢視是否會發生衝突。
- 外連線
- 外連線是一種關係型資料庫操作,它透過返回每個組成表中的所有行來連線兩個表,即使在另一個表中沒有匹配的記錄。連線操作透過匹配每個表中指定比較列中具有相同值的記錄來構造虛擬行。外連線的結果將包含兩個表中列值匹配的行,此外還將包含每個表中所有未匹配的行。對於這些行,在另一個表中沒有匹配的列將用`NULL`值填充,以指示未找到匹配的行。
- 引數化查詢
- 引數化查詢,也稱為預處理語句,是一種資料庫查詢,它將使用者輸入作為引數,而不是透過將字串與使用者輸入拼接。引數化查詢允許您提前指定查詢,包括未知輸入,然後稍後提供應在語句中替換的值。這可以防止SQL注入漏洞,在這種漏洞中,精心構造的輸入可能被用來使資料庫系統將值視為可執行的SQL程式碼,從而錯誤地解釋查詢。
- 永續性
- 永續性是資料的一種特性,表示資料的狀態將比建立它的程序更長壽。永續性是大多數資料庫系統的關鍵組成部分,允許在資料庫程序或伺服器本身重新啟動後再次載入資料。應用程式和資料庫可以具有不同級別的永續性,以防範不同型別的故障情況,例如單系統永續性、遠端永續性以及叢集永續性。
- 持久化儲存
- 持久化儲存是指在系統斷電或斷開連線後仍能保持資料的任何儲存介質。持久化儲存是維護更永久資料儲存庫所必需的。通常,持久化儲存比記憶體資料等瞬時儲存要慢,因此資料庫系統會根據需要使用各種程序在兩種儲存系統之間傳輸資料,以利用並平衡兩者的優缺點。
- 悲觀併發控制
- 悲觀併發控制,或PCC,是資料庫系統用於處理衝突併發操作的策略。與樂觀併發控制相反,悲觀併發控制在可能發生衝突時立即終止事務。如果頻繁發生衝突,此策略很有用,因為它確保系統不會浪費時間執行因衝突而無法提交的事務。相反,它在可能發生衝突時強制執行更序列化的執行方法,這種方法雖然較慢,但避免了非生產性處理。
- 幻讀
- 幻讀是一種隔離異常,在某些隔離級別下可能在事務中發生。當`SELECT`操作在事務期間返回不同行,原因是事務外部的更改時,就會發生幻讀。例如,如果您嘗試`SELECT`表中的所有記錄,第一次可能返回8行,但如果另一個事務提交了額外的一行,則重複原始查詢將顯示不同的結果。
- PostgreSQL
- PostgreSQL是一個流行的高效能關係型資料庫系統,以其符合各種SQL標準而聞名。PostgreSQL專注於提供一個單一、靈活的資料庫引擎,而不是為不同的用例提供多個引擎。它具有高度可擴充套件性,並擁有大量的社群附加功能和客戶端應用程式。
- 精確度(搜尋)
- 在搜尋效能方面,精確度衡量的是檢索到的結果與給定查詢的相關程度。具體來說,搜尋精確度定義為相關結果數量佔所有返回結果數量的比例。一個高精確度的查詢不會檢索到許多與查詢不相關的專案。
- 主鍵
- 主鍵是一種資料庫鍵,被指定為唯一標識資料庫行的主要方式。雖然其他鍵可能也能拉取單個行,但主鍵是專門為此目的標記的,系統會強制執行唯一性和非`NULL`一致性檢查。主鍵可以是自然鍵(在記錄中自然唯一的鍵)或代理鍵(專門為用作主鍵而新增的鍵),並且可以由單個或多個列組成。
- 查詢
- 在資料庫中,查詢是使用查詢語言向資料庫管理系統發出請求的格式化命令。資料庫系統處理查詢以瞭解要採取哪些操作以及要向客戶端返回哪些資料。通常,查詢用於請求與特定模式匹配的資料,將新資料插入現有結構,或修改和儲存對現有記錄的更改。除了針對資料項,查詢通常還可以操作表結構和伺服器設定等項,使其成為系統的通用管理介面。SQL(或結構化查詢語言)是關係型資料庫最常用的資料庫查詢語言。
- 查詢構建器
- 查詢構建器是應用程式開發中用於簡化資料庫程式設計的資料庫抽象。與ORM類似,查詢構建器提供了一個從應用程式內部操作資料庫系統的介面。然而,查詢構建器不試圖將應用程式物件直接對映到資料庫記錄,而是專注於提供與資料庫操作緊密對應的原生函式和方法。這允許您以比直接使用SQL(或其他資料庫語言)字串更安全、更靈活的方式以程式設計方式構建查詢。
- 查詢語言
- 查詢語言是一種專門用於在資料庫中搜索、檢索和操作資料的程式語言。SQL(或結構化查詢語言)是世界上最常用的查詢語言,主要用於管理關係型資料庫系統中的資料。查詢語言操作可以根據過程的重點和目標進行分類:當它們用於定義資料結構時,稱為資料定義語言(DDL);當它們用於系統管理任務時,稱為資料控制語言(DCL);當它們用於修改資料時,稱為資料操作語言(DML)。
- 查詢規劃器
- 查詢規劃器是資料庫系統的一個內部元件,負責將客戶端提供的查詢轉換為可用於實際搜尋資料庫並構造所需響應的步驟。設計良好的查詢規劃器可以考慮多種潛在解決方案,並選擇能夠提供最最佳化結果的選項。有時,查詢規劃器不會選擇最佳解決方案,資料庫管理員必須手動調整選擇標準。
- Raft共識演算法
- Raft共識演算法是一種旨在協調叢集節點間資訊共享、管理職責和故障恢復的演算法。該演算法提供了一種確保每個成員都同意資料操作的方法,幷包含了在網路分割槽或節點宕機情況下進行領導者選舉的機制。它通常被認為是比替代方案(如 Paxos)更簡單的實現演算法。.
- 讀已提交隔離級別
- 讀已提交隔離級別是關係型資料庫系統的一種事務隔離級別,提供最少量的隔離保證。在讀已提交級別下,事務保證沒有髒讀現象,即事務可以讀取其他尚未提交的事務資料。在此隔離級別下,不可重複讀、幻讀和序列化異常仍可能發生。
- 讀操作
- 讀操作通常定義為任何不修改資料而檢索資料的操作。讀操作通常應表現為底層資料是不可變的。它們可能會修改檢索到的資料以改變其格式、過濾或進行其他修改,但儲存在資料庫系統中的底層資料不會改變。
- 穿透讀快取
- 穿透讀快取是一種快取策略,其中快取部署在通往後端資料來源的路徑上。應用程式將所有讀查詢直接傳送到快取。如果快取包含請求的專案,則立即返回。如果快取請求未命中,快取會從後端資料庫獲取資料,以便將專案返回給客戶端並將其新增到快取中以供將來查詢。在這種架構中,應用程式會繼續將所有寫查詢直接傳送到後端資料庫。
- 讀未提交隔離級別
- 讀未提交隔離級別是關係型資料庫系統的一種事務隔離級別,它基本上不提供任何隔離。使用讀未提交隔離級別執行的事務可能會遇到髒讀、不可重複讀、幻讀和序列化異常。一般來說,讀未提交級別用處不大,因為它不滿足大多數使用者對隔離性的期望。
- 召回率
- 在搜尋效能方面,召回率衡量的是查詢能夠檢索到多少相關項。召回率具體定義為查詢返回的相關結果數量與資料集中相關條目總數之比。高召回率的查詢能夠檢索到大量可能與搜尋查詢相關的專案。
- 記錄
- 在資料庫中,記錄是通常代表單個實體的一組資料。在關係型資料庫中,記錄與表中的行是同義詞。每條記錄可能關聯有多個數據片段或屬性(在關係型表中,這些將是欄位)。
- Redis
- Redis 是一款流行的、高效能鍵值儲存,常被部署為快取、訊息佇列或配置儲存。Redis 主要是一個記憶體資料庫,但可以選擇將資料持久化到非易失性儲存中。它具有多種型別、靈活的部署選項和高可擴充套件性。
- 關係型資料庫
- 關係型資料庫是一種資料庫模型,它根據預定義的資料結構(稱為表)來組織資料項。表定義了具有特定約束和型別的各種列,並且每條記錄都作為行新增到表中。高度規則的資料結構的使用為關係型資料庫系統提供了多種方式來組合各種表中儲存的資料以回答單個查詢。關係型資料庫得名於代數關係,它描述了可用於操作規則資料的不同操作。在大多數情況下,關係型資料庫使用SQL(結構化查詢語言)與資料庫系統互動,因為它允許使用者以即席方式表達複雜的查詢。
- 關係型資料庫管理系統(RDBMS)
- 關係型資料庫管理系統,也稱為RDBMS,是管理關係型資料庫的資料庫軟體。在實踐中,RDBMS這個術語常常與關係型資料庫互換使用,儘管從技術上講,RDBMS管理一個或多個關係型資料庫。
- 可重複讀隔離級別
- 可重複讀隔離級別是關係型資料庫系統的一種事務隔離級別,它提供的隔離性優於讀已提交級別,但不如可序列化級別。在可重複讀隔離級別下,髒讀和不可重複讀都被阻止。然而,幻讀和序列化異常仍然可能發生。這意味著雖然單個記錄的讀取保證保持穩定,但範圍查詢(例如返回多行的`SELECT`語句)可能會由於事務外部的提交而發生變化。
- 複製
- 複製是將資料從一個系統持續複製和更新到另一個系統的過程。在資料庫中,這通常涉及一個伺服器共享變更日誌,其他伺服器可以讀取並將其應用到自己的資料副本上。這允許變更在各個伺服器之間傳播,而無需每個伺服器在執行時批准操作。存在多種型別的複製,它們在共享方式、系統複製資料的架構以及控制複製過程的策略方面有所不同。複製是許多系統中維護資料可用性、分發負載以及為備份等離線過程提供資料副本的重要功能。
- 右連線
- 右連線是一種關係型資料庫連線操作,其中返回指定為第二張表的所有行,無論在第一張表中是否找到匹配的行。連線操作透過匹配每個表中指定比較列中具有相同值的記錄來構造虛擬行。右連線的結果將包含兩個表中列值匹配的行,此外還將包含第二張表(或右表)中所有未匹配的行。對於這些行,與第一張表(或左表)關聯的列將用`NULL`值填充,以指示未找到匹配的行。
- 基於角色的訪問控制(RBAC)
- 基於角色的訪問控制,也稱為RBAC,是一種安全策略,它根據使用者的分配角色限制其允許的操作。物件許可權和執行操作的特權被分配給角色,這些標籤使管理訪問變得更容易。要將與角色關聯的功能授予使用者,可以將使用者設為該角色的成員。使用者可以成為多個角色的成員,以獲得每個角色提供的許可權的並集。角色作為標準化各種角色所需特權以及簡化新增或刪除使用者訪問許可權的方式非常有幫助。
- 行
- 在關係型資料庫中,行是資料庫表中單個記錄的表示。這些資料庫中的行具有預定義的結構,形式為列的集合,這些列指定了資料型別以及可接受值範圍的任何約束。關係型表中的每行都具有相同的列或欄位,從而形成非常規則的資料結構。
- 序列掃描
- 序列掃描是一種搜尋技術,它涉及在搜尋時逐個分析每個潛在專案與查詢的匹配情況。這與基於索引的搜尋相對,在基於索引的搜尋中,專案會提前被統計和組織,以便更快地響應查詢。
- SQL
- SQL,或結構化查詢語言,是當今最常用的資料庫查詢語言。它主要用於處理關係型資料,允許使用者建立查詢以選擇、過濾、定義和操作關係型資料庫中的資料。雖然SQL是一個通用標準,但實現細節差異很大,使其不如預期那樣與軟體無關。
- SQL 注入
- SQL注入是一種針對易受攻擊的、由SQL支援的應用程式的攻擊型別。它透過精心構造輸入來實現,這些輸入可以使資料庫系統將提交的值視為可執行的SQL程式碼,從而錯誤地解釋查詢。SQL注入主要由開發人員嘗試使用字串拼接將未淨化的使用者輸入與查詢字串結合而引起。可以透過使用預處理語句(也稱為引數化查詢)來防止它,在預處理語句中,帶有佔位符的查詢與替代值分開提交到資料庫,從而使查詢值的邊界明確無歧義。
- SQLite
- SQLite 是一個用C語言庫編寫的關係型管理資料庫系統。由於它以庫的形式實現,因此不符合傳統的客戶端/伺服器分離模型,而是依賴於庫或客戶端程式同時扮演這兩個角色來寫入本地檔案。它以其小巧的體積實現了極強的功能,特別適合嵌入式使用。SQLite 在許多不同的語言中都有繫結,並作為內部儲存系統廣泛部署在應用程式中。
- 淨化輸入
- 淨化輸入,也稱為輸入驗證,是一種用於使使用者提供的值安全地進行後續處理的過程。它用於防範惡意輸入,這些惡意輸入可能導致應用程式或資料庫將資料值誤解為有效的應用程式或查詢程式碼。輸入可以透過多種不同方式進行淨化,例如限制有效字元列表、刪除對所用系統具有特殊含義的字元以及轉義值。一般來說,與其淨化輸入,不如使用預處理語句被認為更安全。
- 擴充套件
- 擴充套件是指增加分配給應用程式或工作負載的資源,以獲得更好的效能或處理更多的併發活動。擴充套件策略通常分為兩類:向外擴充套件(也稱為水平擴充套件)和向上擴充套件(也稱為垂直擴充套件)。水平擴充套件涉及向資源池中新增額外的工人來處理傳入的工作。這通常意味著新增可以執行相同操作的額外伺服器,從而分配負載。向上擴充套件涉及向已處理請求的伺服器新增額外的資源,如處理器、RAM或儲存。擴充套件允許您處理更多的併發操作,但它可能會增加應用程式架構的複雜性。
- Schema
- 資料庫Schema是一種描述資料在資料庫系統中應如何組織的結構。它定義了每個表、欄位、索引、關係、函式以及資料庫中包含的任何其他結構的格式。Schema是告訴資料庫系統物件外觀以及允許或不允許與物件關聯哪些資料的定義。在PostgreSQL中,資料庫Schema具有略微不同的含義,它被實現為資料庫物件的子物件,充當其他資料庫物件的名稱空間。
- 可序列化隔離級別
- 可序列化隔離級別是關係型資料庫系統的一種事務隔離級別,提供最嚴格的隔離保證。在可序列化級別下,髒讀、不可重複讀、幻讀和序列化異常都被阻止。資料庫系統透過中止任何可能發生衝突的事務來實現這一點,這確保了併發事務可以像序列執行一樣被應用。可序列化隔離提供了強大的隔離性,但由於衝突事務可能被中止並不得不重新提交,因此可能會導致顯著的效能問題。
- 序列化異常
- 序列化異常是併發事務中可能出現的問題,其中併發事務的提交順序會影響最終資料。序列化異常的發生是因為不同事務中的操作可能基於其他事務正在更新的資料進行計算。為了防止序列化異常,事務必須使用可序列化隔離級別,該級別透過回滾其中一個衝突事務來防止這些情況發生。
- 資料庫分片是資料庫物件儲存的記錄段,出於效能原因被分離並由不同的資料庫節點管理。例如,一個包含900萬條記錄的資料庫表可以被分成三個獨立的分片,每個分片管理300萬條記錄。資料通常根據“分片鍵”進行劃分,分片鍵決定了記錄應由哪個分片管理。每個分片管理其記錄子集,並且需要一個協調元件透過引用分片鍵將客戶端查詢定向到適當的分片。分片可以幫助處理非常大型資料集的某些型別效能,但它通常需要做出權衡,這可能會降低其他型別的效能(例如,需要協調多個分片的操作)。
- 陳舊資料
- 在處理資料儲存時,陳舊資料指任何不能準確反映資料最新狀態的資料。這通常主要在快取時出現問題,因為資料片段可能在它們被更改失效很久之後仍被保留和使用。
- 標準列族
- 標準列族是一種列族資料庫物件型別,它透過定義與鍵值對(類似於列)關聯的行鍵來儲存資料。每行都可以定義和使用自己的列,因此生成的資料集不像關係型資料庫表那樣規則。然而,行鍵與列標籤和值的組合仍然有點像一張表。標準列族為基於鍵的資料檢索提供了良好的效能,因為它們能夠將與鍵相關的所有資訊儲存在同一位置,並且可以輕鬆修改該鍵的資料結構。
- 詞幹提取
- 詞幹提取是全文搜尋索引中使用的技術,其中具有相同詞幹的單詞被合併到一個條目中。這增加了相關結果的數量,但會略微降低精確度。例如,“cook”、“cooked”和“cooks”這些詞可能佔據一個單獨的條目,搜尋其中任何一個詞都會返回該整個條目的結果。
- 停用詞
- 在全文搜尋語境中,停用詞是認為不適用於搜尋查詢的單詞列表。這些通常是語言中最常見的詞語,它們本身缺乏太多含義,或者模糊到無關緊要的地步。英語中的一些例子包括“the”、“it”和“a”等詞。
- 儲存引擎
- 儲存引擎是資料庫管理系統中的底層元件,負責在資料庫內插入、刪除、查詢和更新資料。許多資料庫功能,如執行事務的能力,實際上是底層儲存引擎的屬性。有些資料庫系統,如MySQL,有許多不同的儲存引擎,可以根據您的用例要求使用。其他系統,如PostgreSQL,專注於提供一個在所有典型場景中都有用的單一儲存引擎。
- 儲存過程
- 儲存過程是在資料庫中定義一組操作的一種方式,客戶端可以輕鬆執行這些操作。由於它們儲存在資料庫中,有時可以提高效能並避免網路延遲。儲存過程與使用者定義函式不同,它們必須使用特殊語句顯式呼叫,而不是合併到其他查詢中,並且不能在所有相同場景中使用。
- 超列族
- 超列族是一種列族資料庫物件型別,它透過定義與列族關聯的行鍵來儲存資料。每行可以包含多個列族,作為比標準列族進一步細分資料的方式。
- 超鍵
- 超鍵是關係型資料庫模型中任何可以唯一標識記錄的屬性集合。所有其他鍵型別(主鍵、候選鍵、複合鍵等)都是超鍵的例子。一個平凡的超鍵包含所有可用屬性,而候選鍵是任何不能透過刪除額外列來簡化的超鍵。
- 表
- 在關係型資料庫中,表是一種資料庫結構,它以列的形式定義不同的屬性,並以行的形式儲存具有關聯列值的記錄。表列定義的約束和資料型別以及額外的表級要求描述了可以儲存在表中的資料型別。由於表是規則的資料結構,資料庫系統瞭解其中包含的資料的形狀,這在某些情況下可以幫助使查詢效能更可預測。
- 表別名
- 表別名是在查詢時為一個現有表或計算表,或類似表的資料庫物件指定的名稱。如果原始名稱過長或含糊不清,或者表是由查詢本身生成並需要一個標籤以便在查詢的其他部分或顯示時引用,則表別名會很有用。
- 三層架構
- 三層應用程式架構是部署Web應用程式的常見基礎設施架構。第一層由一個或多個Web伺服器組成,負責響應客戶端請求、提供靜態內容並向後續層生成請求。第二層由應用程式伺服器處理,負責透過執行程式碼為前端生成響應來生成動態內容。第三層由資料庫系統處理,負責響應中間層對用於生成內容的自定義值的請求。
- 標記(Token)
- 在自然語言處理和全文搜尋中,標記(token)是系統識別的離散單詞,可以根據不同特徵進行分類。標記可能儲存的資訊包括其在文字中的相對位置、型別(數字、單詞、短語等),以及任何可能有用的額外元資料。
- 事務
- 資料庫事務是一組操作,它們組合成一個單一的單元,可以由資料庫系統原子地執行。事務確保其中所有操作都成功完成,或者它們都回滾以返回到起始狀態。這有助於維護資料完整性,並允許客戶端在資料庫中執行的不同不相關操作之間進行隔離。資料庫事務提供的保證由ACID(原子性、一致性、隔離性和永續性)屬性概括。
- 兩階段提交
- 兩階段提交是一種在分散式系統中實現事務的演算法。兩階段提交透過將提交過程分為兩個主要階段來工作。在第一階段,接收到更改的伺服器將潛在更改通知協調元件。協調器向所有相關伺服器請求是否提交的投票。如果投票成功,第二階段開始,事務由每個獨立成員實際提交。該演算法允許分散式系統保持一致的資料集,但代價是與協調投票過程相關的開銷。
- 兩階段鎖定
- 兩階段鎖定,有時簡寫為2PL,是一種併發控制策略,用於確保事務是可序列化的。這兩個階段指的是擴充套件事務持有的鎖數量的操作和觸發鎖釋放的操作。兩階段鎖定透過使用排他鎖和共享鎖來協調讀寫操作。需要讀取資料的事務可以請求一個共享讀鎖,該鎖允許其他事務讀取相同的資料但阻止寫操作。因為這是一個共享鎖,所以每個連續的讀操作可以同時請求一個讀鎖,並且資料將保持不可修改,直到所有鎖都被釋放。需要修改資料的事務會請求一個排他寫鎖,該鎖阻止其他寫鎖和任何讀鎖的發出。
- Upsert
- Upsert 是一種資料庫操作,它要麼更新現有條目,要麼在未找到當前條目時插入新條目。Upsert 操作由一個查詢元件組成,用於搜尋要更新的匹配記錄,以及一個變異元件,用於指定應更新的值。通常,還需要為其他欄位提供額外的值,以處理必須建立新記錄的情況。
- 值
- 在談論資料庫時,“值”是指資料庫系統儲存在其資料結構中的任何資料片段。透過額外的上下文,例如儲存該值的欄位名稱,可以賦予該值超出其內在含義的意義。特定的儲存結構,例如列或表,可能定義了它所儲存值型別的要求。
- 垂直擴充套件
- 垂直擴充套件,也稱為向上擴充套件,是一種擴充套件策略,涉及為伺服器或元件分配額外的資源(如CPU、RAM或儲存),以提高其效能或負載容量。向上擴充套件通常是擴充套件工作負載最簡單的策略,因為它不會增加當前部署的架構複雜性。雖然垂直擴充套件在許多場景中效果良好,但其缺點包括對單點故障的依賴以及單個機器可合理管理的資源量的限制。
- 頂點
- 在圖資料庫中,頂點是實體,可以持有屬性並透過邊連線到其他頂點。頂點類似於其他資料庫系統中的記錄或文件,因為它們具有指示所代表物件型別的標籤或名稱,並且具有提供特定附加資訊的屬性,以區分特定頂點與其型別中的其他頂點。頂點透過定義它們之間關係的邊連線到其他頂點。例如,一個“作者”頂點可以透過一條“著有”邊連線到一個“書籍”頂點。
- 檢視
- 在關係型資料庫中,檢視是儲存查詢的一種類似表的表示。檢視可以在許多上下文中用作表,但它們不是底層資料結構的一部分,而是從其查詢結果派生而來。檢視對於構建比底層Schema中存在的資料更復雜的資料表示非常有用。例如,檢視可以連線幾個表並只顯示幾個相關的列,這有助於使資料更易於使用,即使由於一致性或效能原因,另一種結構更適合儲存。
- 易失性儲存
- 易失性儲存是指任何需要持續供電才能保持資料存在的儲存型別。例如,儲存在RAM中的資料通常被認為是易失性的,因為它在斷電時會丟失且無法恢復。
- 寬列儲存
- 寬列儲存是一種NoSQL資料庫型別,它使用標準和超列族將資料組織成行和列。行鍵用於檢索所有關聯的列和超列。每行可以包含完全不同的列,因為列定義和值都儲存在行結構本身中。
- 預寫日誌(WAL)
- 預寫日誌(Write-Ahead Logging,簡稱WAL)是一種資料修訂管理方法,可提高系統在崩潰和故障期間的資料損壞恢復能力。如果沒有像WAL這樣的技術,如果系統在資料庫更改僅部分完成時崩潰,就可能發生資料損壞。在這種情況下,資料既不在初始狀態,也不在預期狀態。使用預寫日誌,系統會在執行操作之前將其意圖記錄到持久的預寫日誌中。這樣,資料庫可以透過在恢復期間檢視日誌並重做任何最初未正確完成的操作來恢復到已知良好狀態的資料。
- 權重(搜尋)
- 在搜尋語境中,搜尋權重是分配給不同資料類別的任意值,旨在影響專案在分析相關性時的優先順序。為特定型別的資訊分配較高權重將導致查詢引擎在編譯相關結果列表時,賦予該類別比其他類別更大的重要性。
- 寫繞行快取
- 寫繞行快取是一種快取模式,其中寫查詢直接傳送到後端資料庫,而不是首先寫入快取。因為快取中與更新相關的任何專案現在都將變得陳舊,所以此方法需要一種方式來使這些專案的快取結果在後續讀取時失效。此技術幾乎總是與快取讀取策略結合使用以控制讀取行為。此方法最適合寫入或更新後不常讀取的資料。
- 回寫快取
- 回寫快取是一種快取方法,其中寫查詢傳送到快取而不是後端資料庫。然後,快取會定期捆綁寫操作並將其傳送到後端資料庫以進行持久化。這是穿透寫快取方法的一種修改,旨在在高吞吐量寫操作導致壓力時降低成本,但代價是發生崩潰時永續性降低。這確保了所有最近寫入的資料立即可供應用程式使用,無需額外操作,但如果快取崩潰而未能將寫入持久化到資料庫,則可能導致資料丟失。
- 寫操作
- 在資料庫語境中,寫操作是指任何修改儲存資料的資料庫行為。這包括插入新記錄、刪除記錄以及將現有記錄更新為新值。
- 穿透寫快取
- 穿透寫快取是一種快取模式,應用程式直接將更改寫入快取而不是後端資料庫。然後,快取會立即將新資料轉發到後端資料庫以進行持久化。此策略最大程度地降低了快取崩潰時資料丟失的風險,同時確保讀操作可以訪問所有新資料。在高寫入場景中,轉換為回寫快取可能更為合理,以防止後端資料庫承受過大壓力。
Prisma.io 相關內容
如果您正在將Prisma Client與您的資料庫一起使用,您可以訪問我們的資料庫功能矩陣,以檢查Prisma中各種資料庫功能的支援情況。
Prisma是一個適用於Typescript和Node.js的開源資料庫工具包,旨在提高應用程式開發者在使用資料庫時的生產力和信心。
上一頁
資料庫複製簡介及其優勢
