資料庫存儲模型
關系資料庫存儲模式是以關系模型為基礎的資料庫存儲方式,它通過關系資料庫管理系統(RDBMS)進行數據的管理。關系模型是目前商用資料庫領域最流行的一種數據模型,其基本思想是用二維表表示實體及其聯系。二維表中的每一列對應實體的一個屬性,並給出相應的屬性值,每一行形成一個有多種屬性組成的多元組,或稱元組(TUPPLE),與一個特定實體相對應。
採用關系資料庫存儲方式,其主要特點是:
(1)關系結構靈活,可滿足所有用布爾邏輯運算和數學運算規則形成的查詢要求。
(2)關系數據還能搜索、組合和比較不同類型的數據,加入和刪除數據都很方便。
(3)其缺點是由於許多操作都要求在文件中順序查找滿足條件特定關系的數據,如果資料庫較大,這一查找過程要花費很多時間。
在早期的土地信息系統的建設中,一般採用關系型資料庫來存儲管理屬性數據,而空間數據的管理多採用文件的方式來組織管理。主要原因一是因為關系型資料庫對地理空間數據的表達能力不足;二是因為地理信息系統軟體中一些數據模型和數據文件的結合很緊密。
隨著資料庫技術的發展和地理信息系統技術的廣泛應用,基於關系對象資料庫的空間數據管理技術日漸成熟,出現了商用的統一存儲空間數據和屬性數據的軟體系統,如Oracle資料庫系統產品Oracle Spatial支持對空間數據的存儲與管理,使用Esri的Arc SDE可用關系型資料庫(RDBMS)管理空間數據。
② 資料庫常見的數據模型有哪三種
1、層次模型:
①有且只有一個結點沒有雙親結點(這個結點叫根結點)。
②除根結點外的其他結點有且只有一個雙親結點。
層次模型中的記錄只能組織成樹的集合而不能是任意圖的集合。在層次模型中,記錄的組織不再是一張雜亂無章的圖,而是一棵"倒長"的樹。
2、網狀模型 :
①允許一個以上的結點沒有雙親結點。
②一個結點可以有多個雙親結點。
網狀模型中的數據用記錄的集合來表示,數據間的聯系用鏈接(可看作指針)來表示。資料庫中的記錄可被組織成任意圖的集合。
3、關系模型:
關系模型用表的集合來表示數據和數據間的聯系。
每個表有多個列,每列有唯一的列名。
③ 當前主流的資料庫系統通常採用哪幾種模型
目前最主流的sql server、oracle、mysql、db2都是關系型資料庫。隨著社交網站、視頻網站等互聯網新業務模式的興起,各種非關系資料庫模型也在不斷涌現。
以下是的:
數據模型概述
1.關系模型
關系模型使用記錄(由元組組成)進行存儲,記錄存儲在表中,表由架構界定。表中的每個列都有名稱和類型,表中的所有記錄都要符合表的定義。SQL是專門的查詢語言,提供相應的語法查找符合條件的記錄,如表聯接(Join)。表聯接可以基於表之間的關系在多表之間查詢記錄。
表中的記錄可以被創建和刪除,記錄中的欄位也可以單獨更新。
關系模型資料庫通常提供事務處理機制,這為涉及多條記錄的自動化處理提供了解決方案。
對不同的編程語言而言,表可以被看成數組、記錄列表或者結構。表可以使用B樹和哈希表進行索引,以應對高性能訪問。
2.鍵值存儲
鍵值存儲提供了基於鍵對值的訪問方式。
鍵值對可以被創建或刪除,與鍵相關聯的值可以被更新。
鍵值存儲一般不提供事務處理機制。
對不同的編程語言而言,鍵值存儲類似於哈希表。對此,不同的編程語言有不同的名字(如,Java稱之為「HashMap」,Perl稱之為「hash」,Python稱之為「dict」,PHP稱之為「associative array」),C++則稱之為「boost::unordered_map<...>」。
鍵值存儲支持鍵上自有的隱式索引。
鍵值存儲看起來好像不太有用,但卻可以在「值」上存儲大量信息。「值」可以是一個XML文檔,一個JSON對象,或者其它任何序列化形式。
重要的是,鍵值存儲引擎並不在意「值」的內部結構,它依賴客戶端對「值」進行解釋和管理。
3.文檔存儲
文檔存儲支持對結構化數據的訪問,不同於關系模型的是,文檔存儲沒有強制的架構。
事實上,文檔存儲以封包鍵值對的方式進行存儲。在這種情況下,應用對要檢索的封包採取一些約定,或者利用存儲引擎的能力將不同的文檔劃分成不同的集合,以管理數據。
與關系模型不同的是,文檔存儲模型支持嵌套結構。例如,文檔存儲模型支持XML和JSON文檔,欄位的「值」又可以嵌套存儲其它文檔。文檔存儲模型也支持數組和列值鍵。
與鍵值存儲不同的是,文檔存儲關心文檔的內部結構。這使得存儲引擎可以直接支持二級索引,從而允許對任意欄位進行高效查詢。支持文檔嵌套存儲的能力,使得查詢語言具有搜索嵌套對象的能力,XQuery就是一個例子。MongoDB通過支持在查詢中指定JSON欄位路徑實現類似的功能。
4.列式存儲
如果翻轉數據,列式存儲與關系存儲將會非常相似。與關系模型存儲記錄不同,列式存儲以流的方式在列中存儲所有的數據。對於任何記錄,索引都可以快速地獲取列上的數據。
Map-rece的實現Hadoop的流數據處理效率非常高,列式存儲的優點體現的淋漓極致。因此,HBase和Hypertable通常作為非關系型數據倉庫,為Map-rece進行數據分析提供支持。
關系類型的列標對數據分析效果不好,因此,用戶經常將更復雜的數據存儲在列式資料庫中。這直接體現在Cassandra中,它引入的「column family」可以被認為是一個「super-column」。
列式存儲支持行檢索,但這需要從每個列獲取匹配的列值,並重新組成行。
5.圖形資料庫
圖形資料庫存儲頂點和邊的信息,有的支持添加註釋。
圖形資料庫可用於對事物建模,如社交圖譜、真實世界的各種對象。IMDB(Internet Movie Database)站點的內容就組成了一幅復雜的圖像,演員與電影彼此交織在一起。
圖形資料庫的查詢語言一般用於查找圖形中斷點的路徑,或端點之間路徑的屬性。Neo4j是一個典型的圖形資料庫。
選擇哪一種數據模型?
數據模型有著各自的優缺點,它們適用於不同的領域。不管是選擇關系模型,還是非關系模型,都要根據實際應用的場景做出選擇。也許你會發現單一的數據模型不能滿足你的解決方案,許多大型應用可能需要集成多種數據模型。
④ 資料庫中的數據是按照一定的結構(數據模型)來組織、描述和存儲的。請簡述: (1) 四種常用的數據模型。
問題1:
數據模型按不同的應用層次分成三種類型:分別是概念數據模型、邏輯數據模型、物理數據模型。
1、概念數據模型(Conceptual Data Model):簡稱概念模型,是面向資料庫用戶的實現世界的模型,主要用來描述世界的概念化結構,它使資料庫的設計人員在設計的初始階段,擺脫計算機系統及DBMS的具體技術問題,集中精力分析數據以及數據之間的聯系等,與具體的數據管理系統(Database Management System,簡稱DBMS)無關。概念數據模型必須換成邏輯數據模型,才能在DBMS中實現。
2、邏輯數據模型(Logical Data Model):簡稱數據模型,這是用戶從資料庫所看到的模型,是具體的DBMS所支持的數據模型,如網狀數據模型(Network Data Model)、層次數據模型(Hierarchical Data Model)等等。此模型既要面向用戶,又要面向系統,主要用於資料庫管理系統(DBMS)的實現。
3、物理數據模型(Physical Data Model):簡稱物理模型,是面向計算機物理表示的模型,描述了數據在儲存介質上的組織結構,它不但與具體的DBMS有關,而且還與操作系統和硬體有關。每一種邏輯數據模型在實現時都有起對應的物理數據模型。DBMS為了保證其獨立性與可移植性,大部分物理數據模型的實現工作又系統自動完成,而設計者只設計索引、聚集等特殊結構。
在概念數據模型中最常用的是E-R模型、擴充的E-R模型、面向對象模型及謂詞模型。在邏輯數據類型中最常用的是層次模型、網狀模型、關系模型。
資料庫領域採用的數據模型有層次模型、網狀模型和關系模型,其中應用最廣泛的是關系模型。
層次模型:它的特點是將數據組織成一對多關系的結構。
層次結構採用關鍵字來訪問其中每一層次的每一部分。
優點:
存取方便且速度快
結構清晰,容易理解
數據修改和資料庫擴展容易實現
檢索關鍵屬性十分方便
缺陷:
結構呆板,缺乏靈活性
同一屬性數據要存儲多次,數據冗餘大(如公共邊)
不適合於拓撲空間數據的組織 網狀模型用連接指令或指針來確定數據間的顯式連接關系,是具有多對多類型的數據組織方式 優點:
能明確而方便地表示數據間的復雜關系
數據冗餘小
缺陷:
網狀結構的復雜,增加了用戶查詢和定位的困難。
需要存儲數據間聯系的指針,使得數據量增大
數據的修改不方便(指針必須修改)
關系資料庫模型是以記錄組或數據表的形式組織數據,以便於利用各種地理實體與屬性之間的關系進行存儲和變換,不分層也無指針,是建立空間數據和屬性數據之間關系的一種非常有效的數據組織方法
優點:
結構特別靈活,滿足所有布爾邏輯運算和數學運算規則形成的查詢要求
能搜索、組合和比較不同類型的數據
增加和刪除數據非常方便
缺陷:
資料庫大時,查找滿足特定關系的數據費時
對空間關系無法滿足
問題2:
刪除「學生」表性別為「男」的記錄。
查詢學生表(列姓名,總分),條件是總分大於85分的記錄