<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 背景 社區 PostgreSQL 和 GreenPlum 都提供了讀寫外部數據源的方法,它們都提供了一套編程接口,用戶可以在這上面做二次開發,建立外部數據源和數據庫間的數據通道。 本文介紹 PostgreSQL 和 GreenPlum 這部分編程接口的實現和編程方法。結合 RDS 開發的 oss_ext 接口。展示外部數據源接口的能力。 ## PostgreSQL FDW FDW 的全稱是 foreign-data wrapper,是一套讀寫外部數據源的編程接口。它提供了多個回調函數編程接口,開發者可以逐一實現這些接口,封裝成動態庫,然后加載到內核中使用。 下面逐一介紹下這套編程接口 ### 1 掃描類接口 1. GetForeignRelSize_function GetForeignRelSize; 返回給數據庫對應數據源的規模信息 2. GetForeignPaths_function GetForeignPaths; 優化器接口,提供對應數據源的查詢路徑。 3. GetForeignPlan_function GetForeignPlan; 優化器接口,提供對應數據源的查詢計劃。 4. BeginForeignScan_function BeginForeignScan; 執行器接口,外部表掃描開始的準備工作。 5. IterateForeignScan_function IterateForeignScan; 執行器接口,外部表掃描實現,一次返回一個 tuple slot。 6. ReScanForeignScan_function ReScanForeignScan; 執行器接口,外部表掃描節點重新開始,重置所有狀態參數和內存結構。 7. EndForeignScan_function EndForeignScan; 執行器接口,外部表掃描節點結束,釋放資源。 ### 2 更新數據接口 1. AddForeignUpdateTargets_function AddForeignUpdateTargets; 構造要更新的外部數據源的目標列信息 2. PlanForeignModify_function PlanForeignModify; 構造外部數據源修改的(包括insert update delete的)的數據結構 3. BeginForeignModify_function BeginForeignModify; 執行器接口,數據更新節點的數據準備 4. ExecForeignInsert_function ExecForeignInsert; 執行器接口,insert 一行數據 5. ExecForeignUpdate_function ExecForeignUpdate; 執行器接口,update 一行數據 6. ExecForeignDelete_function ExecForeignDelete; 執行器接口,delete 一行數據 7. EndForeignModify_function EndForeignModify; 執行器接口,修改結束,釋放相關資源 8. IsForeignRelUpdatable_function IsForeignRelUpdatable; 執行器接口,修改結束,釋放相關資源 ### 3 查詢計劃展示接口 1. ExplainForeignScan_function ExplainForeignScan; 展示掃描節點的相關信息 2. ExplainForeignModify_function ExplainForeignModify; 展示修改數據節點的相關信息 ### 4 外部數據源統計信息接口 1. AnalyzeForeignTable_function AnalyzeForeignTable; 分析外部數據的數據分布狀況接口 ### 總結 1. 用戶可以根據需求實現他們,如只需要讀取數據,則不用實現第二部分; 2. 除了支持讀取數據相關接口,還支持了對統計信息的接入。這樣,PostgreSQL 真正的把外部數據源當作了“表”。考慮到了數據的規模,使得優化器合理的規劃了外部表的執行路徑。和執行階段執行器深度結合。整套接口設計清晰分工明確; 3. 這套接口的實現可以參考已經實現的?[PostgreSQL_FDW](http://www.postgresql.org/docs/9.4/static/postgres-fdw.html)。 ## GreenPlum external table ### GreenPlum external table 和 PostgreSQL FDW 的區別 GreenPlum external table 在實現上和 PostgreSQL FDW 完全不同,有自己的特點: 1. GreenPlum 只提供了兩個對外的接口 readfunc 和 writefunc; 2. GreenPlum external table 接口和內核交互的的內容是數據塊,而 PostgreSQL FDW 是 tuple slot。 也就是說,通過 PostgreSQL FDW 需要把外部數據源做完整的行列解析,而 GreenPlum external table 則不同; 3. 最大的不同 GreenPlum external table 執行過程中是驅動 segment 工作,可以通過這個接口讓所有 segment 同時并行工作并行讀寫數據,大大提高了整個集群的性能; 4. GreenPlum external table 沒有像 PostgreSQL FDW 那樣的讀取統計信息,并提供給優化器的接口,在復雜查詢場景下使用 GreenPlum external table 可能查詢計劃不是最優的; ### GreenPlum external table 接口 1. readfunc 按數據塊讀取數據 2. writefunc 按數據塊寫數據 ### 從 oss 讀取數據 基于上述編程接口,我們開發了一套用于從 oss 導入數據到 GreenPlum 和 PostgreSQL 的插件,性能杠杠的。幫助云上用戶更好的使用 RDS 數據庫產品。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看