簡體   English   中英

GemStone Smalltalk的ETL如何完成?

[英]How is ETL done for GemStone Smalltalk?

我想從( GemStone / S )重新開始。 我已經為關系數據庫完成了多個ETL轉換,但對於在GemStone / S上如何完成轉換仍然不甚了解

我想從其他來源將數據加載到GemStone中。 它可以是文件(csv,excel,xml,純文本等)或其他數據庫,例如SQL Server,Postgres,Oracle等。

從頁面上可以看到,有GemConnect連接到Oracle數據庫。 您如何從其他數據庫或文件中進行操作? 是否可以通過ODBC連接? 是否有任何數據泵可以這樣做,或者您只是“一個”自己而已?

最后,我要問的是如何創建一個暫存區域,您可以在其中清理,轉換數據,然后將其加載到GemStone DB中。 是否有任何示例或文檔說明如何完成?

注意:我發現只有類似的答案是關於Stephan Eggermont的 SO ,但這很簡短,沒有任何“真實”信息。

分期

我懷疑大多數環境將“ ETL /分段”作為一個單獨的步驟的原因是因為兩個端點有些僵化,並且沒有用於數據操作的良好編程語言。 也就是說,如果您具有TXT,CSV,XML,JSON或SQL,並且需要其他格式/架構,則必須進行“轉換”。 但是,如果您在GemStone中工作,則可以在Smalltalk中進行轉換-不需要單獨的步驟。

如果您有文件(TXT,CSV,XML,JSON等),請使用GsFile 實際上,如果另一個端點可以處理文件,則只需以一種約定的格式從一個源導出,然后以另一種格式導入(通過GemStone進行轉換的“繁重工作”)。 文件更簡單,它們避免了通信層,並且使調試變得很簡單(如果源未創建文件,則是源的問題;如果它在掛起的目錄中則尚未處理它(目標問題) );如果它位於完整目錄中,則表明目的地已經對其進行了處理)。

使用這種方法,您可以在GemStone中啟動(一個或多個)后台作業以監視目錄,打開文件以進行讀取,處理該文件,然后將其移動到另一個目錄。 除了基本的字符串操作外,您只需要使用GsFile。 然后,您可以在數據庫中創建和更新對象。

ODBC

盡管可以從GemStone向ODBC庫(或通過GemConnect完成的數據庫的本機庫)進行FFI調用,但這可能不必要地復雜。 相反,我將使用與外部系統具有更好交互性的工具來創建另一層。 該層可以編寫文本文件(如上所述),或者使用適當的接口直接與GemStone通信。 我的傾向是使用Dolphin提取數據(良好的ODBC支持),然后直接從Dolphin與GemStone通信。 您可以使用其他客戶端Smalltalk方言(Pharo,VA或VW),甚至使用另一種語言(我有一個學生正在研究通向GemStone的Python接口)做類似的事情。

O / R映射

同樣,這里您還需要一種方法來獲取一種格式的數據並將其轉換為另一種格式。 這些往往是特定於領域的,我們發現編寫Smalltalk代碼更加容易。 或者,您可以在Pharo,VA,VW等中使用GLORP之類的東西。

最佳實踐

我認為您在GemStone中沒有找到ETL的任何“最佳實踐”,因為這不是我們認為是外部過程或單獨步驟的東西。 只是如何與文件(GsFile),套接字(GsSocket),庫(CLibrary)或客戶端(GCI)通信。 從這里我們可以看一下內部處理問題,例如多個生產者和一個使用者(RcQueue),或者一個生產者和多個使用者( locking )。

因此,並不是GemStone應用程序不執行ETL,而是在內部執行ETL,而情況則取決於具體情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM