轉自21CTO
軟體中有Bug的東西最終都會腐爛,這是一個普遍真理。
事情會慢慢起改變。
一開始看起來很酷很乾淨的東西,不知不覺就變成了「他們到底在想什麼」。
但這並不代表我們可以袖手旁觀,任其發展。
我們應該像一隻剛意識到自己被主人穿了襪子的貓一樣,對抗「代碼腐敗」。
程式碼腐敗的一個領域是資料庫設計,但這個領域沒有得到足夠的重視。在這裡,我將重點介紹一些你可能不太關注的、不太重要的資料庫設計技巧。
我們稱之為「小而重要的規則」。
每個表都有一個 ID 欄位這可能有些爭議,但我始終認為資料庫裡的每個表都應該有一個名為ID 的主鍵ID。
就是這樣,只是叫ID。注意,不是CustomerID,不是OrderID,只是ID。
它應該是一個自動遞增的整數值(或者,如果你有非常充分的理由UUID,例如分散式系統,也可以使用自動遞增的整數值)。
當然,該欄位應該有一個索引ID。
對於不是多對多關係交叉引用的表,你需要多字段鍵的情況應該非常非常罕見。
切勿在表名或字段名中添加空格在此,我向那些認為在表名或字段名中添加空格(或使用漢字)是個好主意的人致以永遠的鄙視。
你千萬別這麼乾,名稱中的空格會讓你使用引號,而你很容易忘記,這會讓你在編寫查詢時不禁自問:“到底帶空格還是不帶空格?” 這真是太麻煩了。
永遠不要使用空格,這樣你就再也不用為此煩惱了。
還有,為了可愛的貓王寶寶,請不要在名字中使用底線。我真不知道人們怎麼能忍受打出「像這樣的名字」。光是想,我的小手指就想去申請工傷賠償。
表名是複數
再次強調,這是一個很大的爭論,但我認為表格代表很多東西,而不是單一的東西。
因此,表格名稱應該始終使用複數形式。
例如,應該使用 Customers,而不是 Customer。
這樣,當你看到「customers」這個字時Orders,你就知道它指的是表格。如果你將表格命名為Order“order”,就會在“order”這個字周圍產生歧義。
你指的是表格本身還是表格中的一行?我知道這個問題已經討論過很多了。
我強烈傾向於使用複數名稱。
無論你做什麼,選擇一個系統並堅持下去。
外鍵要清楚標記還記得我上面提到的欄位ID嗎?現在它就派上用場了。如果表中有一行Orders引用了客戶(即外鍵),請將其命名為 name CustomerID。
任何命名的欄位<Entity>ID都將始終是該表的外鍵<Entity>。
在整個架構中一致地執行此操作,這樣就能始終清楚地了解哪些欄位是外鍵,以及這些欄位引用的是哪個表。
索引查詢的內容為出現在WHERE、JOIN或ORDER BY子句中的每個欄位新增索引。
堅持這樣做可以避免很多效能問題。
可能會有例外,但你應該透過索引(而不是索引不足)來發現它們。
假設需要索引,然後讓查詢分析器說服你刪除任何導致問題的索引。
參照完整性不是可選的確保表之間的關係保持完整,且資料庫中沒有孤立記錄,對於資料完整性至關重要。
所有現代關係型資料庫都具有引用完整性。
從一開始就嚴格遵循並執行它。
不要依賴程式碼來維護這些關係。資料庫本身就具備這種能力,我們應該充分利用它。
不要在程式碼中嵌入 SQL如果你曾經在程式碼中嵌入 SQL,哪怕“就這一次”,你也終生都會後悔。更別提它為「再來一次」打開了方便之門。
嵌入 SQL 會使你的程式碼變得雜亂無章,並與資料庫耦合,最終導致程式碼混亂不堪。
請記住,讓資料庫來做這些事吧。如果你非得需要在程式碼中使用 SQL,請將其與程式碼分開維護,並且不需要編譯器處理它。
將其儲存在單獨的文件中,這些文件可以嵌入或在程式碼外部使用,並且可以在不更改程式碼邏輯的情況下進行更新。
還有一些額外想法一般來說,如果資料庫能幫你做,你就讓它幫你做。資料庫處理資料的能力比你強 453.7 倍,不要試圖取代它們。
如果您想添加以 1、2、3 等結尾的字段,請不要這樣做。
閱讀有關規範化的內容。為列使用正確的資料類型。不要將布林值設為數字,也不要將日期設為字串。
強烈建議在每個表格中加入CreatedAt時間戳UpdatedAt欄位。你會驚訝地發現,你最終會慶幸自己這麼做。
使用觸發器自動產生這些時間戳,它們會變得實用且輕鬆。
還有參數化預存程序也是我們的好朋友,要盡可能地使用它們。查詢分析器在決定查詢資料的最佳方式方面比你高出一個數量級。
此外,請謹慎使用布林值。
Null 會將布林值轉換為量子態-在執行查詢之前,既不是真也不是假。
除非你確切了解 null 在特定上下文中的意義,否則請勿使用布林值。不要依賴字串值來定義狀態。
請使用枚舉值,確保資料永遠不會出錯。
例如不要status = ‘bananna’,因為有人誤操作了某個欄位而導致出錯。
結語
我在這裡給各位列了很多該做和不該做的事情。
再次強調,最重要的一點是製定一套規則,並嚴格執行。今天就這麼做,以後就能省去很多麻煩。相信我,未來的你會感謝現在的自己!
作者: admin
-
開發者的資料庫設計技巧
-
你知道OLT級聯組網的利與弊嗎?
隨著全光網路的建置加速,針對一些特殊場景、特殊應用或操作員的特殊考量,在PON接取網路中產生了OLT級聯組網的多樣化應用,尤其在小容量OLT設備的靈活部署應用中。
小容量OLT具備更靈活部署,環境適用性更強等優勢,適合於機房空間有限、低密度區域接入、OLT下沉/拉遠覆蓋、智慧園區快速接入、OLT和行動基地台共址等場景。同時提供更靈活的上聯組網及保護能力,確保業務安全性及高效能業務傳輸。
1. OLT級聯組網方案
方案一:OLT上聯口級聯組網,即兩台OLT採用上聯口進行級聯。
當網路的主幹光纜資源緊張或BRAS/SR埠資源緊縮時,常會採用上聯口級聯的場景。

組網介紹:OLT透過上聯板級聯,可跨上聯板級聯、同上聯板級聯、級聯+連結保護三種方式連接。
OLT1與BRAS/CR之間採用雙10G上聯,OLT2的上網/語音/組播業務均匯聚到OLT1,對於IPTV組播業務,在級聯場景下,用作級聯的上聯口用設定為「級聯口」模式。支援鍊型組網和環形組網。
方案二:乙太網路業務盤進行級聯組網,即下聯OLT透過上聯口連接至上聯OLT的乙太網路業務盤。
當需要光纖直連承載交換路由專線業務時,經常會採用乙太網路業務盤級聯的場景。

組網介紹:OLT透過上聯板級聯,可跨上聯板級聯、同上聯板級聯、級聯+連結保護三種方式連接。
OLT1與BRAS/CR之間採用雙10G上聯,OLT2的上網/語音/組播業務均匯聚到OLT1,對於IPTV組播業務,在級聯場景下,用作級聯的上聯口用設定為「級聯口」模式。支援鍊型組網和環形組網。
方案二:乙太網路業務盤進行級聯組網,即下聯OLT透過上聯口連接至上聯OLT的乙太網路業務盤。
當需要光纖直連承載交換路由專線業務時,經常會採用乙太網路業務盤級聯的場景。 -
Splunk Enterprise Certified Administrator Exam:SPLK-1003
Splunk Enterprise Certified Administrator Exam:SPLK-1003
利用 Splunk Enterprise 知識提升您的優勢
從許可證管理、索引器和搜尋頭到配置、監控和資料收集,作為 Splunk Enterprise 認證管理員,您將對日常工作充滿信心。了解更多信息,優化您的環境健康。SPLK-1003認證考試適用於負責支援 Splunk Enterprise 環境日常管理和健康的任何人。
考試詳情:
等級:專業級
先修課程:Splunk Core 認證高階用戶
考試時長:60 分鐘
考試形式:56 題選擇題
價格:每次考試 130 美元
考試提供方:Pearson VUE職涯發展
將您的職業發展擴展到 Splunk Enterprise 平台內的搜尋和儀表板之外。展示您對 Splunk Enterprise 和 Splunk Cloud 平台的基礎知識。這是核心進階使用者的理想下一步。平台管理員
展現您管理和維護 Splunk Enterprise 環境健康的能力。最好不要將您的部署遷移到 Splunk Cloud。企業安全管理員
提升您的資格和專業知識。這是成功管理 Splunk Enterprise 安全環境的關鍵基石。考試內容:
1.0 Splunk 管理基礎 5%
2.0 許可證管理 5%
3.0 Splunk 設定檔 5%
4.0 Splunk 索引 10%
5.0 Splunk 用戶管理 5%
6.0 Splunk 身份驗證管理 5%
7.0 資料導入 5%
8.0 分散式搜尋 10%
9.0 資料導入 – 暫存 5%
10.0 配置轉發器 5%
11.0 轉發器管理 10%
12.0 監控輸入 5%
13.0 網路和腳本化輸入 5%
14.0 無代理輸入 5%
15.0 微調輸入 5%
16.0 解析階段和資料 5%
17.0 處理原始資料 5% -
CompTIA Project+認證考試:PK0-005
CompTIA Project+認證考試:PK0-005
CompTIA Project+ 是唯一旨在為 IT 專業人士傳授成功管理中小型專案所需的入門級技能的行業認證。它展現了專業人士在按時、按範圍規劃、執行和交付專案的能力,同時確保有效的溝通和資源管理。 CompTIA Project+ 著重實作操作技能,以應對實際專案挑戰。
考試詳情
考試版本:V5
考試系列代碼:PK0-005
上市日期:2022年11月8日
題目數:最多 90 題
問題類型:選擇題與績效題
時長:90分鐘
及格分數:710(滿分100-900)
語言:英語、日語、泰語
建議經驗:相當於 6-12 個月在技術環境中管理專案的實務經驗Project+(V5)考試目標
專案管理概念(33%)
·項目特徵和方法:解釋項目特徵、方法和框架。
·敏捷與瀑布:比較選擇標準、團隊組成與溝通方法。
·變更控制:應用特定於專案的變更控制和管理流程。
·風險管理:識別風險、分析因應措施、了解角色和職責。
·問題管理:追蹤問題、解決問題並記錄結果。
·進度管理: 確定里程碑、安排活動順序、估算資源和維護進度。
·品質與績效管理: 比較回顧、衝刺評審、服務等級協定 (SLA)、關鍵績效指標 (KPI)、稽核和測驗週期。
·溝通管理:評估方法、開發平台和管理溝通。
·會議管理:設定議程、分配角色、時間限制和記錄行動項目。
·團隊與資源管理: 分析資源差距、管理團隊績效和定義角色。
·採購和供應商選擇:評估供應商、合約和採購方法。專案生命週期階段(30%)
·發現階段的成果: 解釋商業案例、預審合格的供應商和財務概念。
·專案啟動: 制定專案章程、確定利害關係人、建立責任分配矩陣 (RAM) 並召開啟動會議。
·專案規劃: 分配資源、制定溝通計畫、定義範圍、建立時間表和執行風險評估。
·專案執行:管理任務、供應商、會議、預算、衝突和階段門審查。
·專案結束: 驗證可交付成果、簽訂合約、釋放資源、歸檔文件和召開結束會議。工具和文件(19%)
·專案工具: 使用甘特圖、燃盡圖、PERT(專案評估審查技術)圖表、問題日誌、變更日誌、風險登記冊、儀表板和時間追蹤工具。
·生產力工具: 比較溝通、協作、會議、文件、日程安排和票務工具。
·品質和性能圖表: 分析直方圖、帕累托圖、散點圖、魚骨圖、燃盡圖/燃盡圖和決策樹。IT與治理基礎知識(18%)
·環境、社會和治理 (ESG): 總結專案對環境、法規、公司價值和品牌價值的影響。
·資訊安全: 解釋實體、操作、數位和資料安全概念。
·合規性和隱私:了解保密、法律影響和隱私法規。
·IT 概念:總結基礎架構、雲端模型和軟體基礎。
·變更控制:說明 IT 基礎架構變更控制、軟體變更控制、CI/CD(持續整合/持續部署)以及生產與暫存環境。學到的技能
·了解專案的屬性,包括階段、進度、角色和職責、成本控制以及敏捷方法的基本面向。
·在應用風險策略和活動的同時,分析整個專案過程中各種約束變數和影響的影響。
·在專案範圍內實施適當的溝通方法並變更控制流程。
·利用各種專案管理工具並建立以專案和合作夥伴為中心的文件來支援專案成功。 -
CompTIA DataX 認證考試:DY0-001
CompTIA DataX Certification Exam:DY0-001
CompTIA DataX 認證考試:DY0-001
CompTIA DataX 是經驗豐富的專業人士的頂級認證,旨在驗證其在快速發展的資料科學領域的能力。 DataX 旨在協助您掌握處理複雜資料集、實施資料驅動解決方案以及透過深刻的資料解讀推動業務成長所需的技能,並讓您自信地展現專業技能。
DataX(V1)考試目標數學和統計學(17%)
·統計方法:應用 t 檢定、卡方檢定、變異數分析 (ANOVA)、假設檢定、迴歸指標、基尼係數、熵、p 值、接收者操作特性/曲線下面積 (ROC/AUC)、赤池資訊準則/貝葉斯資訊準則 (AIC/BIC) 和混淆矩陣。
·機率和建模:解釋分佈、偏度、峰度、異方差、機率密度函數 (PDF)、機率質量函數 (PMF)、累積分佈函數 (CDF)、缺失、過採樣和分層。
·線性代數與微積分:理解秩、特徵值、矩陣運算、距離測量、偏導數、鍊式法則和對數。
·時間模型:比較時間序列、存活分析和因果推論。建模、分析和結果(24%)
·EDA 方法:使用探索性資料分析 (EDA) 技術,如單變量和多變量分析、圖表、圖形和特徵識別。
·資料問題:分析稀疏資料、非線性、季節性、粒度和異常值。
·資料豐富:應用特徵工程、縮放、地理編碼和資料轉換。
·模型迭代:進行設計、評估、選擇與驗證。
·結果溝通:建立視覺化、選擇資料、避免欺騙性圖表以及確保可訪問性。機器學習(24%)
·基礎概念:應用損失函數、偏差-方差權衡、正規化、交叉驗證、整合模型、超參數調整和資料外洩。
·監督學習:應用線性迴歸、邏輯迴歸、k最近鄰(KNN)、樸素貝葉斯和關聯規則。
·基於樹的學習:應用決策樹、隨機森林、提升和引導聚合(裝袋)。
·深度學習:解釋人工神經網路 (ANN)、dropout、批量標準化、反向傳播和深度學習框架。
·無監督學習:解釋聚類、降維和奇異值分解(SVD)。營運和流程(22%)
·業務功能:解釋合規性、關鍵績效指標 (KPI) 和需求收集。
·資料類型:解釋產生的、合成的和公共的資料。
·資料擷取:了解管道、串流、批次和資料沿襲。
·資料整理:實施清理、合併、歸納和基本事實標記。
·資料科學生命週期:應用工作流程模型、版本控制、清潔程式碼和單元測試。
·DevOps 和 MLOps:解釋持續整合/持續部署 (CI/CD)、模型部署、容器編排和效能監控。
·部署環境:比較容器化、雲端、混合、邊緣和本地部署。數據科學的專業應用(13%)
·優化:比較約束優化和無約束優化。
·NLP 概念:解釋自然語言處理 (NLP) 技術,如標記化、嵌入、詞頻-逆文檔頻率 (TF-IDF)、主題建模和 NLP 應用。
·電腦視覺:解釋光學字元辨識(OCR)、物體偵測、追蹤和資料增強。
·其他應用:解釋圖形分析、強化學習、詐欺偵測、異常偵測、訊號處理等。 -
CompTIA Cloud Essentials+認證考試:CLO-002
CompTIA Cloud Essentials+認證:CLO-002
CompTIA Cloud Essentials+ 認證旨在驗證您對雲端運算及其業務影響的基礎知識,包括雲端概念、業務原則、管理、治理、風險和安全性。
作為 CompTIA 產品整合工作的一部分,此認證將永久停用,考試截止日期為 2025 年 9 月 25 日。請在此截止日期前預約並完成考試,以獲得認證。
Cloud Essentials+ (V2) 考試目標
雲概念(24%)
·服務模式:了解軟體即服務 (SaaS)、基礎設施即服務 (IaaS) 和平台即服務 (PaaS)。
·部署模式:探索公有、私有和混合雲環境。
·共享責任模型:解釋雲端提供者和使用者的角色。
雲端環境的商業原則(28%)
·財務方面:分析資本支出(CapEx)、營運支出(OpEx)及訂閱模式。
·供應商關係:評估服務等級協定 (SLA)、培訓和支援選項。
·雲端遷移:比較直接遷移、混合遷移和分階段遷移方法。
管理和技術營運(26%)
·雲端操作:管理資源、監控效能和最佳化工作負載。
·自動化和編排:實施配置、擴展和配置管理工具。
·災難復原:規劃備份策略、故障轉移流程和復原測試。
雲端運算的治理、風險、合規性和安全性(22%)
·風險管理:評估並減輕雲端環境中的風險。
·合規性:了解資料主權、監管問題和認證。
·安全性:實施加密、存取控制和漏洞評估。
考試詳情
·考試版本:V2
·考試系列代碼:CLO-002
·上市日期:2019年11月
·題目數:最多 75 題
·問題類型:選擇題
·考試時間:60分鐘
·及格分數:720(滿分100-900)
·語言:英語和日語
·推薦經驗:在技術環境中擔任業務分析師 6-12 個月的工作經驗,並接觸過一些雲端技術
·退休日期:2025年9月25日 -
人工智慧不會取代開發者,但會淘汰一些開發者
人工智慧讓你能夠快速發展。但如果只追求編碼速度而忽略質量,就會造成系統脆弱。
脆弱的系統會削弱使用者信任,引發安全風險,並迅速累積技術債。
那些在人工智慧領域取得成功的公司將品質融入他們的開發 DNA 中,以便他們能夠負責任且永續地利用人工智慧。
開發者正在成為策展人 讓我們來談談真正正在發生的改變。
從職責上看,人工智慧正在將開發者的角色從創造者轉變為管理者。
開發者不再需要從頭開始編寫每一行程式碼,而是需要評估、編排和優化人工智慧產生的程式碼。
現在重要的不是你寫程式碼的速度有多快,而是它如何透過安全性、品質和信任來創造價值。
價值正在從原始輸出轉向智慧監管。
這意味著開發團隊除了掌握一些讓他們感到優秀的技能外,還需要掌握新的技能。
例如,了解何時信任模型,何時介入。
了解如何測試,不僅要測試已編寫的內容,還要測試已假設的內容,以了解如何在人工智慧擴展軟體應用範圍時保持意識。
跨職能問責不容商榷 人工智慧不僅影響了開發者,也重塑了產品、工程甚至上市等團隊整個成本結構和期望架構。
我們常看到的一個錯誤是,假設程式碼產生中AI生產力的提升不需要其他方面的改變。
這會導致錯位。
如果編碼速度更快,但品質和安全流程卻在發布後才進行,那麼你並沒有提高敏捷性,反而會造成嚴重的瓶頸,並增加業務風險。
人工智慧的擴展需要跨職能部門的責任制。
團隊必須定義共同的品質目標,而不僅僅是達到速度指標。
在人工智慧可以編寫程式碼、API 動態變化且用戶期望持續改進的時代,領導者必須對「完成」的含義達成共識。
SmartBear 最近進行的一項市場趨勢調查顯示,當被問及組織在將軟體品質作為團隊共同關注的優先事項方面面臨的最大障礙是什麼時,67% 的領導者認為,最大的障礙是將品質視為測試人員的專屬職責。
如果這種情況持續下去,我們將會看到一些嚴重的應用程式與業務失敗。
警惕日益擴大的差距 高階主管團隊談論人工智慧的方式與工程團隊實際需要安全交付人工智慧的方式之間的差距越來越大。
在SmartBear的同一項調查中,55%的董事和副總裁表示他們已做好充分準備迎接顛覆性技術的採用,同比增長14個百分點,而只有50%的開發人員和測試人員持相同觀點,下降了14個百分點。
這28個百分點的差距表明,從業人員或許能夠察覺高階主管難以察覺的實施風險,這也暗示著文化變革管理對於成功採用人工智慧工具至關重要。如果人們感到自己的工作、身分或前景受到威脅,那麼保持沉默也是自然而然的。
許多領導者認為他們可以同時減少員工人數、加快交付速度並降低成本。但是,建立安全、可擴展且可維護的人工智慧軟體需要結構化的方法和耐心。
工程團隊需要空間來建構這種結構:定義標準、測試框架、驗證層和可觀察性管道。
他們需要的工具不僅能加速開發,還能支援永續的擴展。
否則,公司可能會陷入缺乏結構、一味追求速度的風險。
讓我們建立可擴展的系統 人工智慧並不會取代開發團隊,但它會揭露那些尚未進化的團隊。
這一刻的意義遠大於自動化。它關乎我們重新思考如何定義軟體領域的成功。
它關乎認識到,如果沒有信任,速度和規模就毫無意義。它關乎將品質視為一種文化,而非一個階段。
我們不要再問人工智慧是否會搶走我們的工作,而要問我們建構的系統是否值得擴展。 -
PCAP™認證-Python 助理程式設計師認證考試:PCAP-31-03
PCAP™ – Certified Associate Python Programmer:PCAP-31-03
PCAP™認證-Python 助理程式設計師認證考試:PCAP-31-03PCAP™認證考試詳情
考試名稱: PCAP™ – 認證助理 Python 程式設計師
考試代碼: PCAP-31-03(狀態:有效)
PCEP-31-02(狀態:已退役)
先決條件: 無
有效性: 長期
考試時長: 65 分鐘,保密協議/教學:10 分鐘
問題數量: 40
格式 : 單選題與多選題 | Python 3.x
及格分數: 70%
語言 : 英語
成本: 295 美元(考試)
345 美元(考試 + 重考)
359 美元(考試 + 重考 + 模擬考試)
49 美元(模擬考試)
獲得 PCAP™ 認證並提升您的職業生涯
Python 是一門比其他任何程式語言都更能開啟更多機會的程式語言。你對 Python 了解越多,在 21 世紀就能發揮更大的作用。紮實的 Python 知識,讓你能夠勝任各種工作,涉足各行各業。對於希望獲得必要技能和知識以繼續從事更高級、更專業、薪酬更高的軟體開發、安全、網路、物聯網和工程職位的個人而言,PCAP™ 認證是一項寶貴的資格。它特別適合以下人群:
有抱負的程式設計師和對學習程式設計感興趣以獲得樂趣和與工作相關的任務的學習者;
尋求軟體開發人員、資料分析師或測試員等初級職位的學習者和職業轉換者。
希望探索與 Python 相關或以 Python 為基礎的技術的行業專業人士;
有抱負的程式設計師和行業專業人士希望為在更專業的領域(如測試、數據分析、機器學習、物聯網和Web 開發)的進一步研究打下堅實的基礎;
團隊領導、產品經理和專案經理希望了解軟體開發週期中的術語和流程,以便更有效地管理和與生產和開發團隊溝通。
Python 是當今世界各地薪酬最高的語言,或者是薪酬最高的語言之一,年薪在90,000 美元到 130,000 美元之間(來源:SalaryExpert.com)。隨著對網路的依賴日益增加,以及 Python 發揮的作用日益重要,普通 Python 程式設計師的薪水幾乎肯定會上漲。
目前,全球有10萬多個Python職缺,合格的Python程式設計師的供應無法滿足需求。