日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

企业级数据库新型研发模式——数据管理DMS实践

發布時間:2024/8/23 数据库 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 企业级数据库新型研发模式——数据管理DMS实践 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019阿里云峰會·上海開發者大會于7月24日盛大開幕,本次峰會與未來世界的開發者們分享開源大數據、IT基礎設施云化、數據庫、云原生、物聯網等領域的技術干貨,共同探討前沿科技趨勢。本文整理自數據庫專場中阿里云智能技術專家王天振 (為知)的精彩演講,傳統數據庫研發模式不僅困難重重,并且效率低下,而基于DMS的企業級數據庫新型研發模式卻能夠做到研發高效,變更穩定和數據安全,本文就為大家介紹阿里巴巴根據自身經驗沉淀下來的企業級數據庫新型研發模式。

數據庫專場PPT下載

本文內容整理自演講視頻以及PPT。

本次分享的內容是企業級數據庫新型研發模式,這種研發模式在阿里巴巴集團內部已經應用了將近十年的時間。阿里巴巴內部有大約數十萬的研發人員,而這數十萬研發人員每天都會產生很多數據庫變更、查詢以及數據導出的需求。而在阿里內部,僅通過兩位數的DBA就能夠滿足數十萬研發人員全部的數據庫操作需求,這背后所依靠的正是企業級數據庫新型研發模式。

本次分享將主要圍繞以下三個方面:
一、云時代數據庫的研發挑戰
二、新型研發模式概述
三、數據管理DMS最佳實踐

一、云時代數據庫的研發挑戰

數據庫研發的全生命周期
數據庫研發的全生命周期如下圖所示。這里的數據庫研發指的是一款產品在其創作與迭代過程中,研發人員所需要參與的涉及到數據庫的相關工作,這些工作就叫做數據庫研發。數據庫研發的全生命周期主要劃分成了7個部分,分別是實例管理、權限管控、表結構設計、數據階段、SQL查詢、SQL審核以及性能診斷&優化,這些都需要研發人員、DBA、運維人員以及項目的負責人參與進來。

傳統數據庫研發面臨的挑戰

傳統數據庫研發方式需要面對三個主要的挑戰,即研發效低、數據安全無保障、變更風險大。

研發效率低:傳統數據庫研發模式下,研發人員、運維人員甚至測試人員等產品中涉及到的所有相關人員可能都需要接觸數據庫,在這個過程中需要與DBA進行溝通,比如研發人員告知DBA今晚8點想要發布一個表結構。然而,在晚上8點的時候可能突然出現了業務高峰,就需要取消表結構的發布,這樣的過程需要研發人員與DBA以及項目Leader反復溝通,使得溝通成本變得非常高。此外,這種方式也使得研發規范難以落實,研發規范往往是根據DBA的經驗總結而成的,可能推薦了主鍵的使用方式以及索引和列的類型等。但是,由于研發人員的能力參差不齊,想要讓整個研發團隊的全體成員都能夠遵守研發規范,往往很難落實。如果通過文本或者培訓來落實,不僅成本比較高,而且難度也比較大。而且多環境研發也是一個難題。對于產品研發而言,可能有測試環境、開發環境,如果處在金融領域,可能有更加復雜的環境。針對不同的環境,研發方式也各有不同,如果還是需要和人進行溝通,就會使得溝通成本、研發時間以及功能上線時間都無法控制,進而造成研發效率的低下。
數據安全無保障:傳統數據庫研發模式下,DBA會給研發人員一個數據庫賬號,或者團隊共用一個賬號。這些賬號可以實時地獲取數據庫信息,如果數據庫中存儲了業務敏感信息,還有可能在不知情的情況下發生信息泄露。而傳統數據庫研發模式下,往往沒有審計或者審計比較弱,研發人員到底查了多少條數據,返回了哪些數據,DBA可能也不清楚。此外,當有人員離職或者轉崗的時候,對于數據庫賬號的處理問題,都是數據安全需要考慮的范圍。
變更風險大:首先,表結構變更鎖表會影響業務,比如在傳統數據庫研發中做了一個DDL,直接把線上的IOPS打上去了或者直接鎖表,使得業務無法讀取數據。這種情況下,如果比較嚴重就會造成故障,如果不嚴重可能使得業務出現抖動。其次,變更誤操作無法實現快速恢復,本來只需要更新10條數據,但是遺漏了WHERE條件就將全部的數據都修改了,這樣該怎么辦?最后,業務高峰期的變更更加難以防范,研發人員提出在8點進行變更,而DBA可能因為負責多條業務線不清楚每條業務線的高峰期,而在8點做變更時遇到業務高峰期,產生了故障。因此,如何從研發層面攔截高峰期的變更也都是傳統數據庫研發模式所需要面對的挑戰。

二、新型研發模式概述

阿里巴巴擁有數十萬的研發人員,如果不去解決在數據庫研發生命周期中的這三個問題,就會使得業務受到嚴重受影響。因此,阿里巴巴在使用DMS的過程中,提出了一種新型的數據庫研發模式。阿里巴巴所提出的新型數據庫研發模式需要多種角色參與進來,技術負責人需要把控所有數據庫,可能由CTO或者數據庫團隊的Leader承擔;還有就是DBA或者運維人員;再有安全管理人員,最后還有產品研發團隊的成員。

數據庫新型研發模式主要分為兩個階段。第一階段從技術負責人開始,會先把DBA、業務Leader以及研發等的角色劃分出來,并且制定安全規則,比如每個人能查多少數據,每天可以查多少次,以及變更時間范圍等,還需要進行資源采購,這些就是技術負責人需要做的事情。DBA和運維人員需要制定一些規范,比如每個表里面不能超過幾個索引,必須有什么樣的主鍵和UK,表名或者列名必須要加有什么樣的業務屬性等。此外,還需要設置一定的變更規范,比如幾點可以變更,同時可以變更幾張表,以及表的大小限制等,這些規范都需要由DBA來落實。下一個步驟就到研發、測試和運營人員了,此時資源、規范以及業務線都已經準備好了,所需要做的就是申請數據庫的權限,進而執行數據查詢、導出以及對于表結構的變更和性能的查詢等,這些研發人員常用的需求在研發流程中都可以實現全自助。

在第二階段,研發人員發起一個申請工單提交上去,DMS會將DBA的經驗和建議提供給研發人員,幫助研發人員優化自身的SQL。如果因為某些原因或者需求必須要違背一定的規范,就需要上升到另外一級進行審批把控。在這個部分,DMS會將風險收集起來提供給審批人,而整個審批過程可以實現自定義,也就是說企業可以根據自身的業務屬性決定誰來審批。審批把控通過之后,則直接由發起人進行SQL的落地執行。最后一點就是全局風險掌控,技術負責人可以在產品里面查看今天業務被查詢了多少次,有幾個張表發生了變更,業務增長情況如何,哪些人員查詢了哪些庫,返回了多少數據,并且可以看到一些數據庫風險報告和數據安全報告,包括安全管理人員提供的數據審計報告,這大致就是整個新型數據庫研發流程。

三、數據管理DMS最佳實踐

數據管理DMS簡介

下圖基本上展示了DMS的整個能力范圍,其下層支持了二十多種的數據源接入,并且能夠進行統一的管理。DMS上層提供了非常豐富的功能供研發使用,基本上不需要DBA參與中間過程,而只需要做把控就好了。在風險把控之外需要進行審批的,才會上升到上一級,而不需要風險上升的只需要進行審計即可。DMS通過研發規范、權限控制、操作攔截以及數據脫敏、變更回滾等功能,保證了數據安全,并且提升研發效率。

安全與效率:權限管控

接下來從幾個場景來介紹數據管理DMS最佳實踐。第一個場景就是權限管控。簡單而言,創建一個新的業務,這個業務涉及到新的數據庫,這種情況下,運營、開發、測試、審計以及實習生等都需要擁有查詢數據庫的權限。因此就需要給與他們一個賬號,傳統數據庫研發模式中,都是找DBA進行溝通或者為團隊提供一個通用賬號。如果和DBA進行溝通,DBA還需要根據具體的需求在郵件里面寫清楚為研發人員申請了什么賬號,并且需要去數據庫實例上為用戶賦予相應的權限,整個流程很復雜,溝通成本也很高。

如上圖所示,傳統的數據庫研發模式有幾個缺點。首先,DBA進行賬號授權,僅僅是數據庫層面的操作,而無法打通企業的組織架構,DBA并不清楚賬號的真實使用者是誰,只能認為記錄下來是誰就是誰。其次,還有多庫多賬號問題。DBA手中可能管理了10個實例和200個數據庫,這些實例和庫甚至到表級別都需要細分下來進行整理,這個過程中授權數量非常龐大,實例數和機器的數量也很多。第三點,溝通效率低,并且運維成本高。第四點就是SQL查詢和執行記錄的審計比較困難,數據庫本身的審計能力基本為零,可能DBA只能看到SQL執行了,但是并不能看到SQL影響了多少行數據以及具體造成了什么影響,也無法知道具體是誰執行的。此外,在傳統的數據庫研發模式下,可能因為上述與DBA溝通的方式過于繁瑣和困難,因此一些企業或者團隊干脆使用通用賬號,這就會帶來安全上的問題等。以上這些是現有的場景,也是所需要面對的挑戰。

而在企業DMS中,則為數據庫和人員構建了新的授權管理體系,即DMS統一授權管理體系。此時,數據庫只需要將權限授予DMS,而DMS可以再將權限進一步授權給研發、運維等人員。相關的人員只需要在DMS中輸入所需要申請哪個庫的哪種類型的權限(可以細化為查詢、導出以及變更三種類型),申請時間為多久等信息即可。并且不同于數據庫權限僅能限制到表級別,DMS授予的權限可以細化到列級別。對于敏感列的數據而言,可能查詢出來就直接是脫敏之后的數據了。當相關人員輸入完上述信息,提交申請,如果所申請的是非核心數據庫的權限,直接到研發Leader或者DBA審批完成就可以獲得了,如果出現人員離職或者過期等情況,數據庫權限都可以實現自動回收。這樣不僅能夠解決傳統授權方式所帶來的一些問題,還能夠使得效率大大提升,并且需要參與的人員也更少。

常規的數據查詢需求有風險嗎?

這里有一個問題,就是常規的數據查詢需求有風險嗎?比如研發人員說他要排查線上的問題,運維人員說他要查過去一年的業務數據,如果處在金融場景的話,大部分企業可能都不會給這些人員真正的數據庫賬號,因此面對這樣的需求就會落到兩種解決方案上。

第一種方案是集中式管控,對于這種方案而言,責任就落到了DBA身上,讓DBA幫研發和運維人員查詢業務數據。另外一種方案就是松散式管控,也就是讓研發人員直接到數據庫上進行查詢。但是這兩種方案都會帶來一些問題,如果使用集中式管控,作為DBA而言,可能各個業務團隊都有各種各樣的需求,而自身的工作能力是有限的,每天所能做的也就只是幾十次查詢,并且面對這些需求,對于DBA自身而言,也不會得到任何成長。而且這些需求也都是機械化的,并且還存在DBA的單點瓶頸,往來郵件的溝通成本非常高。而如果使用松散式管控,研發人員拿著一個賬號到數據庫上隨便查,這就可能因為任意的查詢導致數據泄露,也可能因為輸入了爛SQL將數據庫打掛或者將業務搞垮,也有可能因為誤操作將數據弄錯了,這些風險可能會導致業務產品的迭代速度不可控。而無論對于研發Leader還是DBA而言,都需要盡量避免這些風險。

安全與效率:數據查詢

那么,在DMS中是如何避免上述風險的呢?DMS提供了可控的SQL查詢操作,其包含了全局權限管控、風險識別、數據脫敏、操作審計以及安全規則引擎等。對于前面所提到的場景而言,研發、測試、運營發起一條SQL查詢之后,過程中會有三個攔截點,第一個攔截點是權限檢查,其會判斷是所執行的SQL語句否有相應數據庫和數據表的權限,進一步細化地判斷所查詢的機器是否是可授權的。DMS還會提供一些智能提示,并且能夠提供歷史SQL的保存、模板SQL以及格式化等功能。通過了第一個檢查點說明用戶本人的權限以及查詢SQL的權限沒有問題。

第二個檢查點會執行風險預警,也就是判斷用戶所發起的這條SQL是否存在風險,是否需要針對該條SQL實現主備分離,進而到備庫上去執行查詢。這部分還會生成執行計劃,來判斷該條SQL造成的影響是否會遠大于預期。如果預期的影響會遠大于預期,那么執行計劃就會被攔截掉。

第三個檢查點會對于高風險語句進行攔截,比如在DBA設置的規范里面不允許用戶直接執行沒有WHERE條件的SQL語句,可以直接攔截掉存在較高風險的SQL語句。在第三個檢查點還可以進行執行人限流,比如某人在一天之內已經查詢了兩萬條數據,如果他還需要繼續查詢就可能存在安全問題,因此也會對其請求進行攔截。

當風控引擎執行完成之后,DMS就認為這條SQL可以丟到數據庫里面執行,但這條SQL不一定就是安全的。為了保證數據庫的安全和穩定,也需要一定的策略。比如設置超時機制,比如一條SQL只能執行60秒,超時自動中斷,這樣可以避免單條SQL執行超過60秒,進而產生不可控的影響。第二個策略就是使用全局連接池,可以避免DMS創建過多的連接。第三個策略就是限制結果行數,用戶一條SQL執行查詢,可能會返回幾萬條數據,但是這樣的數據量可能并不是他所預期的,用戶可能只想看一下這張表里面有沒有數據,因此可以限制查詢結果的行數。此外,DMS還可以做實例性能實時探測,能夠實時地顯示在某條SQL在執行的過程中數據庫實例的性能表現。實例性能降低可能是因為SQL影響,也可能是因為正處于業務高峰期,而通過實例探測來發現異常,就可以實時中斷掉SQL的執行。

當結果查詢返回之后,還會存在一個攔截點,就是對結果風險的預警。數據返回之后需要進行數據安全上的檢查,分析返回的數據里面是否存在敏感數據,如果存在,還需要對于敏感數據進行脫敏。此外,DMS還會分析某條SQL語句執行完成之后,影響了多少行數據,查出了多少行數據以及哪些列,并對于這些數據進行真實的審計。除了數據審計之外,DMS還會進行業務審計以及操作審計,也就是用戶發起的SQL是什么,造成的影響如何都會審計下來。

DMS還擁有一個全局的安全規則引擎,整個過程中要不要做主備分流,執行語句的檢查粒度如何,比如執行計劃所需要攔截的閾值、高風險語句等都是在安全規則管控引擎里面設置的。安全管控引擎進行攔截所依賴的經驗來自于DBA和實際的業務,不同的企業或者不同的團隊都可以在安全管控引擎上自己定義相應的經驗。經過了上述的各個步驟,數據查詢的整個過程就完成了,并將最終結果展示給了用戶,并且提前避掉了之前傳統數據庫研發模式所面臨的風險。

表結構變更要很小心!

在進行表結構變更時需要很小心。以一個具體的場景作為例子,一個核心業務表負責的是24小時在線業務,這個表非常大并且沒有業務低峰期。在這種場景之下,研發同學要執行一個DDL,根據經驗來說,這樣一定會造成很高的IOPS,還會造成業務抖動。那么,如何避免這樣的問題呢?此外,可能還會有其他的問題,比如業務同學說表的主鍵是int類型,而因為數據量急速增長,馬上就要超出int類型所能表示的范圍了,再跑就查不到數據了,業務就會出現故障,此時該怎么辦?對于這樣數據量又大,流量又高的數據表,在DMS中如何避免因為表結構變更而造成的問題呢??

之所以造成上述問題,主要存在兩個原因,一者是這張表的主鍵使用了int類型,以為一般而言應該使用bigint類型,二者需要考慮如何對于這樣的表做DDL而不影響業務。

安全與效率:表結構設計

那么DMS是如何實現高效研發流程中的表結構設計的呢?首先,研發人員需要提交一個對于某張表進行變更的工單,而在表的設計階段則存在一些約束,比如索引、列以及命名的規范等,像上述場景中使用int作為主鍵的數據類型在這個階段就會被攔截掉,必須要使用bigint作為主鍵的類型。此外,在設計階段也可能存在這樣一種情況,同一個研發團隊的兩個人合作實現一個業務需求,每個人都需要做一個DDL,可能涉及到一張表,也可能是兩張表,如果是兩張表還可能存在業務交叉。這種情況下,在表結構設計中會強制他們參與到一個工單里面進行協作,也就是進行表字段級別的協作。需要他們有一致的設計副本,發布時間也要求必須一致,這樣才能跟上功能迭代的速度。設計階段完成以后,研發人員可以認為現在設計的副本已經完成了,測試環節也驗證通過了,接下來可以發布到線上去。而在發布過程中不可避免地會出現業務需求的變動,或者領導認為設計不合理等情況,此時就可以實現回退撤銷,并進行重新設計,這些都是在設計階段可以做的事情。

當確認表格設計沒有問題就到了發布階段,這個階段需要為TL或者DBA提供一些決策信息來判斷發布是否合理。DMS會將一些風險數據,比如這張表有多大,有多少個索引,將會做什么操作,會對數據庫造成什么影響等收集起來并匯總給審批人,由審批人決定是否可以執行。即便研發人員因為技術能力不夠,或者在提交表結構設計時沒有充分地考慮各種場景,在審批階段DBA或者TL都可以拒絕掉發布請求。

發布完成以后,就到了執行階段。在執行階段并不能保證一定是安全的,而DMS里面有幾個策略能夠降低變更風險,比如保證所有變更都是不鎖表的,像前面提到了主鍵從int變為bigint在MySQL中一定是鎖表的,而在DMS里面提供了無鎖表結構變更功能,其能夠保證覆蓋到原生DDL覆蓋不到的地方,這樣不僅能夠保證表在變更時對業務不會產生影響,還能保證對于IOPS也不會產生影響。第二個策略就是DDL并發控制,DDL在執行過程中,可能會使得多條SQL在執行過程中會產生沖突,而在DMS里面可以設并發控制,來設置在一個庫上或者一個實例上最多有幾條SQL同時執行,以此避免沖突。此外,還有鎖等待檢測功能,比如業務上有一個大的Update, DDL發上去之后,導致業務全部停止了,就會造成故障,而DMS會提供一個鎖等待來檢查現在的表上是否有鎖,如果幾秒鐘都等不到就放棄更新,以此來避免風險。此外的實例性能探測、變更中斷策略也都是為了不影響業務。最終,表的變更就執行結束了。

在表結構設計方面,DMS同樣也提供了一個安全規則引擎,可以設置一定的閾值,設置哪些點開啟,哪些點關閉,這些都可以由DBA進行操作。

安全與效率:數據變更

數據變更的需求十分常見,比如往往需要更新、插入或者刪除一些業務數據,就需要實現數據變更。在傳統的數據庫研發模式下,需要提交一條SQL,之后還需要經過TL、DBA的層層審批,可能幾個小時甚至一兩天就過去了。

傳統數據庫研發模式下,實現數據變更的過程耗時比較久,而且最終還是需要DBA來執行。而DBA一天大約只能處理20個工單,這種方式使得溝通成本很高,也容易引發故障。而在DMS中,所有的工單都可以由研發人員自助提交,而DMS可以根據內置的DBA經驗進行風險決策,判斷是否需要上升到TL甚至DBA層級來確認。如果不需要上升風險等級,大約5分鐘左右就可以完成自動審批,之后研發人員直接執行SQL即可,完全不需要其他人員的參與,相比于原來的模式極大地提升了效率。

更多的功能

除了上述所分享的功能之外,DMS還提供了很多其他的功能。DMS在AnalyticDB、POLARDB、RDS for MySQL中都作為工具進行了輸出。總體而言,DMS能夠幫助數據庫研發流程做到研發高效、變更穩定以及數據安全。在研發高效層面,DMS能夠提供高效的研發流程、全局的數據庫管理、便捷的數據查詢、易用的數據分析以及通暢的數據庫觸達;在變更穩定層面,DMS能夠提供智能的SQL風險審核、不鎖表結構變更、不鎖表數據變更、可靠的SQL執行以及精準的數據回滾;在數據安全層面,DMS能夠提供統一的授權管理、可控的數據查詢、智能的數據脫敏、精確的操作審計以及定制的安全規則。

DMS實踐下的全生命周期

如下圖所示的是DMS實踐下的全生命周期。DMS能夠支持數據庫研發的全生命周期的各個部分,在混合云實例管理方面,可以用戶通過DMS購買云實例、同步混合云實例并且
創建新數據庫。在分級權限管控方面,通過DMS可以設置變更、導出、查詢權限,可以針對庫、表、敏感列設置權限,并且能夠做到統一授權管理和個人賬號綁定。在表結構設計方面,DMS能夠幫助MySQL、PolarDB、DRDS、Oceanbase等數據庫設計表結構,并且能夠實現多套環境發布、實現不鎖表的表結構變更以及變更窗口管控。在數據方案方面,DMS能夠實現不鎖表數據變更、歷史數據清理以及對于數據的訂正和導入、導出。在SQL查詢方面,DMS能夠實現數據脫敏、影響行數提醒、可控數據查詢、跨庫查詢以及數據分析。在SQL審核方面,DMS實現了應用代碼審核、SQL文本和規范約束檢查以及索引推薦。在性能診斷&優化方面,DMS能夠預測空間和性能的變化趨勢,進行SQL診斷優化,并且分析會話和實時性能。


原文鏈接
本文為云棲社區原創內容,未經允許不得轉載。

總結

以上是生活随笔為你收集整理的企业级数据库新型研发模式——数据管理DMS实践的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。