Greenplum開發

来源:http://www.cnblogs.com/lanloveyan/archive/2017/09/01/7461929.html
-Advertisement-
Play Games

Greenplum(GP)採用了MPP架構,基於開源的資料庫 PostgreSQL(PG)。 1.首先什麼是MPP架構? GreenPlum的架構採用了MPP(大規模並行處理)。在 MPP 系統中,每個 Segment 節點也可以運行自己的操作系統、資料庫等。換言之,每個節點內的 CPU 不能訪問另 ...


Greenplum(GP)採用了MPP架構,基於開源的資料庫 PostgreSQL(PG)。

  1.首先什麼是MPP架構?

GreenPlum的架構採用了MPP(大規模並行處理)。在 MPP 系統中,每個 Segment 節點也可以運行自己的操作系統、資料庫等。換言之,每個節點內的 CPU 不能訪問另一個節點的記憶體。節點之間的信息交互是通過節點互聯網路實現的,這個過程一般稱為數據重分配(Data Redistribution) 。與傳統的SMP架構明顯不同,通常情況下,MPP系統因為要在不同處理單元之間傳送信息,所以它的效率要比SMP要差一點,但是這也不是絕對的,因為 MPP系統不共用資源,因此對它而言,資源比SMP要多,當需要處理的事務達到一定規模時,MPP的效率要比SMP好。這就是看通信時間占用計算時間的比例而定,如果通信時間比較多,那MPP系統就不占優勢了,相反,如果通信時間比較少,那MPP系統可以充分發揮資源的優勢,達到高效率。

 

 

 

2.簡單介紹一下GP的各個組件:

 資料庫由Master Severs和Segment Severs通過Interconnect互聯組成。

 Master主機負責:建立與客戶端的連接和管理;SQL的解析並形成執行計劃;執行計劃向Segment的分發收集Segment的執行結果;Master不存儲業務數據,只存儲數據字典。 

 Segment主機負責:業務數據的存儲和存取;用戶查詢SQL的執行。

 master node高可用,類似於hadoop的namenode和second namenode,實現主備的高可用。

 

 

 

 

3.數據是如何分佈的?

在 GPDB 中創建(Create)或者修改(Alter)表時,有一個額外的 DISTRIBUTED 子句用以定義表的分佈策略(Distribution Policy)。分佈策略決定了表中的數據記錄如何被打散到GP的 Segment Instance。GPDB 提供了2種分佈策略: 

HASH 分佈 使用 HASH 分佈時,1個或數個Table Column被用作Distribution Key(簡稱 DK)。DK被HASH 演算法用來決定每行記錄對應特定的Segment Instance。相同Key值的記錄會HASH 到相同的 Segment Instance。選擇一個唯一鍵(unique key)作為DK,比如主鍵(Primary Key),可以確保儘可能的平坦分佈數據。 

隨機(Random)分佈 使用隨機分佈,數據記錄被迴圈的分佈到 Segment Instance。相同值的記錄可能會落在不同的Segment Instance。隨機分佈可以確保數據分佈的平坦性,但為了確保性能優勢應該儘可能的使用 HASH 分佈。

 

4.GPDB查詢過程

用戶可以像使用其他的DBMS一樣向GPDB提交查詢。直接通過客戶端程式(例如 psql)連接到GP的Master主機並提交查詢語句,也可以通過pgadmin工具來連接GP執行查詢語句。

psql -l  //列出所有的database

psql -d xxxx //登陸資料庫,預設gpadmin用戶

查詢性能的強弱往往由查詢優化器的水平來決定,greenplum主節點負責解析SQL與生成執行計劃。Greenplum的執行計劃生成同樣採用基於成本的方式,基於資料庫是由諸多segment實例組成,在選擇執行計劃時主節點還要綜合考慮節點間傳送數據的代價。

查詢被Master 接收、處理、優化、創建一個並行的或者定向的查詢計劃(根據查詢語句決定)。之後 Master將查詢計劃分發到相關的Instance去執行,每個Instance只負責處理自己本地的那部分數據。

大部分的操作—比如掃表、關聯、聚合、排序都是同時在Instance上並行被執行。每個操作都獨立於其他Instance執行。

例如:

QUERY查詢語句及分析結果

 

 

 

下圖解釋了查詢計劃。每個Instance獲取到查詢計劃的副本且並行執行。對於該查詢計劃來說,有一個重分佈操作(Redistribute motion),這是為了完成連接(join)而執行的數據 移動操作。查詢計劃被重分佈操作分割為兩步(slice 1 與 slice 2)。該查詢計劃還有另外一種數據移動稱為彙總移動(Gather motion)。彙總移動是Instance將計算結果反饋到Master從而可以反饋給客戶端的一種操作。由於在移動動作發生時查詢計劃總是會被分割,該查詢計劃還存在一個隱含的操作(slice 3)。不是所有的查詢都有彙總操作,比如:CREATE TABLE…AS SELECT...語句就不需要彙總操作。

 

 

 

5.JDBC連接GP

  首先需要去GP官網下載最新的JDBC驅動包

  地址:https://network.pivotal.io/api/v2/products/pivotal-gpdb/releases/6342/product_files/27496/download

  然後在Eclipse中引入這個驅動包,新建一個測試類,如下:

 

 

運行結果如下:

 

 

 

引申:開發一個登陸界面,監控GP

登陸界面需要從GP中獲取用戶表來驗證登陸用戶名和密碼。具體代碼如下:

login.html--登陸頁面

 

 

 

login_check.jsp--驗證密碼

部分截圖

 

 

 

登陸效果:

 

 

 

 

 

 

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • + (CGSize)boundingALLRectWithSize:(NSString *)txt Font:(UIFont *)font Size:(CGSize)size { NSMutableAttributedString *attributedString = [[NSMutableAtt... ...
  • cordova-plugin-IFlyspeech 科大訊飛的語音聽說讀寫的cordova插件 Supported Platforms iOS android Installation 插件安裝命令:cordova plugin add https://github.com/Edc-zhang/co ...
  • 引言:交互的概念是很難用語言描述的,怎樣才能讓一個抽象的想法得到充分溝通和測試呢?一個原型工具就能回答這個問題。 原型是一個想法成為App或者網頁的旅途上的伴侶。一個建築師不會從一開始就去挖地下室,他會在繪製完草圖後,一步一步地設計電腦上的和真實的模型,並且反覆地測試和修訂。同樣平面設計師也會在UI ...
  • 最近在做一個Toolbar,setNavigationIcon()這個方法一直無效,說什麼的都有,什麼getSupportActionBar().setNavigationIcon()的,說設置style的,說放到setSupportActionBar()之後的。 其實沒有說全,還應該放到Drawe ...
  • 1. RNN迴圈神經網路 1.1 結構 迴圈神經網路(recurrent neural network,RNN)源自於1982年由Saratha Sathasivam 提出的霍普菲爾德網路。RNN的主要用途是處理和預測序列數據。全連接的前饋神經網路和捲積神經網路模型中,網路結構都是從輸入層到隱藏層再 ...
  • 1. Iris data set Iris數據集是常用的分類實驗數據集,由Fisher, 1936收集整理。Iris也稱鳶尾花卉數據集,是一類多重變數分析的數據集。數據集包含150個數據集,分為3類,每類50個數據,每個數據包含4個屬性。可通過花萼長度,花萼寬度,花瓣長度,花瓣寬度4個屬性預測鳶尾花 ...
  • 摘要: http://www.cloudera.com/content/cloudera-content/cloudera-docs/Impala/latest/Installing-and-Using-Impala/ciiu_langref_sql.html Impala SQL 語言元素(Ele ...
  • 記錄自己在開發中只用一次,但是容易忘記的問題,PL/SQL-ORACLE配置遠程資料庫訪問: 1,下載PL/SQL連接工具,鏈接: https://pan.baidu.com/s/1kVeeLNp 密碼: u2hi 2,解壓壓縮包,配置instantclient_11_2里的tnsnames.ora ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...