基于SQL的管道:Steampipe讓全世界都成為數據庫
想為流行平臺使用大量 API?想在數據庫中使用 SQL 完成所有操作?Steampipe Anywhere 是您的通行證。
譯自SQL-Based Pipelines: Steampipe Makes All the World a Database,作者 Andrew Brust。大家也可以觀看云云眾生s視頻號上關于 Steampipe 的內容。
許多公司都有自己的 API,用于編程訪問——眾多企業 SaaS 應用程序、超大規模云服務和 GitHub 等開發者服務。但所有這些 API 的工作方式都不同,并且需要使用 Python、Java 或 C# 等語言編寫命令式代碼。如果所有這些服務都能看起來像關系數據庫,從而能夠使用聲明式 SQL 對它們進行檢查,以及使用流行的商業智能 (BI) 工具對它們的內容進行報告和可視化,那豈不是很好?
普通的舊 SQL 可能會成為互聯網上眾多平臺的特定領域語言。
使用這種方法,普通的舊 SQL 可能會成為互聯網上眾多平臺的特定領域語言。可以通過聯接交叉引用平臺的不同方面,可以使用 WHERE 子句實現對特定應用程序項的精確定位,并且 SELECT 列列表允許您僅帶回您感興趣的那些項的特定屬性。
事實上,有一個很好的開源選項可以做到這一點。它被稱為Steampipe,它運行得非常好,擁有一個生態系統,其中包含一百多個特定于服務的插件,適用于 Airtable、GitHub、Jira、LinkedIn 和 Kubernetes 等平臺;數據庫服務,包括 MongoDB Atlas 和 Snowflake(用于管理數據,而不是數據庫中的數據);以及從基于文件的源(如 CSV 文件和 Google 表格)查詢數據。
現在,通過安裝 Postgres 或 SQLite 的擴展,有了一種更簡單的方法來使用 Steampipe。
讓這一切正常工作就像將 Steampipe 安裝到 Linux 環境(包括適用于 Linux 的 Windows 子系統)一樣簡單,然后拉取您感興趣的服務的插件并交互式地運行 SQL 查詢。簡單的文檔使您可以輕松了解每個插件支持的表模式,只需一個 SQL 查詢即可了解各種在線服務的詳細信息。
現在,通過安裝特定于 Steampipe 插件的擴展到Postgres或SQLite中,有了一種更簡單的方法來使用 Steampipe。這允許您直接從這兩個眾所周知的數據庫中查詢相應服務,而無需使用傳統版本的 Steampipe 實現的單獨 SQL 接口。這不僅可以實現不同服務之間的數據的聯合聯接,還可以實現這些服務與您自己的數據之間的聯合聯接。
可能性是巨大的,不僅出現在 SQL 提示符中,而且出現在任何可以與 Postgres 通信的 BI 工具中(基本上,所有工具)。同時,SQLite 實現使得可以在一系列極簡主義 Linux 環境中查詢此數據。
實際應用
此處適用的用例集非常龐大。例如,想象一下獲取客戶列表,其中包含您在 Salesforce 中跟蹤的客戶 ID,然后將其加入到本地業務數據庫中的客戶和銷售記錄中。
當您將信息轉換為表格數據時,會發生一件有趣的事情:它不僅可以被開發者和商業智能工具查詢,還可以用于其他領域。
然后想象一下獲取特定開發者在特定 GitHub 倉庫中代碼簽入的統計信息,并將這些匯總數據存儲在您的 HR 系統中和/或在您在 Tableau 或 Power BI 等工具中構建的儀表板中對其進行報告。
再舉一個例子:搜索 Slack 對話中對內部應用程序的提及,并將其與 Zendesk 中針對同一應用程序的公開工單進行交叉引用。
近乎即時的 SQL 滿足
想要一些技術細節?我們可以很快做到。安裝獨立的 Steampipe 變體就像在命令行中運行curl命令一樣簡單。之后,使用steampipe plugin install命令安裝您選擇的插件,并處理任何必要的身份驗證和連接詳細信息。從那里,只需鍵入steampipe query即可獲得一個交互式提示,用于輸入 SQL 查詢。
如果您發現這一切都很簡單(您應該這樣做),請注意,在 SQLite 或 Postgres 中使用 Steampipe 甚至更容易,因為您可能已經安裝了這些數據庫。
Jon Udell,Turbot的布道者,該公司是 Steampipe 的幕后推手(編輯:他也是 The New Stack 的撰稿人,包括撰寫有關 SQL 的文章)。Udell 逐步向我介紹了該產品的功能,以及如何安裝和使用它,直到我在自己的機器上運行它。如果您對詳細信息感興趣,請繼續閱讀,我們將探討一個具體示例,直接從我在 Udell 的支持下成功在我的計算機上執行的步驟中復制。
自己動手
要使用 SQLite 或 Postgres 與 Steampipe 協同工作,您只需安裝特定于插件的擴展并配置連接詳細信息。然后,您可以立即從現有的數據庫環境開始查詢。例如,要從 SQLite 中發現 Microsoft Azure 云帳戶中的資產,只需按照以下步驟操作:
- 從 Linux shell 執行以下命令以安裝特定于插件的 SQLite 擴展:
sudo /bin/sh -c "$(curl -fsSL https://steampipe.io/install/sqlite.sh)"
(以上內容可能看起來很神秘,但您可以直接從上面或從此處復制并粘貼。)
- 當提示輸入插件名稱時,只需鍵入“azure”并點擊 Enter,然后再次點擊 Enter 兩次以接受版本和安裝位置的默認值。
- 輸入以下 Azure CLI 命令進行身份驗證:
az login
接下來,在結果瀏覽器窗口中輸入您的憑據。
- 現在,啟動 SQLite,并從其提示符中使用以下命令加載插件的擴展:
.load <install folder>/steampipe_sqlite_azure.so
(其中 是您在步驟 1 中所在的文件夾。)
- 現在使用以下命令設置您的 azure 訂閱:
SELECT steampipe_configure_azure('subscription_id="<subscription id>"');
將 替換為您要探索的 Azure 租戶中的實際訂閱 ID。
- 就是這樣!您現在可以查詢各種 Azure 資產。例如,要列出特定 Azure 存儲帳戶中的所有 Azure blob(基本上提供一個巨大的遞歸目錄列表),請使用以下 SQL 查詢:
SELECT name, container_name, storage_account_name, region, type, is_snapshot
FROM azure_storage_blob
WHERE resource_group=<resource group>
AND storage_account_name=<storage account name>
AND region=<azure region>;
當然,請務必將 、 和 替換為適合您自己環境的相應字符串(如果您對這些值進行硬編碼,請不要忘記引號。)
從這里開始更輕松
這就是全部內容。此外,步驟 1 和 2 永遠不必重復,步驟 3、4 和 5 也無需再次運行,直到您進入新的 SQLite 會話。這意味著您可以自由執行一系列后續 SQL 查詢,以獲取有關 Azure 環境的豐富附加信息。
想要安裝另一個插件擴展?只需重復上述過程,但輸入不同的插件名稱,然后啟動 SQLite,加載相應的steampipe_sqlite_xxx.so擴展,使用相應的steampipe_configure_xxx函數對其進行配置,然后開始查詢。每個 steampipe 插件都有簡單的文檔,列出了所有可查詢的表,并提供了大量您可以復制、粘貼、編輯和運行的示例查詢。
混搭天堂
當您將信息轉換為表格數據時,會發生一件有趣的事情:它不僅可以被開發人員和商業智能工具查詢,還可以用于其他領域,包括電子表格、無代碼/低代碼平臺、工作流系統,甚至機器學習和 AI 平臺。想象一下基于對公共 GitHub 存儲庫的觀察簽到或公司 Slack 頻道中的討論來構建一個關于開發人員生產力的預測模型。
一旦您讓事物看起來像行和列,各種可能性就會出現。Steampipe 建立了一個不斷發展的生態系統,可以優雅而穩健地實現這些場景。