红薯小说网 > 穿越小说 > 四合院:我是雨水表哥 > 第503章 数据库
    “你还乱抓不?”

    陈雪茹拿着一根棍子,指着小何骏,一脸来气。

    小何骏靠墙站着,瑟瑟发抖,脸上泪痕未干。

    “妈妈,我不敢了!”

    何雨柱在一旁劝:“算了,雪茹,骏骏不懂事,再说那个米,不是什么大事,别气坏了身子。我这就去捡干净,咱们今天就吃米。”

    陈婶一把把小何俊搂到怀里:“哎哟,你看大过年的,俊俊都知道错了,以后就改了!”

    念青在一旁道:“骏骏浪费粮食不对!”

    陈雪茹道:“你也不是好人,看见他往米缸里丢沙子也不拉着,他不懂事,你也不懂事吗?”

    念青立马闭嘴。

    吕辰、娄晓娥和雨水乐呵呵的看着。

    大年初三一早,小何骏就惹了大麻烦,不知从哪里抓来一把沙子,就丢在了米缸里。

    把陈雪茹气得不轻。

    正操练着,诸葛彪急匆匆就来到了吕辰家里。

    看见家里的情况一愣:“陈婶儿,何科长,大家好!”

    说完,从兜里掏出三块钱,一人一块塞在念青、何骏和小吕晓手里。

    “吕辰,你跟我走!”

    “这么急,去哪里?”

    “我这两天思前想后,咱们还漏了一样东西。”

    吕辰疑惑:“什么?”

    “存储柜!”

    “存储柜?”

    “对,这个分布式电路设计辅助系统,科研机是KJ-0,咱们熟,编辑机是咱们做的,显示器也是,键盘也没问题,通信是咱们在设计,唯独这个存储柜,咱们不知道。这可是系统的核心,要存标准单元库的。你想想,万一设计出来不可用,找谁说理去?”

    吕辰点点头:“那你的意思是?”

    “咱们去找陈教授去!”

    “现在?”

    “对,现在!”

    吕辰有点无语,不过想想也对,的确应该去问清楚,正好也顺道给梁先生送个火腿。

    和家里交待一声,推出三轮车,装上一只火腿,又拿了些蔬菜鸡蛋。

    一路顶几冒雪,先来到清华园,往梁先生家送了火腿,这才来到燕园。

    陈教授是北大数学系的,搞拓扑,在星河计划理论组里负责指令集设计和数据结构。

    吕辰把车骑进陈教授家楼下,和诸葛彪提着蔬菜鸡蛋上了楼。

    敲门之后,陈师母开门出来。

    “师母好,我们是来给教授拜年。”

    二人把礼物递过去,陈师母接过菜篮子,翻看下面的菠菜和蒜苗,惊讶道:“腊月里还能见到这个?还带着水珠呢!”

    吕辰笑着说:“自家暖棚种的,不值什么。”

    陈教授从书房走出来,摘下老花镜,看见二人,乐了:“小吕、诸葛。来,坐坐坐。”

    寒暄几句,陈师母去厨房张罗。

    屋里安静下来,只听得见炉子上水壶咕嘟咕嘟的声音。

    陈教授端起茶杯,看着二人:“你们来得正好,标准单元库的事,我让研究生想了几个方案,年后想找你们一起讨论。”

    吕辰接过茶杯:“教授,我们今天来,就是想请教这个事。我们集成电路实验室是分布式系统的用户,有些地方没想明白。”

    “你说。”

    吕辰看了看诸葛彪。

    诸葛彪会意,从兜里掏出个小本子,翻开一页。

    “陈老师,我在琢磨一个事。标准单元库有四百多个单元,每个单元有逻辑图、版图、仿真模型、测试向量。这些东西,现在都记在纸面上,手册、图纸、卡片。工程师画图的时候,翻手册查参数,翻图纸看布局,翻卡片找测试数据。”

    陈教授点点头。

    诸葛彪继续说:“以后上分布式系统了,用计算机辅助设计。我就琢磨着,这些数据是要存在存储柜里给计算机调用的。工程师坐在终端前面,敲几个命令,就能查到某个单元的参数,就能调出它的版图,就能跑仿真……”

    陈教授放下茶杯:“的确是这样,你遇到什么问题了?”

    诸葛彪笑了笑:“问题就是——这些数据怎么存?”

    他从本子里抽出一张纸,上面画了一个简单的增值表。

    “您看,一个与非门单元,它的逻辑功能可以用真值表描述:输入A、输入B、输出Y。四个组合,每个组合对应一个输出。这个真值表,在纸面上很好写,四行两列。但存在计算机里呢?怎么表示?是存成一张表,还是存成一组数?怎么让计算机知道‘这是一个与非门’,而不是一个‘与门’或者‘或非门’?”

    陈教授接过那张纸,看了一眼,笑了。

    “你这个问题,问到了根子上。”

    他站起来,走到书桌前,拿了一张大纸和一支铅笔,坐回沙发上。

    “你刚才说的真值表,在数学上是一个映射,从输入组合的集合,映射到输出值的集合。这个映射,可以用表来表示,也可以用逻辑表达式来表示。但你说得对,光存这个表不够。计算机要知道‘这是一个与非门’,还要知道它的版图在哪儿、仿真模型在哪儿、测试向量在哪儿。”

    本小章还未完,请点击下一页继续阅读后面精彩内容!

    他在纸上画了一个树状图。

    “你看,单元库是一个‘根’,每个单元是一个‘分支’,每个单元的属性是‘叶子’。这种结构,在数学上叫树。计算机要存这些数据,就需要一种能表示‘树’的数据结构。”

    吕辰插了一句嘴:“陈老师,您这么一说,我倒想起一个东西,图书馆。”

    陈教授愣了一下:“图书馆?”

    “对。”吕辰指着那个树状图,“图书馆里几万本书,是怎么找到想要的那本的?先查卡片目录,找到索书号,再去书架上找。卡片目录就是索引,按书名查、按作者查、按分类查。书架就是存书的地方,索书号告诉你去哪个书架拿。”

    陈教授眼睛亮了。

    吕辰继续说:“标准单元库,不就是一个‘图书馆’吗?每个单元是一本书,单元型号是索书号,功能分类是分类法。工程师要查一个与非门的参数,就像读者要找一本拓扑学的书,先查索引,找到位置,再去取数据。”

    陈教授哈哈大笑:“你这个比方,打得太准了!图书馆的分类法、索引、目录,就是一套数据管理系统。几百年前就有了,只不过管的是书,不是单元库。”

    他在纸上又画了一个图,这次是图书馆卡片目录的示意图。

    “图书馆的卡片目录,按书名排、按作者排、按分类排。标准单元库,也应该有按型号查、按功能查、按参数查的索引。这就是数据结构里的‘多级索引’,树结构、哈希表,都是为了让计算机不用扫遍所有数据就能找到目标。”

    诸葛彪听明白了:“所以,单元库的数据结构,不是一个简单的存起来,是得像图书馆一样,有分类、有索引、有目录?”

    “对。”陈教授说,“你这个问题,不是存储问题,是数据结构问题。数据怎么组织,决定了计算机怎么访问、怎么查询、怎么修改。如果组织得不好,数据越多,越难用。”

    陈教授靠在椅背上:“图书馆除了放书,还要管借书、还书、谁借了哪本书、什么时候还……”

    “这就是数据之间的关系。书和读者之间、读者和借阅日期之间、书和书架位置之间,这些关系,比书本身还重要。标准单元库,也是一样。光把单元存进去不够,还要管谁在用、谁在改、什么时候改的、新版本和旧版本什么关系。”

    他拿起铅笔:“怎么存、怎么查、怎么管关系,合在一起,就叫数据库。这不是我发明的词,国外已经在搞了。IBM给阿波罗计划做了一套系统,专门管数据。叫IMS,Information Management System。就是用来管大型项目的数据的。”

    IMS,IBM为阿波罗计划开发的,世界上第一个真正的数据库管理系统。

    陈教授居然知道这个。

    “标准单元库,四百多个单元,几十个参数,还不断在改、在加、在被不同的人用,这就是一个小型的IMS。需要一套数据管理系统,能存、能查、能改、能管版本、能管谁在用。”

    他放下铅笔,看着二人:“这个问题,比造一台计算机还难。计算机是算数的,这个是管事的。算数有公式,管事没有。得自己琢磨。”

    诸葛彪低头翻了翻本子:“教授,还有一个问题,跟这个连着。以后分布式系统搭起来了,好几台机器共用一个存储柜。在具体使用过程中,会出现A工程师在改一个与非门的版图,B工程师同时在跑这个与非门的仿真。”

    陈教授看着他。

    诸葛彪继续说:“A改了一半,B跑出来的结果是旧的还是新的?A改完了,B不知道;B跑完了,A还没改完。最后谁的数据算数?”

    陈教授皱起眉头。他拿起铅笔,在纸上画了一个简图。

    “你是说——并发控制?”

    “我就是这个意思。”诸葛彪说,“多个用户同时访问同一份数据,怎么保证每个人看到的是正确的、最新的?”

    陈教授想了想:“银行里存钱取钱,两个人同时操作一个账户,也会出问题。银行的解决办法是加锁,一个人在改,别人只能看不能动。或者做日志,谁最后改的算谁的。”

    他在纸上写了几个字:锁、日志、版本。

    “你说的情况更复杂。工程师不光是在改数据,还在跑计算。跑一个仿真可能要几分钟,这段时间里别人能不能看?能不能改?如果允许别人看,看到的是中间状态还是旧状态?如果允许别人改,改完了仿真结果还算不算数?”

    诸葛彪点头:“就是这个意思。我就是担心,系统设计的时候不考虑这些,到时候用起来全是麻烦。”

    陈教授在纸上又写了一个词:事务。

    “这个问题,国外也在研究。把一组操作打包成一个‘事务’,要么全做完,要么全不做。中间状态别人看不到。做完了再告诉别人‘我改完了’。这就是‘强一致性’,任何时候,每个人看到的数据都是一致的,不会出现‘A看到新的、B看到旧的’这种乱子。”

    小主,这个章节后面还有哦,请点击下一页继续阅读,后面更精彩!

    吕辰心里一动,陈教授连“强一致性”这种词都整出来了,这可是后世的规则。

    陈教授继续说:“这个问题,年后我让研究生专门查资料。你们做工程的有个说法,磨刀不误砍柴工。数据结构没想好,后头全是坑。”

    吕辰又说:“还有一个问题。工程师坐在终端前面,敲一个命令,等半天才有反应,这也不行。”

    “什么命令要等半天?”

    “比如查一个单元的参数。标准单元库有四百多个单元,每个单元有几十个参数。如果存得不好,查一个参数要扫描整个库,那就慢了。工程师翻手册只需要几秒钟,计算机不能比手册还慢吧?”

    陈教授若有所思:“你是说响应速度?”

    “对。”吕辰说,“用户等不起。翻手册是几秒钟,计算机如果做不到几秒钟,人家还不如翻手册。所以数据组织方式必须考虑‘怎么查得快’,不能每次都从头扫到尾,得有索引,得能直接定位。”

    陈教授笑了,在纸上画了一个树状图,又画了一个格子图。

    “你这个问题,就是索引和检索。树结构、哈希表,都是为了让计算机不用扫遍所有数据就能找到目标。你把图书馆的卡片目录搬过来就行,按型号建一个索引,按功能建一个索引,按参数建一个索引。想查什么,先查索引,再取数据,不用扫遍整个库。”

    他在哈希表旁边写了两个字:O1。

    “这就是数学上的常数时间,不管库有多大,查一次的时间是一样的。你要的低延迟,就是这个。”

    吕辰接着追问:“还有一个问题,算得慢。”

    “算什么?”

    “仿真。一个与非门单元,跑一遍仿真,可能要几分钟。四百多个单元,每个跑一遍,就是几十个小时。这还只是一个版本。工程师改一版,又要重新跑。”

    陈教授放下铅笔,靠在椅背上:“你是说吞吐率?高吞吐?”

    “对。”吕辰说,“不能让大家排队等着。得让机器同时跑多个仿真,A工程师的与非门在跑,B工程师的或非门也在跑,互不干扰。这就是您刚才说的并发,但不是‘数据并发’,是‘计算并发’,多个人同时用,机器不能闲下来。”

    陈教授想了想:“这个问题,比前两个复杂。前两个是‘怎么存’‘怎么查’,这个是‘怎么调度’。多个任务同时提交,谁先算、谁后算、怎么分配算力。如果机器够多,还可以并行算,一个任务拆成几块,几台机器同时算,算完了再拼起来。”

    他在纸上画了一个任务队列的图。

    “这个在数学上叫调度算法。我们要的是单位时间内处理的任务尽可能多。但不是越多越好,还要考虑每个任务的等待时间。这就是权衡。”

    吕辰最后说:“还有一个问题,也是最头疼的。”

    陈教授看着他。

    吕辰说:“集成电路设计,不是一个人干的活。有人画版图,有人跑仿真,有人做测试。版图画好了,仿真模型要跟着改;仿真模型改了,测试向量也要跟着改。这些数据是连着的,这边改了,那边不知道,就乱了。”

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

    “对。”吕辰说,“版图、仿真模型、测试向量,是同一个单元的不同侧面。它们应该是一体的,改版图的时候,系统应该提醒仿真模型可能也要改;跑仿真的时候,系统应该自动用最新的版图数据。不能这边改完了,那边还在用旧的。”

    陈教授沉默了一会儿,站起来走到书架前,抽出一本书翻了翻,又放回去。

    他转过身,看着吕辰:“你这个问题,比前面几个都深。前面是‘怎么存’‘怎么查’‘怎么算得快’,这个是‘怎么让不同的数据保持同步’。”

    他走回来坐下,拿起铅笔,在纸上画了一个有向图,几个圆圈,箭头从一个指向另一个。

    “这涉及到数据之间的依赖关系。A改了,B要跟着改,C也要跟着改。这种依赖关系,可以用有向图来表示。节点是数据,边是依赖关系。A指向B,表示A改了B要跟着改。”

    吕辰二人凑过去看那个图,诸葛彪道:“那计算机能不能自动知道这种依赖关系?工程师改了一个单元的版图,系统自动找出所有依赖它的仿真模型和测试向量,提示这些也要更新?”

    陈教授点点头:“理论上可以。但依赖关系要定义清楚,数据要能追踪来源和去向。这又回到数据结构的问题,数据不能孤立地存,要存它们之间的关系。这就是刚才说的模型耦合,不同模型之间怎么对齐、怎么同步、怎么保证一致性。”

    陈教授放下铅笔,靠在椅背上,看着茶几上那张画满图的纸,沉默了好一会儿。

    “诸葛、小吕,你们今天问的这几个问题,多个人同时用、查得快、算得快、数据对得上,其实是一个问题。”

    吕辰二人听着。

    陈教授说:“就是怎么把标准单元库的数据组织好,让计算机既能存、又能查、还能管住它们之间的关系。这不只是一个‘库’,这是一个‘知识系统’。就像图书馆不只是放书的地方,还是一个能查、能借、能管住书不丢、能知道谁借了哪本书的系统。”

    本小章还未完,请点击下一页继续阅读后面精彩内容!

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

    “咱们刚才讨论了‘强一致性、低延迟、高吞吐、模型耦合’,你们说的那些问题,就是这几个词的意思。”

    吕辰二人对视一眼。

    陈教授继续说:“一致性,就是多个人同时用的时候,数据不能乱。延迟,就是查东西不能等。吞吐,就是算东西不能太慢。耦合,就是不同模块的数据要能对上。”

    他看着二人,笑了笑:“你们想的问题,跟国外那些搞数据库的人想的一样。你们从用户的角度,把需求说清楚了。剩下的事,怎么实现,是我们搞数学和搞理论的事。”

    又坐了一会儿,诸葛彪站起来:“教授,那我们就不打扰了。您过年好好歇几天,年后见。”

    陈教授送他们到门口,他忽然想起什么:“你们今天说的这几个问题,每一个都是真问题,我记下来了,会在存储柜的设计中考虑进去。”

    吕辰点头:“打扰教授了。”

    陈教授摆摆手:“打扰什么?用户提需求,施工方负责落实,这样才好,那些问题,从在办公室里可想不出来,还得听听一线的声音。”

    二人了门,一路出了燕园。

    吕辰问道:“诸葛师兄,这个放心了吧?”

    诸葛彪点点头:“放心了,陈教授太厉害了,我现在好后悔,当时为什么不学数学。”

    吕辰笑道:“得了吧,数学这碗饭,你确定啃得动?”

    诸葛彪不服道:“怎么啃不动?咱可以啃简单的!”

    吕辰打击道:“你不学数学,见他如井中蛙观天上月,你要是学了数学,见他如蜉蝣见青天。”

    诸葛彪哈哈笑了起来:“你敢说我是蜉蝣?”

    吕辰继续打击道:“严格来说,你不算蜉蝣,你是井中蛙!”

    雪地上,两行脚印歪歪扭扭地延伸向前方。