面向文檔的數據庫
編輯面向文檔的數據庫或文檔存儲是一種計算機程序和數據存儲系統,設計用于存儲、檢索和管理面向文檔的信息,也稱為半結構化數據。
面向文檔的數據庫是 NoSQL 數據庫的主要類別之一,面向文檔的數據庫一詞的流行度隨著 NoSQL 本身的使用而增長。 XML 數據庫是面向文檔的數據庫的一個子類,這些數據庫經過優化以處理 XML 文檔。 圖數據庫類似,但增加了另一層,關系,允許它們鏈接文檔以進行快速遍歷。
面向文檔的數據庫本質上是鍵值存儲的子類,鍵值存儲是另一個 NoSQL 數據庫概念。 區別在于處理數據的方式; 在鍵值存儲中,數據被認為對數據庫本質上是不透明的,而面向文檔的系統依賴文檔中的內部結構來提取數據庫引擎用于進一步優化的元數據。 盡管由于系統中的工具,差異通常可以忽略不計,但從概念上講,文檔存儲旨在通過現代編程技術提供更豐富的體驗。
文檔數據庫與傳統的關系數據庫 (RDB) 形成鮮明對比。 關系數據庫通常將數據存儲在由程序員定義的單獨表中,并且單個對象可能分布在多個表中。 文檔數據庫將給定對象的所有信息存儲在數據庫中的單個實例中,并且每個存儲的對象都可以彼此不同。 這消除了在將數據加載到數據庫時進行對象關系映射的需要。
文件
編輯面向文檔的數據庫的核心概念是文檔的概念。 雖然每個面向文檔的數據庫實現在此定義的細節上有所不同,但一般來說,它們都假定文檔以某種標準格式或編碼封裝和編碼數據(或信息)。 使用的編碼包括 XML、YAML、JSON 以及像 BSON 這樣的二進制形式。
文檔存儲中的文檔大致相當于對象的編程概念。 它們不需要遵守標準模式,也不會有所有相同的部分、槽、部件或鍵。 通常,使用對象的程序有許多不同類型的對象,而這些對象通常有許多可選字段。 每個對象,即使是同一類對象,看起來也可能大不相同。 文檔存儲的相似之處在于它們允許在單個存儲中存儲不同類型的文檔,允許其中的字段是可選的,并且通常允許使用不同的編碼系統對它們進行編碼。 例如,以下是一個以 JSON 編碼的文檔:
{ "FirstName": "Bob", "Address": "5 Oak St.", "Hobby": "sailing"}
第二個文檔可能在 XML 中編碼為:
<接觸> Bob; <姓氏>史密斯</姓氏>; (123) 555-0178; (890) 555-0133; <地址> 主頁; <street1>123 Back St.</street1> <city>男孩</city> <狀態>AR</狀態> 32225; <國家>美國</國家> </地址> </接觸>
這兩份文件彼此共享一些結構要素,但又各有獨特的要素。 文檔中的結構和文本以及其他數據通常稱為文檔的內容,可以通過檢索或編輯方法進行引用(見下文)。 與關系數據庫不同,關系數據庫中每條記錄都包含相同的字段,將未使用的字段留空; 上例中的任一文檔(記錄)中都沒有空的“字段”。 這種方法允許將新信息添加到某些記錄中,而不需要數據庫中的所有其他記錄共享相同的結構。
文檔數據庫通常提供與文檔內容相關聯并與文檔內容一起存儲的附加元數據。 該元數據可能與數據存儲提供的用于組織文檔、提供安全性或其他實現特定功能的設施有關。
增刪改查操作
面向文檔的數據庫支持文檔的核心操作與其他數據庫類似,雖然術語沒有完全標準化,但大多數從業者將它們識別為 CRUD:
- 創建(或插入)
- 檢索(或查詢、搜索、閱讀或查找)
- 更新(或編輯)
- 刪除(或移除)
按鍵
文檔通過代表該文檔的唯一鍵在數據庫中尋址。 這個鍵是一個簡單的標識符(或 ID),通常是一個字符串、一個 URI 或一個路徑。 密鑰可用于從數據庫中檢索文檔。 通常數據庫在鍵上保留索引以加快文檔檢索,在某些情況下需要創建鍵。
內容由匿名用戶提供,本內容不代表www.gelinmeiz.com立場,內容投訴舉報請聯系www.gelinmeiz.com客服。如若轉載,請注明出處:http://www.gelinmeiz.com/249401/