睿文小說 > 四合院:我是雨水錶哥 > 第503章 數據庫

第503章 數據庫

⬅ 上一章 📋 目錄 ⚠ 報錯 下一章 ➡
⭐ 加入書籤
推薦閱讀: 花都風流第一兵王 代嫁寵妻是替身 天鋒戰神 穿越古代賺錢養娃 我覺醒了神龍血脈 我的老婆國色天香 隱婚嬌妻別想跑 遲遲也歡喜 全職獵人之佔蔔師

“你還亂抓不?”

陳雪茹拿著一根棍子,指著小何駿,一臉來氣。

小何駿靠牆站著,瑟瑟發抖,臉上淚痕未乾。

“媽媽,我不敢了!”

何雨柱在一旁勸:“算了,雪茹,駿駿不懂事,再說那個米,不是什麼大事,彆氣壞了身子。我這就去撿乾淨,咱們今天就吃米。”

陳嬸一把把小何俊摟到懷裡:“哎喲,你看大過年的,俊俊都知道錯了,以後就改了!”

念青在一旁道:“駿駿浪費糧食不對!”

陳雪茹道:“你也不是好人,看見他往米缸裡丟沙子也不拉著,他不懂事,你也不懂事嗎?”

念青立馬閉嘴。

呂辰、婁曉娥和雨水樂嗬嗬的看著。

大年初三一早,小何駿就惹了大麻煩,不知從哪裡抓來一把沙子,就丟在了米缸裡。

把陳雪茹氣得不輕。

正操練著,諸葛彪急匆匆就來到了呂辰家裡。

看見家裡的情況一愣:“陳嬸兒,何科長,大家好!”

說完,從兜裡掏出三塊錢,一人一塊塞在念青、何駿和小呂曉手裡。

“呂辰,你跟我走!”

“這麼急,去哪裡?”

“我這兩天思前想後,咱們還漏了一樣東西。”

呂辰疑惑:“什麼?”

“儲存櫃!”

“儲存櫃?”

“對,這個分散式電路設計輔助係統,科研機是KJ-0,咱們熟,編輯機是咱們做的,顯示器也是,鍵盤也冇問題,通訊是咱們在設計,唯獨這個儲存櫃,咱們不知道。這可是係統的核心,要存標準單元庫的。你想想,萬一設計出來不可用,找誰說理去?”

呂辰點點頭:“那你的意思是?”

“咱們去找陳教授去!”

“現在?”

“對,現在!”

呂辰有點無語,不過想想也對,的確應該去問清楚,正好也順道給梁先生送個火腿。

和家裡交待一聲,推出三輪車,裝上一隻火腿,又拿了些蔬菜雞蛋。

一路頂幾冒雪,先來到清華園,往梁先生家送了火腿,這纔來到燕園。

陳教授是北大數學係的,搞拓撲,在星河計劃理論組裡負責指令集設計和資料結構。

呂辰把車騎進陳教授家樓下,和諸葛彪提著蔬菜雞蛋上了樓。

敲門之後,陳師母開門出來。

“師母好,我們是來給教授拜年。”

二人把禮物遞過去,陳師母接過菜籃子,翻看下麵的菠菜和蒜苗,驚訝道:“臘月裡還能見到這個?還帶著水珠呢!”

呂辰笑著說:“自家暖棚種的,不值什麼。”

陳教授從書房走出來,摘下老花鏡,看見二人,樂了:“小呂、諸葛。來,坐坐坐。”

寒暄幾句,陳師母去廚房張羅。

屋裡安靜下來,隻聽得見爐子上水壺咕嘟咕嘟的聲音。

陳教授端起茶杯,看著二人:“你們來得正好,標準單元庫的事,我讓研究生想了幾個方案,年後想找你們一起討論。”

呂辰接過茶杯:“教授,我們今天來,就是想請教這個事。我們整合電路實驗室是分散式係統的使用者,有些地方冇想明白。”

“你說。”

呂辰看了看諸葛彪。

諸葛彪會意,從兜裡掏出個小本子,翻開一頁。

“陳老師,我在琢磨一個事。標準單元庫有四百多個單元,每個單元有邏輯圖、版圖、模擬模型、測試向量。這些東西,現在都記在紙麵上,手冊、圖紙、卡片。工程師畫圖的時候,翻手冊查引數,翻圖紙看佈局,翻卡片找測試資料。”

陳教授點點頭。

諸葛彪繼續說:“以後上分散式係統了,用計算機輔助設計。我就琢磨著,這些資料是要存在儲存櫃裡給計算機呼叫的。工程師坐在終端前麵,敲幾個命令,就能查到某個單元的引數,就能調出它的版圖,就能跑模擬……”

陳教授放下茶杯:“的確是這樣,你遇到什麼問題了?”

諸葛彪笑了笑:“問題就是——這些資料怎麼存?”

他從本子裡抽出一張紙,上麵畫了一個簡單的增值表。

“您看,一個與非門單元,它的邏輯功能可以用真值表描述:輸入A、輸入B、輸出Y。四個組合,每個組合對應一個輸出。這個真值表,在紙麵上很好寫,四行兩列。但存在計算機裡呢?怎麼表示?是存成一張表,還是存成一組數?怎麼讓計算機知道‘這是一個與非門’,而不是一個‘與門’或者‘或非門’?”

陳教授接過那張紙,看了一眼,笑了。

“你這個問題,問到了根子上。”

他站起來,走到書桌前,拿了一張大紙和一支鉛筆,坐回沙發上。

“你剛纔說的真值表,在數學上是一個對映,從輸入組合的集合,對映到輸出值的集合。這個對映,可以用表來表示,也可以用邏輯表示式來表示。但你說得對,光存這個表不夠。計算機要知道‘這是一個與非門’,還要知道它的版圖在哪兒、模擬模型在哪兒、測試向量在哪兒。”

他在紙上畫了一個樹狀圖。

“你看,單元庫是一個‘根’,每個單元是一個‘分支’,每個單元的屬性是‘葉子’。這種結構,在數學上叫樹。計算機要存這些資料,就需要一種能表示‘樹’的資料結構。”

呂辰插了一句嘴:“陳老師,您這麼一說,我倒想起一個東西,圖書館。”

陳教授愣了一下:“圖書館?”

“對。”呂辰指著那個樹狀圖,“圖書館裡幾萬本書,是怎麼找到想要的那本的?先查卡片目錄,找到索書號,再去書架上找。卡片目錄就是索引,按書名查、按作者查、按分類查。書架就是存書的地方,索書號告訴你去哪個書架拿。”

陳教授眼睛亮了。

呂辰繼續說:“標準單元庫,不就是一個‘圖書館’嗎?每個單元是一本書,單元型號是索書號,功能分類是分類法。工程師要查一個與非門的引數,就像讀者要找一本拓撲學的書,先查索引,找到位置,再去取資料。”

陳教授哈哈大笑:“你這個比方,打得太準了!圖書館的分類法、索引、目錄,就是一套資料管理係統。幾百年前就有了,隻不過管的是書,不是單元庫。”

他在紙上又畫了一個圖,這次是圖書館卡片目錄的示意圖。

“圖書館的卡片目錄,按書名排、按作者排、按分類排。標準單元庫,也應該有按型號查、按功能查、按引數查的索引。這就是資料結構裡的‘多級索引’,樹結構、雜湊表,都是為了讓計算機不用掃遍所有資料就能找到目標。”

諸葛彪聽明白了:“所以,單元庫的資料結構,不是一個簡單的存起來,是得像圖書館一樣,有分類、有索引、有目錄?”

“對。”陳教授說,“你這個問題,不是儲存問題,是資料結構問題。資料怎麼組織,決定了計算機怎麼訪問、怎麼查詢、怎麼修改。如果組織得不好,資料越多,越難用。”

陳教授靠在椅背上:“圖書館除了放書,還要管借書、還書、誰借了哪本書、什麼時候還……”

“這就是資料之間的關係。書和讀者之間、讀者和借閱日期之間、書和書架位置之間,這些關係,比書本身還重要。標準單元庫,也是一樣。光把單元存進去不夠,還要管誰在用、誰在改、什麼時候改的、新版本和舊版本什麼關係。”

他拿起鉛筆:“怎麼存、怎麼查、怎麼管關係,合在一起,就叫資料庫。這不是我發明的詞,國外已經在搞了。IBM給阿波羅計劃做了一套係統,專門管資料。叫IMS,InformationManagementSystem。就是用來管大型專案的資料的。”

IMS,IBM為阿波羅計劃開發的,世界上第一個真正的資料庫管理係統。

陳教授居然知道這個。

“標準單元庫,四百多個單元,幾十個引數,還不斷在改、在加、在被不同的人用,這就是一個小型的IMS。需要一套資料管理係統,能存、能查、能改、能管版本、能管誰在用。”

他放下鉛筆,看著二人:“這個問題,比造一台計算機還難。計算機是算數的,這個是管事的。算數有公式,管事冇有。得自己琢磨。”

諸葛彪低頭翻了翻本子:“教授,還有一個問題,跟這個連著。以後分散式係統搭起來了,好幾台機器共用一個儲存櫃。在具體使用過程中,會出現A工程師在改一個與非門的版圖,B工程師同時在跑這個與非門的模擬。”

陳教授看著他。

諸葛彪繼續說:“A改了一半,B跑出來的結果是舊的還是新的?A改完了,B不知道;B跑完了,A還冇改完。最後誰的資料算數?”

陳教授皺起眉頭。他拿起鉛筆,在紙上畫了一個簡圖。

“你是說——併發控製?”

“我就是這個意思。”諸葛彪說,“多個使用者同時訪問同一份資料,怎麼保證每個人看到的是正確的、最新的?”

陳教授想了想:“銀行裡存錢取錢,兩個人同時操作一個賬戶,也會出問題。銀行的解決辦法是加鎖,一個人在改,彆人隻能看不能動。或者做日誌,誰最後改的算誰的。”

他在紙上寫了幾個字:鎖、日誌、版本。

“你說的情況更複雜。工程師不光是在改資料,還在跑計算。跑一個模擬可能要幾分鐘,這段時間裡彆人能不能看?能不能改?如果允許彆人看,看到的是中間狀態還是舊狀態?如果允許彆人改,改完了模擬結果還算不算數?”

諸葛彪點頭:“就是這個意思。我就是擔心,係統設計的時候不考慮這些,到時候用起來全是麻煩。”

陳教授在紙上又寫了一個詞:事務。

“這個問題,國外也在研究。把一組操作打包成一個‘事務’,要麼全做完,要麼全不做。中間狀態彆人看不到。做完了再告訴彆人‘我改完了’。這就是‘強一致性’,任何時候,每個人看到的資料都是一致的,不會出現‘A看到新的、B看到舊的’這種亂子。”

呂辰心裡一動,陳教授連“強一致性”這種詞都整出來了,這可是後世的規則。

陳教授繼續說:“這個問題,年後我讓研究生專門查資料。你們做工程的有個說法,磨刀不誤砍柴工。資料結構冇想好,後頭全是坑。”

呂辰又說:“還有一個問題。工程師坐在終端前麵,敲一個命令,等半天纔有反應,這也不行。”

“什麼命令要等半天?”

“比如查一個單元的引數。標準單元庫有四百多個單元,每個單元有幾十個引數。如果存得不好,查一個引數要掃描整個庫,那就慢了。工程師翻手冊隻需要幾秒鐘,計算機不能比手冊還慢吧?”

陳教授若有所思:“你是說響應速度?”

“對。”呂辰說,“使用者等不起。翻手冊是幾秒鐘,計算機如果做不到幾秒鐘,人家還不如翻手冊。所以資料組織方式必須考慮‘怎麼查得快’,不能每次都從頭掃到尾,得有索引,得能直接定位。”

陳教授笑了,在紙上畫了一個樹狀圖,又畫了一個格子圖。

“你這個問題,就是索引和檢索。樹結構、雜湊表,都是為了讓計算機不用掃遍所有資料就能找到目標。你把圖書館的卡片目錄搬過來就行,按型號建一個索引,按功能建一個索引,按引數建一個索引。想查什麼,先查索引,再取資料,不用掃遍整個庫。”

他在雜湊表旁邊寫了兩個字:O(1)。

“這就是數學上的常數時間,不管庫有多大,查一次的時間是一樣的。你要的低延遲,就是這個。”

呂辰接著追問:“還有一個問題,算得慢。”

“算什麼?”

“模擬。一個與非門單元,跑一遍模擬,可能要幾分鐘。四百多個單元,每個跑一遍,就是幾十個小時。這還隻是一個版本。工程師改一版,又要重新跑。”

陳教授放下鉛筆,靠在椅背上:“你是說吞吐率?高吞吐?”

“對。”呂辰說,“不能讓大家排隊等著。得讓機器同時跑多個模擬,A工程師的與非門在跑,B工程師的或非門也在跑,互不乾擾。這就是您剛纔說的併發,但不是‘資料併發’,是‘計算併發’,多個人同時用,機器不能閒下來。”

陳教授想了想:“這個問題,比前兩個複雜。前兩個是‘怎麼存’‘怎麼查’,這個是‘怎麼排程’。多個任務同時提交,誰先算、誰後算、怎麼分配算力。如果機器夠多,還可以並行算,一個任務拆成幾塊,幾台機器同時算,算完了再拚起來。”

他在紙上畫了一個任務佇列的圖。

“這個在數學上叫排程演演算法。我們要的是單位時間內處理的任務儘可能多。但不是越多越好,還要考慮每個任務的等待時間。這就是權衡。”

呂辰最後說:“還有一個問題,也是最頭疼的。”

陳教授看著他。

呂辰說:“整合電路設計,不是一個人乾的活。有人畫版圖,有人跑模擬,有人做測試。版圖畫好了,模擬模型要跟著改;模擬模型改了,測試向量也要跟著改。這些資料是連著的,這邊改了,那邊不知道,就亂了。”

陳教授坐直了身子:“你是說——模型耦合?”

“對。”呂辰說,“版圖、模擬模型、測試向量,是同一個單元的不同側麵。它們應該是一體的,改版圖的時候,係統應該提醒模擬模型可能也要改;跑模擬的時候,係統應該自動用最新的版圖資料。不能這邊改完了,那邊還在用舊的。”

陳教授沉默了一會兒,站起來走到書架前,抽出一本書翻了翻,又放回去。

他轉過身,看著呂辰:“你這個問題,比前麵幾個都深。前麵是‘怎麼存’‘怎麼查’‘怎麼算得快’,這個是‘怎麼讓不同的資料保持同步’。”

他走回來坐下,拿起鉛筆,在紙上畫了一個有向圖,幾個圓圈,箭頭從一個指向另一個。

“這涉及到資料之間的依賴關係。A改了,B要跟著改,C也要跟著改。這種依賴關係,可以用有向圖來表示。節點是資料,邊是依賴關係。A指向B,表示A改了B要跟著改。”

呂辰二人湊過去看那個圖,諸葛彪道:“那計算機能不能自動知道這種依賴關係?工程師改了一個單元的版圖,係統自動找出所有依賴它的模擬模型和測試向量,提示這些也要更新?”

陳教授點點頭:“理論上可以。但依賴關係要定義清楚,資料要能追蹤來源和去向。這又回到資料結構的問題,資料不能孤立地存,要存它們之間的關係。這就是剛纔說的模型耦合,不同模型之間怎麼對齊、怎麼同步、怎麼保證一致性。”

陳教授放下鉛筆,靠在椅背上,看著茶幾上那張畫滿圖的紙,沉默了好一會兒。

“諸葛、小呂,你們今天問的這幾個問題,多個人同時用、查得快、算得快、資料對得上,其實是一個問題。”

呂辰二人聽著。

陳教授說:“就是怎麼把標準單元庫的資料組織好,讓計算機既能存、又能查、還能管住它們之間的關係。這不隻是一個‘庫’,這是一個‘知識係統’。就像圖書館不隻是放書的地方,還是一個能查、能借、能管住書不丟、能知道誰借了哪本書的係統。”

他端起茶杯喝了一口,又放下。

“咱們剛纔討論了‘強一致性、低延遲、高吞吐、模型耦合’,你們說的那些問題,就是這幾個詞的意思。”

呂辰二人對視一眼。

陳教授繼續說:“一致性,就是多個人同時用的時候,資料不能亂。延遲,就是查東西不能等。吞吐,就是算東西不能太慢。耦合,就是不同模組的資料要能對上。”

他看著二人,笑了笑:“你們想的問題,跟國外那些搞資料庫的人想的一樣。你們從使用者的角度,把需求說清楚了。剩下的事,怎麼實現,是我們搞數學和搞理論的事。”

又坐了一會兒,諸葛彪站起來:“教授,那我們就不打擾了。您過年好好歇幾天,年後見。”

陳教授送他們到門口,他忽然想起什麼:“你們今天說的這幾個問題,每一個都是真問題,我記下來了,會在儲存櫃的設計中考慮進去。”

呂辰點頭:“打擾教授了。”

陳教授擺擺手:“打擾什麼?使用者提需求,施工方負責落實,這樣纔好,那些問題,從在辦公室裡可想不出來,還得聽聽一線的聲音。”

二人了門,一路出了燕園。

呂辰問道:“諸葛師兄,這個放心了吧?”

諸葛彪點點頭:“放心了,陳教授太厲害了,我現在好後悔,當時為什麼不學數學。”

呂辰笑道:“得了吧,數學這碗飯,你確定啃得動?”

諸葛彪不服道:“怎麼啃不動?咱可以啃簡單的!”

呂辰打擊道:“你不學數學,見他如井中蛙觀天上月,你要是學了數學,見他如蜉蝣見青天。”

諸葛彪哈哈笑了起來:“你敢說我是蜉蝣?”

呂辰繼續打擊道:“嚴格來說,你不算蜉蝣,你是井中蛙!”

雪地上,兩行腳印歪歪扭扭地延伸向前方。

第 1 頁
⬅ 上一章 📋 目錄 ⚠ 報錯 下一章 ➡
升級 VIP · 無廣告 + VIP 章節全解鎖
👑 VIP 特權 全站去廣告清爽閱讀 · VIP 章節無限暢讀,月卡僅 $5
報錯獎勵 發現文字亂碼、缺章、內容重複?點上方「章節報錯」回報,審核通過立獲 3天VIP
書單獎勵 前往 個人中心 投稿你的私藏書單,審核通過立獲 7天VIP
⭐ 立即升級 VIP · 月卡僅 $5
還沒有帳號? 免費註冊 | 登入後購買