了解Greenplum(1)


了解系列廢話:

數據管理系統實現,以Greenplum作為課后實驗,這里將實驗報告貼出來,純粹灌水。

1.Greenplum架構

 

如上圖所示,GP的基本結構是單master,多slave節點,客戶端連接到master節點,master節點可以配置一個備機。多個segment節點都有主備兩個數據區,鏡像數據區存放的的是其他segment上的數據,只是目前看來,GP允許一個segment的失效,若有多個節點失效,有可能有的數據找不到鏡像。節點間並不共享使用數據,而是通過internect模塊相互通信。所有的客戶端都是連接到master節點上,因此為了降低master的負載,master上執行的動作不會太多,只負責執行計划生成、分發、收集結果,數據字典管理,不承擔數據的處理,存放等。Segment負責業務數據的存取、執行master發送過來的sql語句,彼此間對等。

2. Greenplum基本使用

首先根據教程安裝好GP系統,參考了網絡上的一篇博客教程:Greenplum 源碼安裝教程 —— 以 CentOS 平台為例http://www.cnblogs.com/arthurqin/p/5849354.html

GP安裝好,並使用gpinitsystem 命令完成初始化之后,使用 psql -d postgres 可以開始使用GP。GP有一些基本命令如下:

GP服務啟停

gpstart :啟動GP服務。當虛擬機關閉重新登錄時需要此命令。

gpstop :關閉GP服務。

gpstop -M fast :快速關閉。

gpstop –r :重啟。

gpstop –u :重新加載配置文件。

登錄與退出GP客戶端

    登錄:

psql databasename

psql -d databasename -h hostname -p port -U gpusername

退出: \q

查看系統庫版本

數據庫基本操作

創建、刪除數據庫

GP初始化系統后,GP會自動創建出三個數據庫postgre,template0,template1.

其中postgre用作系統內部數據的存放,既不要刪除它,也不要修改它。template1是系統默認的數據,創建數據庫時可以以template1為模板,創建新的數據庫。template0數據庫是創建template1的模板。

命令:CREATE DATABASE dbname ; DROP DATABASE dbname;

GP基本sql語法

創建簡單的表

列出數據庫中所有的表

查看查詢計划

基本SQL語法查看方式,使用幫助

GP的SQL語法特殊說明:

A.Create table:

    GP的建表語句與通常的數據庫語句基本一致,但是作為分布式數據庫,有一些不同的地方。 1.建表時需要制定分布鍵distributed by,用以散列數據到不同的segment節點;2.partition by用某個字段將表建成分區表;3.like操作創建與like的表一樣的結構;4.inherits可實現表的繼承。

B.SELECT

   GP的select語句,與普通數據庫語句一樣,但是可以不指定from語句,執行函數和簡單的計算。在沒有添加order by子句的時候,select的結果不能保證順序,並且兩次查詢的結果也不一定是一樣的。

 

查看數據分布

C.INSERT、UPDATE/DELETE

與標准Sql用法相同。Insert語句分布鍵要為空,否則數據都被保存在一個節點上,造成數據分布不均勻。Insert采用批量操作,可以提升執行速度,如isnert into values(),(),()。Update 不能對分布鍵進行更新。 Delete 在4.3版本中支持設計子查詢語句,且子查詢的結果設計數據重分布。TRUNCATE直接刪除物理文件,然后重建新數據文件,對整張表刪除更快,例truncate tbname。

3. Greenplum系統表含義

 

pg_class:

    GP數據字典中最重要的一個系統表,保存着所有的表、試圖、索引的元數據信息,每個DDL/DML操作都必須跟這個表發送聯系。

字段

類型

引用

字段說明

oid

oid

 

pg_class中的唯一標識

relname

name

 

表、索引、視圖等的名稱

relnamespace

oid

pg_namespace.oid

包含這個關系的名字空間的oid

reltype

oid

pg_type.oid

對應這個表的行類型的數據類型(索引為0,沒有此項)

relowner

oid

pg_authid.oid

關系的所有者

Relam

oid

pg_am.oid

索引的訪問模式(B-tree/hash等)

Reltuples

float4

 

表中行的數目。估計值。

relhasindex

bool

 

是表且至少有一個索引為true

relkind

char

 

r=普通表或appendonly表,i=索引,s=序列,v=視圖,c=復合類型,t=TOAST表,o=內存appendonly文件,u=未列入目錄的臨時表。

relnatts

Int2

 

關系中用戶字段數目(除了關系中的系統字段)。

relacl

Aclitem[]

 

訪問權限

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

pg_atrribute:

     這個表記錄了關系的字段的內容。表中實際上有一些隱藏字段如記錄; 數據保存在哪個segment上的gp_segment_id。

字段

類型

引用

字段說明

attrelid

oid

pg_class.oid

此字段所屬的表

attname

name

 

字段名稱

atttype

oid

pg_type.oid

此字段的數據類型

attstattarget

int4

 

控制ANALYZE為這個字段積累的統計細節的級別。0表示不收集統計信息。

attlen

Int2

 

pg_type.typlen的副本

attnum

int2

 

字段數目。從1開始計數

attisdropped

bool

 

字段刪除標記

attnonull

bool

 

非空約束

attndims

int4

 

字段為數組,表示維數。

    

gp_distribution_policy:

保存着表的分布鍵。

字段名

引用

字段說明

localoid

pg_class.oid

表的oid

ocaloid

pg_attribute.attnum

保存分布鍵對應的attnum的一個數組

 

pg_stats:

    數據庫中表的統計信息保存在pg_statistic,由ANALYZE創建記錄。在這個表pg_statistic的上面有一個視圖pg_stats;

字段

類型

引用

字段說明

schemaname

name

pg_namespace.nspname

包含此表的的模式名稱(名字空間)

tablename

name

pg_class.relname

表的名稱

attname

name

pg_attribute.attname

這一條記錄描述的字段的名稱

null_frace

real

 

記錄中字段為空的百分比

avg_width

integer

 

記錄以字節為單位的平均寬度

most_common_vals

anyarray

 

一個字段中最常用數值的列表。沒有數值比較常見則為NULL。

4.參考

關於GP的參考資料,首先最好的當然是去官網上有詳盡的資料,可以去參考doc目錄下的內容,各種手冊還是比較詳細的。

官網: https://pivotal.io/big-data/pivotal-greenplum

另外若需要先刷一下中文資料,可以參考《Greenplum企業應用實戰》。這個資料好像csdn上有,我也給分享了百度雲連接。里面還有一個ppt,算是DBA培訓手冊。

https://pivotal.io/big-data/pivotal-greenplum

其他,阿里雲棲社區,有些話題會討論greenplum,也可以逛逛。但是我嘗試里面的一篇文章,擴展segment節點,沒能成功/(ㄒoㄒ)/~~。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM