精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

聊聊多版本業(yè)務(wù)模型設(shè)計(jì)

開發(fā) 前端
回滾其實(shí)很麻煩,包括已發(fā)布的回滾到上一個(gè)版本、發(fā)布中的回滾到草稿態(tài)。主要是前者很麻煩,尤其是有上下游使用了這個(gè)版本的數(shù)據(jù),一般是不允許輕易回滾的。

 本文轉(zhuǎn)載自微信公眾號(hào)「編了個(gè)程」,作者Yasin x 。轉(zhuǎn)載本文請(qǐng)聯(lián)編了個(gè)程公眾號(hào)。

最近業(yè)務(wù)上用到比較多的多版本場(chǎng)景。這里總結(jié)一下多版本業(yè)務(wù)模型設(shè)計(jì)的思路。

多版本需求梳理

先梳理一下多版本的一般訴求:

  1. 同一個(gè)數(shù)據(jù)經(jīng)過多次編輯后,會(huì)產(chǎn)生多個(gè)版本,其中歷史版本不能刪除掉,因?yàn)榭赡苡猩舷掠卧谑褂茫?/li>
  2. 多版本通常用于配置中,最新一個(gè)版本的配置通常可以多次修改、測(cè)試,確定后再發(fā)布;
  3. 已經(jīng)發(fā)布的歷史版本不能隨便修改,因?yàn)橛袛?shù)據(jù)在使用;
  4. 在消費(fèi)側(cè),一般默認(rèn)是使用最新已發(fā)布的版本;
  5. 多版本可能會(huì)有發(fā)布審批、與上一個(gè)版本的diff等需求場(chǎng)景;

多版本狀態(tài)機(jī)設(shè)計(jì)

一個(gè)多版本的業(yè)務(wù)模型,通常會(huì)有以下的狀態(tài)機(jī)。其中“廢棄”不是必須的,回滾操作也不是必須的(回滾操作會(huì)給代碼和表設(shè)計(jì)帶來很大的復(fù)雜性),發(fā)布中間可能會(huì)有發(fā)布中、審批中等狀態(tài)。

草稿可以在原版本編輯,但已發(fā)布的數(shù)據(jù)再編輯,就會(huì)生成一個(gè)新版本的草稿。

圖片

有時(shí)候也會(huì)有下線操作,這個(gè)時(shí)候所有版本的狀態(tài)就會(huì)被改為“已下線”。

多版本表設(shè)計(jì)

對(duì)于多版本而言,你需要有一個(gè)唯一標(biāo)識(shí)這個(gè)業(yè)務(wù)數(shù)據(jù)的字段,可以叫id?或者code。

同時(shí),需要一個(gè)字段來標(biāo)識(shí)版本,這個(gè)版本建議是一個(gè)遞增的數(shù)字,叫version?。有些業(yè)務(wù)期望版本是業(yè)務(wù)輸入的,或者有一個(gè)版本說明的概念,那可以新增一個(gè)字段叫version_desc。

我們可以把唯一標(biāo)識(shí)和版本拼接起來,作為這個(gè)數(shù)據(jù)在這個(gè)版本的唯一鍵,可以叫code_version?。通常是拼接成一個(gè)字符串,中間用某種特定的分隔符來區(qū)分,比如#?。那code_version?可能就長(zhǎng)這樣:A12334#3?。這里就要求code?里面不能有分隔符#,不然代碼邏輯處理起來就比較麻煩。

這里說一下這個(gè)拼接字段的必要性,因?yàn)樯舷掠瓮鶗?huì)存code + version。那上下游在列表查詢等場(chǎng)景來查詢數(shù)據(jù)的時(shí)候,如果沒有這個(gè)字段,只能循環(huán)一個(gè)個(gè)查,不能用where批量查詢。

另外一個(gè)必要的字段就是status來標(biāo)識(shí)當(dāng)前版本的狀態(tài)。

還有一個(gè)非必須的字段is_last_version?,用來標(biāo)識(shí)當(dāng)前這條數(shù)據(jù)是不是它的最新版本,無論是草稿態(tài)還是已發(fā)布還是已廢棄,它都會(huì)變成true。這里在待會(huì)兒下文的查詢要點(diǎn)中會(huì)解釋它的用處。如果不用這個(gè)字段也能查,但是需要group by order,整體查詢語句麻煩,效率低。在寫的時(shí)候多維護(hù)一下這個(gè)數(shù)據(jù),會(huì)讓查詢的時(shí)候方便很多。

其它的都是審計(jì)字段了。最終的建表語句可能長(zhǎng)這樣:

CREATE TABLE `t_xxx`  
(
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID',
`code` varchar(255) NOT NULL DEFAULT '' COMMENT 'code',
`version` int NOT NULL DEFAULT 0 COMMENT '版本',
`version_desc` varchar(255) NOT NULL DEFAULT '' COMMENT '版本說明',
`code_version` varchar(255) NOT NULL DEFAULT '' COMMENT 'code和版本',
`is_last_version` tinyint NOT NULL DEFAULT '0',
`status` varchar(255) NOT NULL DEFAULT '' COMMENT '狀態(tài)',
# 以下是業(yè)務(wù)字段...
`name` varchar(255) NOT NULL DEFAULT '' COMMENT '名稱',

# 以下是審計(jì)字段...
`create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創(chuàng)建時(shí)間',
`create_by` varchar(10) NOT NULL DEFAULT '' COMMENT '創(chuàng)建人',
`modify_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改時(shí)間',
`modify_by` varchar(10) NOT NULL DEFAULT '' COMMENT '修改人',
`deleted_at` bigint DEFAULT '0' COMMENT '刪除時(shí)間秒時(shí)間戳',
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code_version_deleted_at` (`code`, `version`, `deleted_at`)
) ENGINE = InnoDB
AUTO_INCREMENT = 5
DEFAULT CHARSET = utf8mb4
COLLATE = utf8mb4_0900_ai_ci COMMENT ='xxx表'

生產(chǎn)端和消費(fèi)端的查詢要點(diǎn)

生產(chǎn)端就是配置數(shù)據(jù)的地方,消費(fèi)端就是使用的地方。生產(chǎn)端和消費(fèi)端有一些區(qū)別,生產(chǎn)端往往要看最新的版本,包括草稿等狀態(tài),還要能修改。而消費(fèi)端一般只用最新已發(fā)布的版本。

生產(chǎn)端

生產(chǎn)端的查詢,可以按照is_last_version為true來過濾,這樣就只查每一個(gè)code的最新版本的數(shù)據(jù)。

同時(shí),每個(gè)code也應(yīng)該返回一個(gè)version?列表,是這個(gè)數(shù)據(jù)code_version的集合,以便用戶查看和跳轉(zhuǎn)歷史版本。

生產(chǎn)端的寫入,需要維護(hù)好狀態(tài)、版本、is_last_version等字段。在編輯的時(shí)候,要判斷當(dāng)前的狀態(tài)是草稿態(tài)還是已發(fā)布,如果是已發(fā)布,是要?jiǎng)?chuàng)建一條新的記錄(當(dāng)然這個(gè)在前端判斷也是可以的,但后端要做好校驗(yàn),防止頁(yè)面沒刷新等場(chǎng)景造成臟數(shù)據(jù))。

消費(fèi)端

消費(fèi)端的查詢,需要查詢最新已發(fā)布版本,一般是通過狀態(tài)來過濾,比如status = Online。

但這里根據(jù)狀態(tài)過濾有一個(gè)問題:歷史已發(fā)布的版本怎么辦?如果一個(gè)code發(fā)布了3個(gè)版本,那豈不是會(huì)查出來3條數(shù)據(jù)?要解決這個(gè)辦法有兩種思路:

  • 狀態(tài)機(jī)添加一個(gè)Online_history的狀態(tài),在寫入的時(shí)候維護(hù)這種狀態(tài);
  • 表增加一個(gè)is_last_online_version,在寫入的時(shí)候維護(hù)這個(gè)字段;

我個(gè)人比較喜歡用第一種方案,少維護(hù)一個(gè)字段,僅僅多維護(hù)一個(gè)枚舉就行了。

其它注意事項(xiàng)

上下游

我們?cè)谏舷掠蔚慕涌诮换ブ校艘鶕?jù)code?查最新已發(fā)布版本這種消費(fèi)端場(chǎng)景外,通常用code_version來交互。這樣在DB中可以直接命中一條數(shù)據(jù),查詢起來也方便。

這個(gè)數(shù)據(jù)和其他數(shù)據(jù)的關(guān)系,也通常使用code_version來存,因?yàn)椴煌姹娟P(guān)聯(lián)的數(shù)據(jù)可能不同。

diff

diff往往是利用領(lǐng)域模型json化后來diff。這里的diff能力可以做成一個(gè)通用的服務(wù),傳入old json和new json,返回哪些是新增的,哪些是刪除的,哪些是變更的。內(nèi)部的邏輯一般是利用json_path和遞歸的方法來做。

diff的難點(diǎn)是做成配置化,配置哪些屬性參與diff,哪些屬性ignore diff。diff出來之后,可能枚舉等需要key轉(zhuǎn)換成label,外部有一個(gè)轉(zhuǎn)換函數(shù),或者前端去轉(zhuǎn)。

另一塊需要注意的就是數(shù)組的順序。有些字段雖然到j(luò)son是數(shù)組,但業(yè)務(wù)上本身是順序無關(guān)的,這種數(shù)據(jù)的比對(duì)會(huì)更麻煩一些。

回滾

回滾其實(shí)很麻煩,包括已發(fā)布的回滾到上一個(gè)版本、發(fā)布中的回滾到草稿態(tài)。主要是前者很麻煩,尤其是有上下游使用了這個(gè)版本的數(shù)據(jù),一般是不允許輕易回滾的。

如果有這類場(chǎng)景,多半是沒有上下游,比如服務(wù)發(fā)布、應(yīng)用發(fā)布等。這種回滾,當(dāng)前版本的數(shù)據(jù)一般也不會(huì)刪除,而是設(shè)置成一個(gè)特殊的狀態(tài)。下次編輯上一個(gè)版本的時(shí)候,生成的version也不是+1, 而是+2甚至是+n,還得查一遍庫(kù),比較麻煩。

所以如果不是有特殊的需求,可以不做已發(fā)布的回滾,它會(huì)帶來很多復(fù)雜性。

責(zé)任編輯:武曉燕 來源: 編了個(gè)程
相關(guān)推薦

2023-02-10 08:59:42

業(yè)務(wù)技術(shù)核心

2023-11-27 07:57:46

2024-04-26 00:28:14

異地多活架構(gòu)

2023-11-28 07:45:48

Rust自動(dòng)化測(cè)試

2022-08-16 08:17:09

CDPCRM數(shù)據(jù)

2022-01-10 08:17:40

異地設(shè)計(jì)實(shí)踐

2012-12-03 13:50:40

IBMdW

2021-01-31 23:54:23

數(shù)倉(cāng)模型

2021-10-09 07:55:49

設(shè)計(jì)師業(yè)務(wù)用戶需求

2020-04-01 10:48:28

業(yè)務(wù)設(shè)計(jì)架構(gòu)模型CIO

2022-05-02 21:47:13

并發(fā)編程線程

2024-10-06 12:56:36

Golang策略設(shè)計(jì)模式

2023-11-06 08:26:11

Spring微服務(wù)架構(gòu)

2024-04-17 08:03:45

架構(gòu)設(shè)計(jì)Java

2022-02-08 08:12:51

無鎖編程設(shè)計(jì)

2023-03-21 07:57:37

Go語言設(shè)計(jì)模式

2023-06-02 11:55:02

jvm多線程并發(fā)

2024-08-18 14:09:24

2024-10-14 14:28:19

支付系統(tǒng)設(shè)計(jì)

2022-05-18 08:05:20

pyenvPython解釋器
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

欧美国产视频一区| 亚洲影音一区| 国产一区二区在线看| 日韩第一页在线| 国产精品免费在线免费| 国产麻豆剧传媒精品国产| 精品成人一区二区三区免费视频| 麻豆精品国产| 国产精品日韩成人| 热99精品只有里视频精品| 人妻 丝袜美腿 中文字幕| 日本在线观看视频| 日韩综合在线视频| 亚洲欧美日韩国产成人| 黄色一级视频在线播放| av手机免费看| 欧美成人tv| 欧美一二三四在线| 91精品国产吴梦梦| 国产麻豆免费视频| 亚洲国产精品综合久久久 | 日韩午夜在线观看视频| www.浪潮av.com| 精品人妻一区二区三区麻豆91 | 亚洲精品欧美精品| 亚洲精品91天天久久人人| 欧美一区二区三区红桃小说| 亚洲aaa精品| 国产精品一区二区三区精品| 日韩激情一区二区三区| 97色成人综合网站| 亚洲aaa精品| 国产女主播av| 日本免费在线视频| 国产色产综合色产在线视频| 国产精品video| 又嫩又硬又黄又爽的视频| 亚洲精品无播放器在线播放| 亚洲卡通动漫在线| www 成人av com| 日韩xxxxxxxxx| 精品视频日韩| 欧美一区二区三区在| 欧美国产综合在线| 在线免费av导航| www.亚洲色图| 国产精品国产三级国产aⅴ9色 | 欧美亚洲自拍偷拍| 神马欧美一区二区| 99久久久国产精品无码免费| 奇米一区二区三区av| 久久九九免费视频| 麻豆tv在线观看| 日本高清久久| 色欧美片视频在线观看在线视频| 婷婷精品国产一区二区三区日韩| 午夜福利理论片在线观看| 久久天天综合| 久久999免费视频| 国产三级国产精品| 宅男噜噜噜66国产精品免费| 欧美三级视频在线播放| 日本人体一区二区| 国产传媒在线| 国产精品久久久久久久裸模| 国产一区玩具在线观看| 久一区二区三区| 精品色999| 国产亚洲精品美女久久久久| 欧美xxxxxbbbbb| а√在线天堂官网| 大桥未久av一区二区三区| 亚洲一区二区三区欧美| 午夜福利视频一区二区| 26uuu欧美日本| 亚洲xxx自由成熟| 伊人久久久久久久久久久久| 欧美精品国产一区| 伊是香蕉大人久久| 国产在线观看无码免费视频| 婷婷五月色综合香五月| 日韩你懂的电影在线观看| 99视频在线视频| 福利在线导航136| 国产精品污www在线观看| 九九99玖玖| 欧美高清69hd| 国产乱淫av一区二区三区| 国产精品av电影| 久热这里只有精品6| 亚洲第一偷拍| …久久精品99久久香蕉国产| 亚洲国产成人精品综合99| 成人羞羞动漫| 亚洲天堂av女优| 中文字幕av观看| 色琪琪久久se色| 亚洲网站视频福利| 成人免费视频网站入口::| 成人一区二区| 久久久久久久网站| 久久影院一区二区| 久久一区二区三区超碰国产精品| 成人午夜高潮视频| 96日本xxxxxⅹxxx17| 视频在线观看91| 91超碰rencao97精品| 免费毛片在线| 久久新电视剧免费观看| 精品欧美国产| 国产一区久久精品| 亚洲精品国产第一综合99久久| 亚洲精品日韩成人| 极品美鲍一区| 日韩美女视频一区二区在线观看| 级毛片内射视频| 国产一区不卡| 亚洲午夜国产成人av电影男同| 国产成人久久久久| 日韩av一级片| 女同一区二区| 福利在线视频导航| 国产精品国模大尺度视频| 日本毛片在线免费观看| 91麻豆精品激情在线观看最新| 少妇高潮 亚洲精品| 992在线观看| 亚洲综合色网| 欧美福利小视频| 香蕉免费毛片视频| 亚洲一区二区毛片| 国产精品久久久久久久久久免费| 欧洲成人一区二区三区| 久久综合色8888| 亚洲精品久久久久久久蜜桃臀| 2020av在线| 91久久久免费一区二区| 精品1卡二卡三卡四卡老狼| 欧美三级自拍| 欧美激情videos| a在线观看视频| 中文字幕在线观看不卡视频| 久久精品影视大全| 国产亚洲高清一区| 亚洲国产女人aaa毛片在线| 国产精品20p| 麻豆91精品| 91久久精品国产91久久| 男人天堂综合网| 一区二区三区中文字幕在线观看| 91大神免费观看| 亚洲网色网站| 成人精品一二区| 青青草在线播放| 1000精品久久久久久久久| 分分操这里只有精品| 91精品短视频| 在线免费观看羞羞视频一区二区| 亚洲午夜18毛片在线看| 九九精品视频在线看| 国内精品**久久毛片app| a视频网址在线观看| 亚洲国产毛片aaaaa无费看 | 麻豆精品视频在线观看免费| 亚洲在线观看视频网站| 青青国产在线| 欧美亚洲图片小说| 老司机成人免费视频| 午夜影院日韩| 日韩av电影免费播放| 色图在线观看| 欧美性色黄大片| 中文乱码字幕高清一区二区| 亚洲中午字幕| 日韩中文字幕一区二区| 亚洲国产精选| 国产亚洲精品一区二区| 91国偷自产中文字幕久久| 一区二区三区在线视频免费| 中文字幕在线永久| 午夜国产精品视频免费体验区| 国产精品v欧美精品v日韩| a欧美人片人妖| 欧美va亚洲va| 免费成人深夜夜行网站| 国产河南妇女毛片精品久久久| 亚洲精品成人自拍| 亚洲精品在线a| 国产99视频精品免视看7| 欧美特黄一级视频| 在线视频亚洲一区| 精品少妇一区二区三区免费观 | 国产无限制自拍| 日韩在线观看| 狠狠色狠狠色综合人人| 久久av影院| 一本色道久久88精品综合| 国产露脸91国语对白| 久久久五月婷婷| 亚洲熟女乱色一区二区三区| 欧美www视频在线观看| 国产精品美乳一区二区免费| 最新黄网在线观看| 一区二区三区黄色| 三级网站免费观看| 亚洲成a人片在线不卡一二三区| 99久久精品免费视频| 本田岬高潮一区二区三区| 成人午夜视频免费观看| 欧美经典一区| 国产精品美女午夜av| 色戒汤唯在线观看| 亚洲欧美日韩视频一区| a级片免费观看| 欧美日韩中文国产| 成人午夜淫片100集| 亚洲国产日日夜夜| 26uuu成人网| 国产日韩av一区二区| 黄色网址在线视频| 美女尤物久久精品| 91黄色在线看| 欧美日韩三区| 国产奶头好大揉着好爽视频| japansex久久高清精品| 国产91精品在线播放| 91av久久| 欧美日韩国产91| gogogogo高清视频在线| 亚洲第一av网| 黄色一级视频免费看| 国产精品久久久久久久久动漫| 欧美大片免费播放器| 成人一级片在线观看| 国产三区在线视频| 成人一区而且| 天堂av一区二区| 禁断一区二区三区在线| 人偷久久久久久久偷女厕| 亚洲精品无播放器在线播放| 国产精品久久久久久久美男 | 91精品综合视频| 欧美日韩免费电影| 91精品久久久久久久久久久| 成人黄页网站视频| 色综合老司机第九色激情| av观看在线| 久久99亚洲精品| 成人性生交大片免费看网站| 午夜精品久久久久久久99热 | 美女啪啪无遮挡免费久久网站| 欧美一级在线免费观看 | 国产乱国产乱老熟300部视频| 国内精品久久久久影院一蜜桃| 女人被男人躁得好爽免费视频| 综合久久亚洲| 国产精品三级一区二区| 狠狠入ady亚洲精品经典电影| 欧美日韩国产一二| 久久wwww| 国产精品区一区二区三在线播放| 国产一区在线电影| 91理论片午午论夜理片久久| 精品一区视频| 国产综合色一区二区三区| 国产三级精品三级在线观看国产| 精品国产一区二区三区麻豆免费观看完整版| 国内精品麻豆美女在线播放视频 | 欧美在线视屏| 黄色国产一级视频| 欧美激情成人| 四虎免费在线观看视频| 欧美精品色网| 久久国产成人精品国产成人亚洲| 久久久久久穴| 久久精品国产露脸对白| 亚洲在线一区| 日韩爱爱小视频| 国产成人av在线影院| 久久99爱视频| 天堂精品中文字幕在线| 国产美女视频免费看| 成人精品国产免费网站| 亚洲自拍偷拍图| 99久久精品免费看国产| 欧美污在线观看| 成人丝袜高跟foot| 阿v天堂2014| 亚洲午夜日本在线观看| 成熟的女同志hd| 狠狠久久亚洲欧美专区| 一本色道久久综合无码人妻| 国产一区二区在线看| 蜜臀aⅴ国产精品久久久国产老师 性活交片大全免费看 | 国产精品电影一区二区三区| 不卡的免费av| 欧美日韩aaaaa| 国产成人a v| 欧美xxx久久| 91大神在线网站| 国产亚洲欧美视频| 欧美四级在线| 欧美高清自拍一区| 欧美成人精品三级网站| 欧美在线观看一区二区三区| 国产自产自拍视频在线观看| 国产精品日韩在线一区| 久久中文字幕导航| 久久国产主播精品| 中国精品18videos性欧美| 99福利在线观看| www.激情成人| 免费一级片在线观看| 亚洲资源在线观看| 国产午夜福利精品| 56国语精品自产拍在线观看| jizz中国少妇| 一区二区三区精品99久久| 欧美a级在线观看| 成人免费视频视频在| 欧美黄色录像片| 浓精h攵女乱爱av| 久久夜色精品国产欧美乱极品| www.色小姐com| 91精品国产一区二区| 91亚洲精选| 国产激情久久久久| 曰本一区二区三区视频| 日韩精品久久一区二区三区| 亚洲精品孕妇| www.99在线| 久久精品夜夜夜夜久久| 国产精品一区二区三区四| 亚洲国产精品一区二区久| 国产精品一区hongkong| av资源站久久亚洲| 亚洲视频久久| jjzzjjzz欧美69巨大| 亚洲影视在线观看| 蜜桃久久一区二区三区| 国内精品美女av在线播放| 日韩免费电影| 亚洲综合av影视| 欧美一区网站| 伊人av在线播放| 国产亚洲欧美日韩在线一区| 中国一级免费毛片| 亚洲男人的天堂在线播放| 亚洲天堂中文字幕在线| 麻豆成人久久精品二区三区红| 男人的天堂免费| 亚洲国产精品精华液网站| 欧美 日韩 国产 成人 在线| 国内精品一区二区三区四区| 日本成人7777| 免费国产成人av| 国产真实乱偷精品视频免| 在线日韩国产网站| 日韩一区二区精品葵司在线| 伊人电影在线观看| 加勒比在线一区二区三区观看| 国产精品一区亚洲| www在线观看免费视频| 欧美日韩亚州综合| 综合久久2019| 精品一区二区国产| 巨乳诱惑日韩免费av| 久久久久99精品成人| 337p亚洲精品色噜噜狠狠| 污污网站在线看| 久久婷婷人人澡人人喊人人爽| 久久免费国产| 我要看黄色一级片| 亚洲精品国产美女| 国外成人福利视频| www污在线观看| 国产日韩欧美不卡| 99产精品成人啪免费网站| 国自在线精品视频| 成人在线免费观看91| 亚洲911精品成人18网站| 黑人精品xxx一区| 麻豆传媒免费在线观看| 国产成人在线精品| 亚洲mv大片欧洲mv大片| 水蜜桃av无码| 欧美精品久久99久久在免费线| 韩国福利在线| 亚洲欧洲另类国产综合| www.日韩一区| 色综合91久久精品中文字幕| 九九热爱视频精品视频| 毛片在线视频播放| 中文字幕电影一区| 空姐吹箫视频大全| 久久99视频精品| 日韩精品永久网址| 国产一级黄色录像| 91精品国产综合久久精品| 成人美女大片|