簡體   English   中英

使用CQL腳本的Cassandra Schema Management

[英]Cassandra Schema Management with CQL scripts

致Cassandra專家:我的任務是提出有關Cassandra CQL腳本管理和部署的建議。 團隊如何管理(應該管理)大量的CQL腳本(模式定義腳本(DDL),數據操作腳本(INSERT / UPDATE / DELETE)從Cassandra開發的開始以及隨后對應用程序模式模型的更改。如果可以的話,我想指出,開發團隊的規模並不小(每個應用程序功能區域有10多個開發人員)。

一種方式(可能是錯誤的方式)是做典型的關系數據庫商店會做的事情:app開發人員或開發dbas設計並創建ddl,dml等,腳本,在版本控制系統(例如SVN)中存儲和維護它們,以及使用一些自動化(可能像shell或perl腳本一樣簡單)在環境(dev,qc等)中部署腳本。 我認為在NoSQL解決方案中出現問題的地方如Cassandra是參與這三個步驟的演員。 1 - 設計和創建CQL腳本 - 應該由DevOps(cassandra管理員)還是應用程序開發人員完成?
(2)在SVN中存儲和維護它們 - 如果這類似於上面的(1)和(3)腳本的部署 - 如果來自應用程序開發的人這樣做(或)DevOps這樣做嗎? 我還想從應用程序模式控制和審計角度得到答案。 例如,對於上面的#1和#2,如果應用程序開發人員在SVN中設計,創建和存儲CQL腳本,那么如何能夠控制進入CQL模式的內容並防止代價高昂的錯誤。 如果有專門的單一團隊擁有數據模型而不是所有cassandra開發人員(類似於DBA / Administrators),則更容易實現該控制。

我希望那些之前完成此任務的人能夠深入了解大型環境中CQL代碼開發,部署和維護的選擇和最佳實踐。 一如既往地謝謝。

我認為您將面臨的主要問題是您需要編寫代碼來執行一些遷移,這與在典型SQL場景中應用增量補丁相比具有顯着差異。 可以使用DevOps / DBA樣式中的cqlsh工具輕松應用模式的基本更改(使用CQL定義)。 這些類型的更改包括添加列和刪除列。 但是如果你需要做一些更基礎的事情,那么你將不得不編寫CQL客戶端代碼來遷移舊數據。 對於您的應用程序所需的更多非規范化和非聲明性索引,尤其如此。

FWIW和YMMV我能夠自動化CQL模式管理的一個方面,即找到一種方法來保持模式和應用程序代碼同步。 為此,我編寫了一個CQL模式編譯器 ,用於生成樣板應用程序源代碼,以便數據綁定始終與Cassandra中的當前模式同步。 但這只是整個問題的一個方面。

暫無
暫無

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

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