他在纸上画了一个树状图。
“你看,单元库是一个‘根’,每个单元是一个‘分支’,每个单元的属性是‘叶子’。这种结构,在数学上叫树。计算机要存这些数据,就需要一种能表示‘树’的数据结构。”
吕辰插了一句嘴:“陈老师,您这么一说,我倒想起一个东西,图书馆。”
陈教授愣了一下:“图书馆?”
“对。”吕辰指着那个树状图,“图书馆里几万本书,是怎么找到想要的那本的?先查卡片目录,找到索书号,再去书架上找。卡片目录就是索引,按书名查、按作者查、按分类查。书架就是存书的地方,索书号告诉你去哪个书架拿。”
陈教授眼睛亮了。
吕辰继续说:“标准单元库,不就是一个‘图书馆’吗?每个单元是一本书,单元型号是索书号,功能分类是分类法。工程师要查一个与非门的参数,就像读者要找一本拓扑学的书,先查索引,找到位置,再去取数据。”
陈教授哈哈大笑:“你这个比方,打得太准了!图书馆的分类法、索引、目录,就是一套数据管理系统。几百年前就有了,只不过管的是书,不是单元库。”
他在纸上又画了一个图,这次是图书馆卡片目录的示意图。
“图书馆的卡片目录,按书名排、按作者排、按分类排。标准单元库,也应该有按型号查、按功能查、按参数查的索引。这就是数据结构里的‘多级索引’,树结构、哈希表,都是为了让计算机不用扫遍所有数据就能找到目标。”
诸葛彪听明白了:“所以,单元库的数据结构,不是一个简单的存起来,是得像图书馆一样,有分类、有索引、有目录?”
“对。”陈教授说,“你这个问题,不是存储问题,是数据结构问题。数据怎么组织,决定了计算机怎么访问、怎么查询、怎么修改。如果组织得不好,数据越多,越难用。”
陈教授靠在椅背上:“图书馆除了放书,还要管借书、还书、谁借了哪本书、什么时候还……”
“这就是数据之间的关系。书和读者之间、读者和借阅日期之间、书和书架位置之间,这些关系,比书本身还重要。标准单元库,也是一样。光把单元存进去不够,还要管谁在用、谁在改、什么时候改的、新版本和旧版本什么关系。”
他拿起铅笔:“怎么存、怎么查、怎么管关系,合在一起,就叫数据库。这不是我发明的词,国外已经在搞了。IBM给阿波罗计划做了一套系统,专门管数据。叫IMS,Information Management System。就是用来管大型项目的数据的。”
IMS,IBM为阿波罗计划开发的,世界上第一个真正的数据库管理系统。
陈教授居然知道这个。
“标准单元库,四百多个单元,几十个参数,还不断在改、在加、在被不同的人用,这就是一个小型的IMS。需要一套数据管理系统,能存、能查、能改、能管版本、能管谁在用。”
他放下铅笔,看着二人:“这个问题,比造一台计算机还难。计算机是算数的,这个是管事的。算数有公式,管事没有。得自己琢磨。”
诸葛彪低头翻了翻本子:“教授,还有一个问题,跟这个连着。以后分布式系统搭起来了,好几台机器共用一个存储柜。在具体使用过程中,会出现A工程师在改一个与非门的版图,B工程师同时在跑这个与非门的仿真。”
陈教授看着他。
诸葛彪继续说:“A改了一半,B跑出来的结果是旧的还是新的?A改完了,B不知道;B跑完了,A还没改完。最后谁的数据算数?”
陈教授皱起眉头。他拿起铅笔,在纸上画了一个简图。
“你是说——并发控制?”
“我就是这个意思。”诸葛彪说,“多个用户同时访问同一份数据,怎么保证每个人看到的是正确的、最新的?”
陈教授想了想:“银行里存钱取钱,两个人同时操作一个账户,也会出问题。银行的解决办法是加锁,一个人在改,别人只能看不能动。或者做日志,谁最后改的算谁的。”
他在纸上写了几个字:锁、日志、版本。
“你说的情况更复杂。工程师不光是在改数据,还在跑计算。跑一个仿真可能要几分钟,这段时间里别人能不能看?能不能改?如果允许别人看,看到的是中间状态还是旧状态?如果允许别人改,改完了仿真结果还算不算数?”
诸葛彪点头:“就是这个意思。我就是担心,系统设计的时候不考虑这些,到时候用起来全是麻烦。”
陈教授在纸上又写了一个词:事务。
“这个问题,国外也在研究。把一组操作打包成一个‘事务’,要么全做完,要么全不做。中间状态别人看不到。做完了再告诉别人‘我改完了’。这就是‘强一致性’,任何时候,每个人看到的数据都是一致的,不会出现‘A看到新的、B看到旧的’这种乱子。”
这章没有结束,请点击下一页继续阅读!
喜欢四合院:我是雨水表哥请大家收藏:(m.20xs.org)四合院:我是雨水表哥20小说网更新速度全网最快。