使用 Cassandra、Astra 和 Stargate 構建儀表板 | baeldung
在本文中,我們將構建“Tony Stark 的復仇者聯盟狀態儀表板”,復仇者聯盟使用它來監控團隊成員的狀態。
這將使用DataStax Astra構建,這是一個由Apache Cassandra提供支援的 DBaaS,使用Stargate提供額外的 API 來使用它。最重要的是,我們將使用 Spring Boot 應用程式來呈現儀表板並顯示正在發生的事情。
我們將使用 Java 16 構建它,因此請確保它已安裝並準備好使用,然後再繼續。
DataStax Astra 是由 Apache Cassandra 提供支援的資料庫即服務產品。這為我們提供了一個完全託管、完全託管的 Cassandra 資料庫,我們可以使用它來儲存我們的資料,其中包括 Cassandra 為可擴充套件性、高可用性和效能提供的所有功能。
除此之外,Astra 還整合了 Stargate 資料平臺,該平臺通過不同的 API 公開完全相同的底層資料。這使我們能夠使用 REST 和 GraphQL API 訪問傳統的 Cassandra 表——這兩者與更傳統的 CQL API 100% 相容。這些可以使僅使用標準 HTTP 客戶端(例如 Spring RestTemplate)就可以非常靈活地訪問我們的資料。
它還提供了一個 JSON 文件 API,允許更靈活的資料訪問。有了這個 API,就不需要模式,如果需要,每條記錄都可以是不同的形狀。此外,記錄可以根據需要儘可能複雜,支援 JSON 的全部功能來表示資料。
但這確實是有代價的——文件 API 不能與其他 API 互換,因此提前決定如何對資料進行建模以及最適合使用哪些 API 訪問它很重要。
我們正在圍繞 Cassandra 之上的 Astra 系統構建我們的系統。這將直接反映我們對資料建模的方式。
Cassandra 旨在以非常高的吞吐量處理大量資料,並以表格形式儲存記錄。Astra 新增了一些替代 API——REST 和 GraphQL——以及表示文件和簡單表格資料的能力——使用 Document API。
這仍然得到 Cassandra 的支援,它以不同的方式設計模式。在現代系統中,空間不再是一種限制。複製資料不再是問題,無需跨資料集合或分割槽進行連線。這意味著我們可以對集合中的資料進行非規範化以滿足我們的需求。
因此,我們的資料模型將圍繞兩個集合構建——事件和狀態。事件集合是曾經發生過的每個狀態事件的記錄——這可能會變得非常大,Cassandra 非常適合這種情況。這將在下一篇文章中更詳細地介紹。
此集合中的記錄將如下所示:
avenger falcon timestamp 2021-04-02T14:23:12Z latitude 40.714558 longitude -73.975029 status 0.72 |
這為我們提供了單個事件更新,給出了更新的確切時間戳和位置以及復仇者狀態的百分比值。
statuses集合包含一個包含儀表板資料的文件,它是進入events集合的資料的非規範化彙總檢視。該文件將類似於以下內容:
{ "falcon": { "realName": "Sam Wilson", "location": "New York", "status": "INJURED", "name": "Falcon" }, "wanda": { "realName": "Wanda Maximoff", "location": "New York", "status": "HEALTHY" } } |
這裡我們有一些不會改變的通用資料——名稱和實名欄位——我們有一些從這個復仇者的最新事件中生成的摘要資料——位置來自緯度和經度值,狀態是事件狀態欄位的一般摘要。
本文重點介紹狀態集合,並使用 Document API 訪問它。我們的下一篇文章將展示如何使用基於行的資料的事件集合。
具體設定點選標題見原文
相關文章
- Cassandra + JSON?答案就是Stargate Documents APIJSONAPI
- 如何使用 Rancher Desktop 訪問 Traefik Proxy 儀表板
- ZingChart繪製金融儀表板GC
- 基於Elasticsearch和Kibana的COVID-19儀表板Elasticsearch
- 過分簡單,Tabluea儀表板與Smartbi自助儀表盤製作流程分享
- 使用KPI儀表板,建立完整的資訊資料生態系統KPI
- 報表和儀表板生成器Stimulsoft資訊:將所有資料嵌入資源
- 互動式儀表板!Python輕鬆完成!⛵Python
- 系統儀表板:System Dashboard Pro mac直裝版Mac
- 基於 Bootstrap 的響應式後臺儀表板boot
- Yao:一個用於建立Web服務和儀表板的低程式碼引擎Web
- Cube.js:開源儀表板框架的終極指南JS框架
- System Dashboard Pro for Mac(系統儀表板) 1.7.1啟用版Mac
- 適用多平臺的報表、儀表板工具2021年最新使用教程|影片教程|demo
- Cassandra 和 HBase的大表模型比較模型
- DevOps 團隊必備的 3 種指標儀表板dev指標
- VScode六月更新了Spring Boot儀表板VSCodeSpring Boot
- 虹科乾貨 | 什麼是商業智慧 (BI) 儀表板?
- laravel 使用schema構建器,新增構建表的列型別Laravel型別
- 理解cassandra架構架構
- 轉向線上儀表板——資料分析的“元宇宙”時代來了元宇宙
- Grafana 系列文章(十二):如何使用Loki建立一個用於搜尋日誌的Grafana儀表板GrafanaLoki
- 使用Golang和MongoDB構建 RESTful APIGolangMongoDBRESTAPI
- 使用Golang和MongoDB構建微服務GolangMongoDB微服務
- Grafana系列-統一展示-8-ElasticSearch日誌快速搜尋儀表板GrafanaElasticsearch
- 專案儀表板在專案管理軟體中的功能是什麼專案管理
- QuickBI助你成為分析師-儀表板多圖關聯的實現UI
- 使用Hector和Scala持久化Cassandra資料庫持久化資料庫
- 使用 Rust、OpenAI 和 Qdrant 構建 Agentic RAGRustOpenAI
- 儀表板對接海康威視攝像頭實現實時監控方案
- [譯] 使用 React 和 ImmutableJS 構建一個拖放佈局構建器ReactJS
- SMT智慧首件測試儀可以檢測哪些電路板和元件?元件
- 自定義儀表盤
- 使用 Oracle XML Publisher 構建線上報表應用程式OracleXML
- 【Oracle】scott使用者下表結構、初始化資料和建表語句Oracle
- 使用SlashDB,Go和Vue構建一個簡單的時間表應用程式GoVue
- 使用Spark和Cassandra進行資料處理(一)Spark
- 使用Rust和WebAssembly構建Web應用程式RustWeb