全文共4371字,預計學習時長13分鐘
全文共4371字,預計學習時長13分鐘
圖源:Unsplash
本期小芯給大家帶來的是GraphQL、Grafana 和Dash大亂戰,科普向,讓你茶余飯后的閑談多一份科學的氣息(高大上的談資)。
如果你對數據科學、數據操作或者數據可視化感興趣,那就更好啦,本文是你不可錯過的最佳選擇。
標題里的這些詞,相信你已經聽過。接下來,小芯將對它們進行逐一的詳細介紹,然后進行比較。
我們開始吧~
GraphQL、Grafana 和Dash
在以上三個工具中,除了GraphQL外,另外兩個用于數據可視化。
如今的數據可視化工具不再是Microsoft Excel電子表格所使用的標準圖表了。它們以更復雜的方式顯示數據,如信息圖、表盤和儀表、地理圖、波形圖、熱圖以及精細的條形圖、餅圖和散點圖。
這些圖像可能包括交互功能,使用戶可以操作它們或深入數據進行查詢分析。還可能包括指示器,用來在數據更新或出現預定義條件時提醒用戶。數據可視化已經成為現代商業智能約定俗成的標準。
無論如何,為使數據可視化,首先必須從某個來源中提取出數據。這個來源可以是傳感系統、API、數據庫等。同時需要理解數據的不同特征,并從中提取出有意義的、重要的和有趣的屬性。
數據提取還用來執行探索性分析,并從數據中提取相關信息。用于數據操作的方法和技術有很多,如Pandas、 R、 SQL、GraphQL等。所以我選取的主題之一GraphQL也是一種數據提取方法,但是與其它方法有很大的不同。
因此,首先從GraphQL開始吧。
GraphQL是什么?
如今大多數應用程序都需要從服務端中獲取數據,而這些數據被存儲在數據庫中。API應該為存儲數據提供符合應用程序需要的接口。否則,就需要對通過API獲取的數據進行某種過濾,以滿足應用程序的需要。
大多數人把GraphQL錯當作是一種數據庫技術。
這不是很準確,因為GraphQL是針對API的查詢語言,而非數據庫。從這種意義上說,它與數據庫無關,但可以在使用API的任何環境中有效使用。它支持聲明式數據獲取,因此可以與React/React Native完美結合,作為構建用戶接口的聲明性框架。GraphQL可以補充或完全替代REST API的使用。 REST和GraphQL的主要不同在于,RESTful API有多個端點用于返回固定的數據結構,而GraphQL服務端只暴露一個端點就能返回靈活的數據結構。
使用RESTful API最終會獲得不需要的數據。
例如,當調用environment/build/<id>端點時,會獲得所有和該特定build相關的數據。你可能會獲得這些返回數據,如date_created, date_updated, status等,但我們需要的只是作者的名字。這是RESTful API過度獲取的一個明顯的例子。 當調用environment/build/<id>端點不足以檢索到我們要查找的內容時,為了獲取build所屬的代碼庫,必須調用另一個端點environment/build/<id>/codebases。這種情況稱為不足獲取。
GraphQL使用自己的類型系統來定義API的模式,其語法稱為模式定義語言(SDL)。這個模式在服務端和客戶端間起著橋梁作用,定義客戶端如何訪問數據。 因為前端可以輕松的測試模擬數據,所以一旦模式定義好,前端和后端開發人員就可以獨立工作了。前端還可以從模式中獲取有用信息,如類型、查詢和變異。模式還提供型別安全,可以盡早捕獲類型錯誤,這對前后端的開發很有幫助。 查詢示例:
- query { books { id title author isbn price }}
在這個示例中,GraphQL服務端提供了單端點,調用這個端點可以得到所有必要的數據,而不會過度獲取或不足獲取。 支持GraphQL的流行編程語言:
· C# / .NET
· Go
· Groovy
· Java
· Javascript
· Kotlin
· PHP
· Python
· Ruby
· Scala
除了數據獲取方面的提升,性能優化、版本控制和易于上手也是應該嘗試GraphQL的一些原因。
Dash是什么?
Dash是用于構建響應式Web應用程序的開源python庫。兩年前它作為一種公開概念驗證出現在GitHub上。我們把這個原型放在網上,但Dash的后續工作是在幕后進行的。我們使用來自銀行、實驗室和數據科學團隊的私人試驗的反饋來指導產品的改進。 現在,我們很高興的宣布Dash的第一個公開版本不僅是企業級的,還是Plotly開源工具中的一流成員。如今,可以從python的包管理器使用 pip install dash下載Dash——它是完全開源的并且獲得麻省理工學院授權。
來自Dash App Gallery的示例儀表盤
Dash使數據科學團隊能夠專注于數據和模型,同時仍可以開發和部署企業級應用程序。通常需要一組后端和前端開發人員隊伍的任務都可以用Dash來完成。 Dash是一種基于python的框架,主要用于構建包含大量數據可視化的web應用程序。顧名思義,Dash專門用于創建基于web的儀表盤應用程序。但這需要在一些python庫的幫助下,通過純python或純R來完成。 這特別適合那些用python或R語言處理數據的人。Dash抽象出了構建交互式的web應用程序所需的所有技術和協議,因此對于開發者更加便利。Dash現在有開源版本和企業版本。
我們可以通過有吸引力的主題和任意類型的圖表來制作出色的數據可視化應用程序。它的美妙之處在于,它是由純python或R語言完成的。進一步來說,因為可以使用python從頭構建儀表盤,使用Dash時將有更大的靈活性。這樣就可以創建自定義的儀表盤。
Dash寫在Flask,Plotly.js和 React.js上,是構建擁有高度吸引力的儀表盤的數據可視化應用程序的理想工具。它尤其適合使用python進行數據處理的人。 Dash應用程序呈現在web瀏覽器上,因此是跨平臺的和可移動的。Dash是一個高層框架,它抽象了圖形、表格等UI組件的底層實現。 以下是使用Dash進行數據可視化的優點:
- 能創建可打印PDF格式的報告或者交互式的分析型web應用程序。
- 可自動匯報和監控數據流動
- 歷史存檔、版本控制、狀態跟蹤、便于審核和合規、創建制度記憶
- 由于Dash與之前討論的兩個框架相比是較新的框架,可以在這里得到關于Dash的整體描述性知識,以及如何使用Dash創建儀表盤。
Grafana是什么?
使用Grafana的氣候站儀表板(https://developers.bigclown/integrations/grafana-for-visualization)
Grafana是一個開源的、儀表盤式的分析監控平臺,其支持多種數據源,如Elasticsearch, Influxdb, Graphite, Prometheus, AWS Cloud Watch等。最重要的是,Grafana能將幾種數據源組合到一個儀表盤上,并添加行來組合單個面板(在UI中)。 使用Grafana可以查詢、可視化、報警和了解存儲在任意位置的指標,還可以創建、探索、共享儀表盤并培養數據驅動文化。 談到身份驗證,Grafana可以與LDAP, Google Auth, Grafana,Github集成。
然而,當你的公司使用SSO(SingleSign-On即單點登錄)之類的技術去處理身份驗證時,Grafana使其與現有的工作流更加輕松的協同工作。 Grafana還擁有由社區構建的儀表板,可以通過數據源、面板類型、類別和收集器來選擇它們??梢栽谶@里瀏覽一些儀表板。
若有與Grafana兼容的數據來源,只需設置這些數據來源并創建所需要的面板,以可視化想要展示的內容。這將從只有一行的空儀表盤開始,可以在其中放任何種類和數量的面板,每個面板負責一個視覺效果。
可以選擇自己喜歡的面板并增添到儀表盤上,就是這么簡單。選擇面板類型并探索與之交互的方式,可以輕松的創建動態和可重復使用的儀表盤,其中的變量作為下拉菜單出現在儀表盤頂部,可以在其中更改和交互。進一步可通過查詢來深入查看視圖。除此之外,還可以使用拆分視圖來進行相互比較。
可以用最少的工作來創建活動儀表盤,甚至能單獨查看日志。另一個有用的特性是為用戶提供了為其重要指標定義警報規則的空間。Grafana會持續查找最新的數據,并向Slack、PagerDuty、VictorOps等系統發送通知。 Grafana是非常用戶友好的工具,有大量吸引人的設計供用戶選擇。
比較
GraphQL與Dash和Grafana有明顯不同,因為它可以查詢存儲在任何的地方的必要數據。GraphQL有助于準確得到所需的數據,不多也不少。
在考慮如儀表盤這樣的應用程序時,其在效率方面確實很有用。另外是,盡管許多權威人士和初創公司希望能說服所有人使用GraphQL,它不會取代REST。但GraphQL確實是一種查詢和操作數據的簡單高效的方法。 Grafana和Dash是對不同來源的數據進行可視化的工具。在Grafana中,通過點擊儀表盤鏈接創建一個新的空白Grafana儀表盤。Grafana附帶大量可添加到儀表盤上的面板。只有與某些類型的圖形相關聯時,面板才有用。
圖形依賴于數據,所以添加到儀表盤上的每個面板都與一個數據源相關聯。所以Grafana會要求用戶添加連接有數據源的預定義面板和圖形。 而在Dash中,可以從頭開始創建自定義的儀表盤。但在繪制圖表和可視化數據方面,其操作又很容易??梢允褂脭祿蚣?,并將其提供給Dash中的圖形元素。所以Dash是可定制的并且是基于python的。
Dash基于React和Flask,而Grafana是用Go語言(由谷歌創建)和Node.js編寫的。盡管你可能認為使用Dash更費時費力,但如果熟悉了python或者R語言,這并不困難。 總之,如果你需要創建一個儀表盤,建議嘗試Grafana和Dash兩者。哪個更好取決于需求。
圖源:Unsplash
但是它們都提供了絢麗時尚的可視化效果,不僅信息量豐富同時還引人入勝。 當然如何靈活運用,還得看少俠你的神仙操作。
留言 點贊 關注
我們一起分享AI學習與發展的干貨
如需轉載,請后臺留言,遵守轉載規范


