大資料系統與大規模資料分析 關係型資料管理系統

2021-09-12 02:44:41 字數 2527 閱讀 1268

dbms: 資料庫管理系統(英語:database management system,縮寫:dbms) 是一種針對物件資料庫,為管理資料庫而設計的大型計算機軟體管理系統。具有代表性的資料管理系統有:oracle、microsoft sql server、access、mysql及postgresql等。通常資料庫管理師會使用資料庫管理系統來建立資料庫系統。

rdbms: 專門管理關係型資料庫的管理系統

商用dbms: oracle,sql server,ibm db2

開源資料庫系統:mysql,postgresql

成分說明:

sql parser: sql語句直譯器;用於對使用者輸入的sql語句進行解析,檢查語法錯誤,解析查詢語義,生成 sql 的內部表達:query plan(執行方案)。一般執行方案看起來如下:

query optimizer: 估計不同的query plan的執行時間和空間代價;從多個query plan 選擇最優的。

data storage and indexing:資料的儲存和訪問

buffer pool:在記憶體中快取硬碟資料

execution engine :根據query plan 完成相應的操作和運算

transaction management:事務管理,實現acid要求。

資料庫和檔案系統的對比:

不同點:

共同點:資料儲存在硬碟;

資料庫在磁碟中使用page為單位來儲存一條條的記錄record。每個page開始有乙個page header,末尾有個slot槽。每個slot 槽都指示了page內的一條記錄的偏移量。

然後tuple的儲存結構是:

整個記錄的總位元組數-> 第乙個變長字段偏移量->第二個變長字段偏移->定長字段內容->-----> 第乙個變長字段值····

例如:

其定義為:

create table student (

id integer not null, name varchar(20), birthday date,

gender enum(m, f), major varchar(20), year year, gpa float,

primary key (id));

那麼每一條記錄儲存形式為:

第乙個位元組是總長度33個位元組。第二個位元組是name整個變長字段對應的偏移量。

例如:

select name, gpa

from student

where major = 『計算機』;

問題: 效能比較差,尤其是資料量大的時候,而所需的資料很少的時候。

例如存在100個系,我們只想過濾出其中的計算機系,那麼順序訪問會遍歷全部的資料。

使用索引即可避免順序訪問,達到有選擇的訪問。例如上面的例子中,如果我們對major欄位建立索引,那麼我們可以直接定位到計算機系,而不用遍歷所有的資料。

索引的型別:

雜湊索引核心——鍊錶雜湊表:

對每條記錄的key進行hash,然後把雜湊結果掛到相應的雜湊表。當hash鏈上的資料太多的時候,可以進行重新雜湊。

樹索引的核心——b

+b^+

b+樹

b+樹 其實就是平衡二叉樹的擴充套件。存在兩類節點:葉子節點和內部節點。其中葉子節點存放著記錄的key值。乙個葉子節點就是乙個page,裡面可能包含很多條資料。每條資料以(key,ptr) 來儲存。ptr 指向真實的記錄id,通過這個id可以獲取record的全部資料。乙個page裡面的key都是有序的。

內部節點是為了組織葉子節點而存在。

例如:b+樹的搜尋:

b+樹插入:

大規模資料實戰

前後端處理分離解耦,前批處理 有向圖編譯,後端為有向圖優化 自動資源分配 自動監控 錯誤跟蹤 首先我們忘掉所有的框架,我們想做的業務設計其實是就是乙個count 乙個topk 衡量指標很簡單是sla 工程一致性模型,強一致性,弱一致性,最終一致性 cloud spanner 就是強一致性,業務級的資...

Python大規模資料插入Postgresql

需要owner許可權 alter table t rs standard satellite image add constraint unique source product id unique source product id batchinsert批量插入 def batchinsert ...

大資料 阿里巴巴的大規模資料流處理系統

隨著阿里系的應用幾乎覆蓋了移動網際網路的全行業,阿里巴巴開始致力於搭建世界一流的計算引擎。在2015年,阿里巴巴開始將視線轉向flink,發現表現不錯,於是開始將其投入到計算引擎的測試中,並定義內部名稱為blink。在隨後的一年克服了穩定性和可靠性的問題 而到了2017年,就開始專注於blink各元...