你永遠不知道當你點擊 LinkedIn 的工作職缺按鈕會發生什麼事。我總是尋找有趣和有影響力的專案,其中一個特別吸引我的注意:“Far North Enterprises(遠北企業),一家全球製造和分銷公司,正在尋找現代化一個非常古老的數據環境。”我點擊了按鈕,幾乎馬上收到了一封來自 clauss@farnorthenterpises.com 的新郵件通知。“這麼快!”我心想。郵件裡面邀請我了解更多專案的內容,並附上了一個 Zoom 會議的連結,會議定在一小時內舉行。郵件還為短時間的通知和無法面對面會議表示歉意。這個專案已經落後進度,而面對面的安排將會很困難。(我後來相信,這並不是無法克服的障礙。)
沒過多久,我就和一群看起來像斯堪的納維亞人(Scandanicelandic)的技術架構師通上了電話。他們告訴我,我的豐富大型專案和數據管理經驗正是他們所尋找的。我感到受寵若驚,因為他們閱讀了我的部落格,以及最近發表的“交付不可能專案的六個秘密”。
接著,他們介紹了這個專案:現代化聖誕老人的好壞名單。
為了讓我了解背景,他們向我推薦了幾部紀錄片和歷史文本,大部分我都很熟悉。我們約好第二天早上再會面。我已經有了大部分的資料——他們提供了我缺少的部分——並在晚上做了功課。
再次會議時,他們開始解釋他們的運作已經依賴現有系統超過五十年。有人提到打孔卡,大家因為一個看似不幸的棉花糖事件而哈哈大笑。我毫不懷疑 COBOL 在他們的履歷中占有重要地位。不過,他們對現代架構,以及數據和分析方法非常熟悉。
他們描述了三個高層次的業務流程:
事件收集與評估
分類聚合與預測
位置追蹤與驗證
我期待深入了解細節,特別是數據來源、數量和利用情況。
事件收集與評估
他們的監控操作甚至讓 NSA(美國國家安全局)都羨慕。“他在你睡覺時看著你”以及“知道你何時醒來。”這相當全面,也許還有點嚇人。
不過,我想起小時候,睡覺可能會讓人感到害怕:噩夢、衣櫃裡的怪物、床下的怪物,以及那些你不知道的潛伏在你臥室裡的東西。面對這樣的危險,知道有一個關心你的人在守護你,會讓人感到安慰。
事件信息來自各種來源:攝像頭、麥克風、架子上的小精靈、衛星影像、網站提示、家長和老師熱線、百貨公司的聖誕老人,還有一些比較棘手的情況,還有秘密派遣的特工來觀察。
持續的數據流通過一個叫做“分塊”的過程被劃分為獨立的候選好壞事件。這是一個非常勞動密集的過程,需要特殊培訓,以確保在確定事件邊界時的可靠性和一致性。科技在這個過程中幫助巨大,現在手動分塊僅用於質量控制。我對他們在整個操作中運用 AI 感到印象深刻。並不是每個人生活中發生的事情都會被捕捉到。這個初步篩選是一個判斷,決定這個事件是否可能被認定為好或壞。還沒有最終的決定,但值得一看。
我開始在腦海中計算捕捉這些事件所需的磁碟空間和傳輸這些事件所需的網絡帶寬。假設每分鐘 50MB 的視頻,每人每天平均 10 分鐘的視頻,那麼每年每人大約需要 180 GB。這是一個龐大的數據量,需要為每個人進行整合和存儲,但只要處理和存儲在邊緣(edge),就不會太糟糕。像物聯網系統(IoT)一樣。我了解到詳細數據主要用於上訴和訴訟,並且很少被訪問。當需要數據時,多花幾秒鐘拉回數據是可以的。
簡單說一下數據安全性。Far North Enterprises(遠北企業)收集的信息可能非常敏感,他們也不免受網絡攻擊。對於數據在傳輸和靜止時都會非常小心。他們把安全團隊稱為“黑衣人”,因為你不想知道他們在看什麼。顯然,罪犯會被列入壞名單。
事件然後使用標準術語進行描述。這一切以前都是手動完成的,像分塊一樣,這是非常勞動密集的,並需要特殊培訓。如今,AI 轉錄和描述服務已經足夠可靠。錯誤偶爾仍然會發生,而更重要的事件會受到特別重視和審查。
每個事件描述會傳遞到一個決策過程,決定這個事件是被歸類為壞、好還是中立。畢竟,“他知道你是否有乖或壞。”這個決策過程是非常專有的。
我了解到,正在訓練大型神經網絡來區分好壞,但僅僅是在實驗階段。他們似乎對早期結果感到鼓舞。更廣泛的應用將取決於解決三個常見的神經網絡挑戰:建立對決策過程的信心,接受神經網絡是黑箱,產出通常無法解釋的決策,以及確定是將大型模型推向邊緣還是將大量事件數據移到模型。
由於聖誕老人的活動與聖誕節有關,我預期事件分類的標準會與基督教倫理相符,但我無法獲得確認。我確實確認嬰兒總是在好名單上,並且他們不使用抽樣(這很好,因為這會像我一樣在抽樣的那天表現不佳)。
我非常好奇遺漏罪和犯罪罪的區別。例如,假設一位同學感到難過。選擇坐在她旁邊安慰她將是一個很好的善行。但如果你看到她卻選擇不做任何事呢?那會被認為是壞的嗎?他們不會回答假設性問題,但強烈建議應該把握機會做好事。
最近出現了關於聖誕老人的名單本身的道德問題。對許多父母來說,行為不端的孩子並不總是壞的。拔掉那隻蜘蛛的腿並不是壞事,而是孩子在探索周圍的世界。在餐廳裡瘋狂跑來跑去並不是壞的,而是健康的童年表現。他們認為期待孩子遵循道德規範是壓抑的,將聖誕老人的禮物與遵循這些規範的情況掛鈎是情感勒索。然而,這是一個私人、非政府的志願事業。他的規則。不過,有人提到,分配給客戶服務和索賠的員工在過去一代中顯著增加。
顯然,事件收集與評估的過程是高度分散的,發生在邊緣。沒有理由整合數據或處理。當事件被歸類為好或壞時,它會被包裝(並系上絲帶)並送到地區存儲庫。
分類聚合與預測
最終的交付成果當然是聖誕老人的名單,數據來自地區存儲庫,聚合成每個人的單一二進位結果。
從多個邊緣節點整合數據似乎對於主數據管理構成了一個重大挑戰:具體來說,就是在不同的時間和地點將事件與正確的個人匹配起來。整個行業已經出現,用於識別比爾·瓊斯(Bill Jones)和威廉·瓊斯(William Jones)是否是同一個人的問題。這不是問題,我被告知,因為事件與個人的固有特徵相關聯。也許是指紋、耳垂形狀或視網膜印記?也許吧。商業機密。
當談到聚合和分類時,我的第一個猜測是,每年都保持一個賬本,記錄加權的壞與好的事件平衡。單一的大壞事件得分,比如-10,可能會被四個稍微好的事件 +3 各抵消。或者也許他們使用決策樹或其他神經網絡。
社交媒體提供了另一個變數。矛盾的是,儘管社交媒體提供了大量關於他人的信息,但我們卻常常感到更加孤立,這些“互動”中絕大多數是中立的。但你在朋友的照片下點擊讚時算是好嗎?當你對一個發現是機器人發佈的帖子發出尖酸的回應時算是壞嗎?更多未回答的假設問題。只要做好事就好。
根據該特定地區存儲庫的信息進行的分類會被本地保存,並與該計算的關鍵組件一起存儲。

對每個人的持續當前分類狀態並不是必需的。聖誕老人只在感恩節前後檢查名單兩次,第二次是在聖誕前夕(主要是檢查任何最後的變更)。地區存儲庫中的數據通過聯合查詢獲取,盡可能將處理推向邊緣。
但就像大多數企業生成的操作數據一樣,事件數據在這裡也用於其他目的。其中最重要的就是支持玩具製造的預測分析。製造團隊無法等到11月生成初步的好壞名單來知道他們要為誰製作禮物。因此,每月從地區存儲庫收集事件數據,計算出一個置信分數,以識別那些最有可能被歸類為好的孩子。可能性越高,製造開始的時間就越早。許多好的判定是在最後一刻做出的。我們很多人都記得一旦看到城裡的聖誕裝飾,就開始努力改善自己的行為。十二月特別忙,但那是正常的。也有可能從好變成壞,因此需要撤回之前準備好的禮物。幸運的是,這種情況極為罕見,但確實會發生。
這些預測分析需要的輸入不僅僅是每個人的單一二進位結果。它還需要來自前幾年的歷史數據。歷史越多越好。這是一個熟悉的對話。一方希望保留所有數據,而另一方則試圖管理成本、維護工作和風險。這也是一個熟悉的妥協。詳細數據存儲幾年,然後進行摘要,並將更早的數據“簡化”。
由於最終結果只是二進位選擇,操作系統可能會傾向於不擔心數據質量。但這顯然不正確。數據質量是最高優先事項。沒有人會說:“這些數據對聖誕老人的名單來說足夠好了,那對你也足夠好。”沒有人希望自己的不良數據成為任何過程中錯誤或錯誤分類的原因。這會是壞的。
“但是如果一個明確在好名單上的人發現他們想要的聖誕禮物是更晚的事,早在製造完成後。”我問。他們看著我,表情就像他們來自南方一樣,會說:“祝福他的心。”如果他們能夠在 Zoom 通話屏幕上輕拍我的頭,他們一定會這樣做。可以說,特定的禮物分配可以在整個年度中進行調整。對於預測上好的行為,沒有人會受到冷落。

位置追蹤與驗證
研究人員分析了聖誕老人的路線、速度、載重、馴鹿馬力和卡路里攝入量。我們都理所當然地認為他會給全世界的孩子送禮,但沒有人似乎想知道他是如何知道去哪裡的。怎麼知道名單上的每個人在聖誕早上會在哪裡。答案是一個數據收集的努力,與好壞事件不相上下。
大多數家庭都有一致的聖誕傳統,每個人聖誕早上的位置歷史都被保存。此外,路線規劃位置服務使用三個主要數據來源。第一個是來自郵政地址服務(如 Pitney Bowes 和 Experian)的基線位置詳細信息。這些對於識別父母的住址非常有用,但對於那些將要出行的家庭則不適用。他們並沒有搬家,只是不會在家裡。地址驗證服務不會知道這一點。第二個來源是來自運輸提供商的實時數據,包括航空公司、船隻、火車和任何包括聖誕前夕的酒店預訂。最後,利用好壞事件的收集來識別和解釋聖誕早上的計劃對話。這一細節讓我明白,聖誕老人不僅關注孩子,還關注他們的父母。同樣,這些信息可能非常敏感,並且小心僅捕獲絕對需要的內容,並確保其安全。
當地點事件在地區存儲庫中被識別時,它會被轉發到遠北數據中心的中央存儲庫。

接下來的操作過程並不為人所知,我必須獲得特殊許可才能在這裡包含它:一支先遣隊在聖誕老人的路線上提前出發以驗證位置。聖誕老人沒有時間在空白的停靠點上浪費時間,或者進行第二次巡迴以修正錯誤。當一名收件人不在預期的位置時,總部的操作團隊會找到他們並重新規劃路線。最後的物流調整和意外變化是意料之中的。
數據模型
一旦我了解了業務流程和解決方案組件,我可以開始制定概念數據模型,包括實體、關鍵字段、關係和一些屬性。
該模型專注於個體。我們花了很長時間討論這個中心實體的其他名稱。似乎最長的數據建模對話都是關於命名。我們考慮過“Party(派對)”,但那太籠統;“Customer(顧客)”聽起來太冷漠,“Believer(信徒)”和“Child(孩子)”又排除了某些仍在數據庫中的人。
每個個體每年都有一個分類,包括他們的總分和最終的好壞判定。這非正式地被稱為聖誕老人的名單,儘管實際上在聖誕前夕生成的報告是將個體、分類和配送位置結合在一起。現在,對於你要評論的内容,我知道概念數據模型通常不包括摘要表,但這個模型對業務目的是如此關鍵;事實上,這就是業務目的,因此值得納入。

一個好壞(NaNi)事件可能涉及多個個體,每個個體與多個事件相關聯。一個關聯表解決了多對多的關係。
每個個體整個年度都有一個當前的配送位置,並在送貨時捕獲實際位置。變更會被記錄並分析以改進流程。歷史數據以及來自運輸提供商和地區存儲庫的位置信息被存儲,以確定配送位置。
其他實體在邊緣處存在,並為禮物選擇和分配路由提供信息。這些包括地區和國家的習俗、宗教信仰、與父母和監護人的關係及其聯繫信息、空域限制、地區地形等。大多數這些都是個別查詢表或小型相關表。這些結構早已制定,運行良好,據我所知我不需要擔心它們。
他們展示了他們當前系統的元數據庫,我對其完整性感到非常印象深刻。對於每一項內容,最少會定義描述、預期內容和安全要求。我毫不懷疑新的環境會有類似良好的文檔。
數據庫大小
數據庫大小的關鍵指標是名單上個體的數量和他們的位置、每個個體預期收集的事件平均數量,以及所需的歷史深度。
個體:
聖誕老人的名單幾乎完全集中在孩子身上,但我們知道一些成年人也在上面。請考慮《雪人佛洛斯特》(Frosty the Snowman)結尾場景(前面提到的紀錄片之一),聖誕老人警告魔術師亨克教授:“如果你碰一下那頂帽子的邊緣,我將不會再給你帶來任何聖誕禮物,直到你活著的那天。”誠然,成年人數量很少,但那些真正相信並且能聽到《極地快遞》(The Polar Express)中出現的鈴聲的人,卻是在名單上和數據庫裡。
幾項研究檢視了孩子在不同年齡段相信聖誕老人的概率。馬克斯·坎多奇亞(Max Candocia)發表的結果是典型的:到八歲時,孩子仍然相信的概率只有 50%,到十四歲時這個數字接近零,並保持平穩。

但總的數量呢?2019 年菲利普·邦普(Philip Bump)在《華盛頓郵報》上發表的一項有關聖誕老人的聖誕前夕送貨任務的分析,將聖誕老人送達的個體數量估計約為 5.5 億,生活在約 4 億個家庭中。幾年前的一項研究估計約為 5.25 億。但這僅代表好名單上的個體數量。
壞名單的長度則難以捉摸。假設不在好名單上的人就是壞的這一假設是不正確的。對於兩類個體,都會收集兩類事件,因此每個人都必須出現在數據庫中。我們可以統計聖誕老人送達的國家中,14 歲以下的孩子總數。這樣可能會接近,而 14 歲以上的人則可以忽略不計。但作為初步保守的估算,讓我們假設是 50/50 的比例(一般認為好的人遠多於壞的,可能達到九比一)。為了安全起見,我們將使用 1.1 個體和 8 億個家庭的活躍主名單。
最後一個記錄計數考量是名單維護。當你不再相信聖誕老人並且聽不到鈴聲時,你的信息將不再需要在活躍數據庫中。當然,有人可能會再次相信並被“恢復”。這很少見,但確實會發生。分析師們當然希望數據可以無限期保存。達成了一個妥協,活躍名單僅包含那些在年初仍然相信的人。所有其他人都會被保存 125 年。這應該可以涵蓋到每個人。
每個個體被分配一個 16 字節的 GUID(全球唯一識別碼)。擁有超過 2^128 個不同識別碼,碰撞不應該是個問題。假設姓名和其他人口統計信息總共需要 300 字節。存儲個體信息將消耗大約 310 GB。這個數字較小,因此可以推送到地區存儲庫的初始種子副本,由主數據管理系統協調變更的分發。
假設每年有 7% 的個體離開,那麼 125 年的存檔預期將約為活躍名單大小的九倍,或 2.8 TB。即使將此數字翻倍兩次以容納人口增長,仍是一個完全可管理的數字。
分類:
每年對於名單上的每個人,會存儲分類、計分指標和個體識別符。假設每個人每年需要 70 字節,持續 14 年,並且相同的存檔 9 倍擴展因子,活躍分類將使用 1 TB,存檔將使用 9 TB。
事件:
即使我不需要擔心存儲原始事件媒體,摘要事件信息以及指向事件媒體的引用也會與個體相關聯。檔案參考會在地區存儲庫中記錄。一旦被描述和分類,這些媒體文件幾乎不會被訪問。只有在有問題、邊緣案例、訴訟或上訴時才會這樣。這聽起來似乎是一個耗時、費用和精力的工作,但當真的需要時,這些信息是至關重要的。此外,這些數據對於質量和培訓目的也很有用。
個體在某一天被判定為好或壞的機會數量變化非常大。除了個性、社交環境和年齡等常見變數外,越來越多的互動是數字化的,而不是個人的。
Statistica 對全球每個連接者的每日數字數據互動進行的一項研究發現,這一數字從2010年的約300次增加到2020年的1400次,並預計到2025年接近5000次。比起我們主要以面對面的方式互動的時候,這多了得多。
假設每人每天有300次可分類的好壞互動。這似乎太多了,但當你開始注意時會發現它們的確堆積起來。每個事件都包括描述、分類、用於計分的詳細指標、時間戳、來源和媒體文件的識別符。此外,在關聯表中存儲了一個指向該個體的連結。假設這一切需要300字節來記錄單次互動(再次,這可能是高估)。這樣計算下來,每人每年的數據量為32 MB。將此數字翻倍,因為要存儲當前和前一年的事件。現在,將其乘以十億個體,這將達到65PB。這樣的數字相當龐大。當然,這是分散的,因此並不是所有的空間都需要在同一地方。此外,幾乎所有數據元素都是易於且高度可壓縮的,因此將大小減少五倍是可行的,將其減少到約13PB。
這些數據在個體在活躍數據庫中時存儲,或持續15年,兩者中較長的時間。這將接近200PB。可能需要回去進行一些壓縮研究以進一步降低該數字。去重也許會有所幫助。
位置:
ISO 19160-1 地址規範並不強制規定字段長度。使用每個地址組件可能的最大字符數需要超過1000字節。通過使用可變長度的字符字符串,我們不會存儲接近於這一最大值的內容。幾乎所有的地址都少於100個字符,這意味著即使是十億個地址也僅需要93GB。
通話中有人問,是否可以通過標準化地址組件進一步減少這個數字。這是一個好主意,但在實際中,組件識別符需要的空間大於實際值本身。最好將其保持為非標準化(但可以使用多值壓縮來減少表大小)。
將位置與個體鏈接的關聯表每年需要每個個體36字節。假設在活躍名單上持續14年以及相同的9倍存檔擴展,位置數據需要470 GB,存檔位置數據需要4.1 TB。
最後,位置事件與好壞事件相似。存儲的數量要少得多,因為焦點在於確定個體在單一天的所在位置。每一天的事件數量平均少於10個。這些事件也會保留兩年,用於研究目的,總共約3 TB。
最終數據庫大小的預期結果幾乎如預期:
主表(個體、分類和配送位置)– 1.7 TB存檔表(個體、分類和配送位置)– 15.9 TB事件表(好壞和位置)– 13 PB。降低這最後一個數字是關鍵項目的重點。
—
我向團隊展示了我的想法,收到的反饋非常正面。他們說他們可以接手。老實說,我對自己無法參與專案的結尾感到失望,但我很榮幸能被邀請做顧問。
在最後一次會議結束之前,我問我是否可以通過我的部落格分享這次經歷。他們說沒問題,但故事必須先經過審查和批准。可能需要在公佈之前做一些刪減。我感到擔心,但他們告訴我不必擔心。他們告訴我不必擔心很多事情。他們說我不會記得已經刪減的內容。甚至不會注意到。
如果你有任何建議或改進,請告訴我,我會轉告他們。
回想起來,整件事情都相當基本,我不認為他們真的需要我的幫助。也許他們被告知要尋求外部意見。也許他們只是想分享。
而且,也許在某個地方,可能在雲端,可能是在某個寒冷的地方,存在著一個新啟用的數據庫條目。
也許好幾個。
也許這就是原因。
新聞來源
本文由 AI 台灣 使用 AI 編撰,內容僅供參考,請自行進行事實查核。加入 AI TAIWAN Google News,隨時掌握最新 AI 資訊!