2023-07-27 17:25:30來源:51CTO.COM
在設(shè)計(jì)應(yīng)用程序時,一個常見的挑戰(zhàn)是根據(jù)數(shù)據(jù)變化的頻率來確定最合適的實(shí)現(xiàn)方式。是否應(yīng)該將狀態(tài)存儲在表格中以便擴(kuò)展工作流?是否應(yīng)該將國家名單列表存儲在表格中,以便擴(kuò)展工作流?是嵌入代碼中還是存儲在表格中?是否應(yīng)該根據(jù)目標(biāo)平臺調(diào)整線程池大?。?/p>
在當(dāng)前的大型項(xiàng)目中,我們根據(jù)數(shù)據(jù)集的靜態(tài)程度對其進(jìn)行分類,從非常靜態(tài)到較不穩(wěn)定不等。
(相關(guān)資料圖)
這些類型的數(shù)據(jù)更改總是涉及業(yè)務(wù)規(guī)則并影響代碼。一個典型的例子是工作流中的狀態(tài)列表(已開始、進(jìn)行中、等待、完成等)。這種數(shù)據(jù)集的指示性大小通常在 2 到 20 個條目之間。
從技術(shù)角度來看,它通常以枚舉的形式實(shí)現(xiàn)(例如 PostgreSQL 中的枚舉類型、Java 中的枚舉或 TypeScript 中的枚舉)。另外,它也可以作為常量或常量列表來管理。
您可以使用以下試金石:代碼中的“IF”語句是否需要包含此列表中的任何項(xiàng)目?
更改這類數(shù)據(jù)需要發(fā)布新版本或更改數(shù)據(jù)定義語言(DDL),而且不易管理。
第 2 級:很少更改的數(shù)據(jù)可以把數(shù)據(jù)集想象成國家/州列表或貨幣列表。這些數(shù)據(jù)集很少超過幾十個條目。我們將其稱為 "術(shù)語"。
從技術(shù)角度看,可以使用配置文件(JSON/YAML/CSV/屬性等)或數(shù)據(jù)庫(使用 PostgreSQL 等關(guān)系數(shù)據(jù)庫的表,使用 MongoDB 等 NoSQL 文檔數(shù)據(jù)庫的文檔或文檔列表等)來管理它們。
如果預(yù)算允許,提供一個可以添加、更改或刪除此類條目的管理圖形的用戶界面通常是個好主意。
即使以后數(shù)據(jù)可能會發(fā)生變化,啟動應(yīng)用程序時通常也需要這些列表。因此,建議在首次使用應(yīng)用程序之前將其與最小數(shù)據(jù)集打包在一起。例如,Liquibase 配置可以與應(yīng)用程序一起發(fā)布,以便在數(shù)據(jù)庫中創(chuàng)建最小的國家集(如果還不存在的話)。不過,要謹(jǐn)慎使用 "CREATE IF NOT EXIST "方案,以避免與已有數(shù)據(jù)發(fā)生沖突。
根據(jù)所使用的打包和技術(shù),這類數(shù)據(jù)的更改可能需要也可能不需要新版本。如果您的應(yīng)用程序包含嵌入最小數(shù)據(jù)集的機(jī)制(如配置文件或自動執(zhí)行的 Liquibase 或 SQL 腳本),則可能需要發(fā)布新版本。雖然這最初可能會被視為一種限制,但它能確保您的應(yīng)用程序自成一體,并且從部署開始就始終處于運(yùn)行狀態(tài),這通常是值得的。
在數(shù)據(jù)庫中存儲術(shù)語時,常見的策略是為每個術(shù)語創(chuàng)建一個表(如貨幣表、國家表)。如果像我們一樣,您的應(yīng)用程序需要更靈活的方法,您可以為每個微服務(wù)使用單個 NOMENCLATURE 表,并使用簡單的列(如 NOMENCLATURE 名稱)來區(qū)分術(shù)語。然后,所有術(shù)語都會合并到一個技術(shù)表中,使用術(shù)語名稱上的 WHERE 子句就可以直接檢索特定術(shù)語。如果要保持排序,可以為每個術(shù)語條目分配一個序號值,從而進(jìn)一步改進(jìn)這種方法。
第 3 級:不穩(wěn)定數(shù)據(jù)大多數(shù)應(yīng)用程序都會持久保存大量數(shù)據(jù),我們稱之為 "易失性數(shù)據(jù)"。這類數(shù)據(jù)可能涉及由應(yīng)用程序管理數(shù)量不限的記錄,如用戶配置文件、地址或聊天討論。
這類數(shù)據(jù)集中記錄的更改、添加或刪除永遠(yuǎn)不需要發(fā)布新版本(盡管備份仍然是必要的)。代碼的設(shè)計(jì)通常是以通用的方式而不是以個案的方式來處理此類變更。
這類數(shù)據(jù)通常無法通過修改代碼進(jìn)行管理,而是通過常規(guī)的前臺/后臺圖形用戶界面或批處理程序進(jìn)行管理。
總結(jié)選擇適當(dāng)?shù)撵o態(tài)級別對于確保應(yīng)用程序的可維護(hù)性和可修改性至關(guān)重要,并有助于避免潛在的隱患。使用不正確的解決方案來處理特定的靜態(tài)級別,可能會導(dǎo)致不必要的集成和發(fā)布任務(wù),或降低應(yīng)用程序的可維護(hù)性。
原文標(biāo)題:Datasets Staticity Levels
原文作者:Bertrand Florat
關(guān)鍵詞:
在設(shè)計(jì)應(yīng)用程序時,一個常見的挑戰(zhàn)是根據(jù)數(shù)據(jù)變化的頻率來確定最合適的
在當(dāng)今互通互聯(lián)的世界,依賴人工流程和傳統(tǒng)方法的日子早已過去。目前,
為改善農(nóng)村人居環(huán)境,浙江省諸暨市陳宅鎮(zhèn)發(fā)揮青年志愿者隊(duì)伍力量,扎實(shí)
清華“輪椅博士”將赴新疆任教“陽光學(xué)子”朱曉鵬心懷感恩再啟航朱曉鵬
步入2023,比亞迪漢家族相繼推出漢EV冠軍版、漢DM-i冠軍版、漢DM-p戰(zhàn)神
直播吧7月27日訊在皇馬2-0戰(zhàn)勝曼聯(lián)的比賽后,安切洛蒂在接受采訪時被問
00:53央廣網(wǎng)蘭州7月27日消息(記者邸文炯通訊員劉建軍李峙江)隨著大暑
溯聯(lián)股份:公司已于2021年成為小鵬汽車一級供應(yīng)商:溯聯(lián)股份(301397)
作為一名Linux系統(tǒng)下的C語言開發(fā),經(jīng)常需要閱讀源碼,但是有些源碼實(shí)在
1 介紹圖1展現(xiàn)了本文所涉及的新興硬件安全技術(shù)、以及新興硬件安全技術(shù)
本文經(jīng)AI新媒體量子位(公眾號ID:QbitAI)授權(quán)轉(zhuǎn)載,轉(zhuǎn)載請聯(lián)系出處。
就在剛剛,StabilityAI正式發(fā)布了下一代文生圖模型——SDXL1 0。要知道
「程序合成」或「代碼生成」任務(wù)的目標(biāo)是根據(jù)給定的描述生成可執(zhí)行代碼
HTML5可以在文檔中使用MathML元素,對應(yīng)的標(biāo)簽是 。MathML是數(shù)學(xué)標(biāo)記
以ChatGPT為代表的大型語言模型(LLM)在各項(xiàng)任務(wù)上的高效表現(xiàn)彰顯了其