資料儲存必知必會

2021-10-02 22:41:16 字數 3399 閱讀 3106

在作業系統出現之後,隨著計算機應用範圍的擴大、需要處理的資料迅速膨脹。最初,資料與程式一樣,以簡單的檔案作為主要儲存形式。以這種方式組織的資料在邏輯上更簡單,但可擴充套件性差,訪問這種資料的程式需要了解資料的具體組織格式。當系統資料量大或者使用者訪問量大時,應用程式還需要解決資料的完整性、一致性以及安全性等一系列的問題。因此,必須開發出一種系統軟體,它應該能夠像作業系統遮蔽了硬體訪問複雜性那樣,遮蔽資料訪問的複雜性。

關係模型是在2023年由ibm的研究員e.f.codd博士首先提出的。

關係模型可以簡單理解為二維**模型,而乙個關係型資料庫就是由二維表及其之間的關係組成的乙個資料組織。

關係型資料庫即傳統的行資料庫,以行和列的形式儲存資料。表中的每一行資料有乙個唯一關鍵字標識,如果要查詢一條記錄的乙個屬性值,需要先讀取整條記錄的資料。

優點
資料庫事務

事務(transaction)包含一組資料庫操作的邏輯工作單元,在事務中包含的資料庫操作是不可分割的整體,這些操作要麼一起做,要麼一起回滾(roll back)到執行前的狀態。 事務的acid特性:

基元性(atomicity)

一致性(consistency)

隔離性(isolation)

持續性(durability)

事務的併發性是指多個事務的並行操作輪流交叉執行,事務的併發可能會訪問和儲存不正確的資料,破壞交易的隔離性和資料庫的一致性。

缺點

資料操作的瓶頸出現在多張資料表的操作中,而且資料表越多這個問題越嚴重,如果要緩解這個問題,只能提高處理能力,也就是選擇速度更快效能更高的計算機,這樣的方法雖然可以一定的拓展空間,但這樣的拓展空間一定有非常有限的,也就是關係型資料庫只具備縱向擴充套件能力。

一般指nosql資料庫,nosql一詞最早是carlo strozzi在2023年提出來,用來表示其開發的乙個沒有sql功能、輕量級的關係型資料庫。

2023年,在一場關於開源分布式資料庫的討論中,eric evans再次提出了nosql一詞,用於指代那些非關係型的、分布式的且一般不保證遵循acid原則的資料儲存系統。

1. 鍵值(key-value)儲存資料庫

基於雜湊計算,其資料是按照鍵值對的形式進行組織、索引和儲存的。

相比於關係型資料庫以二維表的方式組織資料,key-value資料庫不涉及資料間的業務關係,由松耦合的鍵值對組成,能以較為鬆散的、去中心化的方式進行集群部署。

典型的key-value資料庫有:redis

2. 列儲存資料庫
以關聯式資料庫中的列為單位進行儲存的,每一列單獨儲存,從而將同類資料儲存在連續空間。主要用來應對分布式儲存的海量資料

只訪問查詢涉及的列,大大降低了資料庫i/o,資料庫的橫向擴充套件性更好(集群)

典型的列資料庫有: apache的hbase專案和google的bigtable

3.文件型資料庫
類似鍵值儲存,除了主鍵,還可以存在若干輔鍵

其資料模型是版本化的文件、半結構化的文件以特定的格式儲存,如json

典型的列資料庫有: mongodb

4.圖形(graph)資料庫
圖形資料庫善於處理大量複雜、互連線、低結構化的資料,這些資料變化迅速,需要頻繁的查詢——在關聯式資料庫中,由於這些查詢會導致大量的表連線,從而導致效能問題。

關係型資料庫用於儲存「關係型」資料的效果並不好,其查詢複雜、緩慢、超出預期,而圖形資料庫的獨特設計恰恰彌補了這個缺陷(適用於社交網路,推薦系統)

典型:neo4j

優點
非結構化的儲存

處理高併發、大批量資料的能力強

支援分布式集群,負載均衡,效能高

無sql解析,記憶體級資料庫,查詢速度快

儲存格式多,支援key-value、文件、形式

缺點
不支援事務,難以保證資料的高度一致性(常用解決方案是補償)

不支援複雜的sql

倉庫之父比爾·恩門(bill inmon)於2023年提出。

資料倉儲是乙個面向主題的、整合的、隨時間變化的資料集合,用以更好地支援企業或組織的決策分析處理。

資料倉儲是乙個過程而不是乙個專案。

面向主題
整合的
隨時間變化:資料並不只是反映當前的狀態,而是記錄了過去一段時間的資料。此外,資料倉儲主要的資料操作是查詢,因此資料倉儲中的資料是相對穩定的,但這並不意味著從資料輸入資料倉儲開始到最終被刪除的整個資料生成週期中保持不變,資料倉儲中的資料隨時間的變化會不斷地載入、更新。

常見: hive

資料倉儲:是資料庫概念的公升級。從邏輯上理解,資料庫和資料倉儲沒有區別,都是通過資料庫軟體實現的存放資料的地方,只不過從資料量來說,資料倉儲要比資料庫更龐大得多。

資料庫只存放在當前值,資料倉儲存放歷史值;

資料庫內資料是動態變化的,而資料倉儲則是靜態的歷史資料,只能定期新增、重新整理;

資料庫: 頻繁訪問、量小,高併發,低時延

資料倉儲: 非頻繁、大量、高吞吐、非實時

資料庫中資料的目標是面向業務處理人員的,為業務處理人員提供資訊處理的支援

資料倉儲主要用於資料探勘和資料分析,輔助領導做決策。

mysql必知必會 mysql必知必會(四)

十四 理解子查詢 1 通過子查詢過濾 這本書在所有的章節都關連到了資料庫表,訂單資料是儲存在兩個表中,orders表儲存著 訂單號碼 顧客id和訂單日期。個人的訂單列表關連著orderitems表,訂單表沒有儲存顧客資訊,它只是儲存著顧客id,這實際的顧客資訊是儲存在customers表中。現在假設...

mysql的必知必會 mysql 必知必會 筆記

好久沒有寫了。1 show columns from table 等同於describe table顯示的是表的結構。而select from table 則顯示的是整個表中插入的資料。2 select distinct c1,c2 from table除非列不相同,否則所有行將被檢索出來,即不能對...

C 必知必會

條款2 多型 2 條款3 設計模式 5 條款4 stl 8 條款5 引用是別名而非指標 10 條款6 陣列形參 13 條款7 常量指標與指向常量的指標 16 條款8 指向指標的指標 19 條款9 新式轉型操作符 21 條款10 常量成員函式的含義 25 條款11 編譯器會在類中放東西 29 條款12...