关于计算机的一些反直觉现象


[TOC]

背景

最近想写一些简单的非技术文章,希望能给其他行业的说明白计算机所能和所不能,方便大家用好计算机这个工具。

为什么数据都有了,但是不让我查询和统计?

思考:

如果计算机记录了每个用户读了哪本书,那么是不是也很容易知道一本书被哪些用户读过?

你可能会觉得理所当然。

但是,答案其实是 No。关键在于索引,什么是索引呢,举个例子:

如果我要在字典里取找“李”这个字,常见的办法是在字典目录里先找“木”字头的所有字,假如找出100个,再到这些字里找到“李”。

反过来,我能不能先找“子”为底的所有字,再从中找“李”呢?

想法是好的,但现实是,没有哪本字典能提供这样的功能。

之所以我们能先找“木”字头而不能先找“子”字底,是因为字典帮我们提供了一份“木”字头的目录而没有提供后者的目录。

这个目录,在计算机里就称作“索引”(Index)。

我们一般会说,字典为“木”字头建立了索引,但是没有为“子”字底建立索引。如果我们也为“子”建立一份索引,就可以反过来查到“李”字了。顺便,我们也可以在索引里面直接数出“子”字底的字有多少个。

回到思考题,我们知道用户读过的书,但却不能统计一本书的阅读用户。你就大概猜到了,记录每个用户读了哪些书,潜台词就是我在“用户”维度建立了索引,但是却不一定也给“书”的维度建立了索引。

再举个例子加深你的理解

如果你在大街上随便问一个人读过哪些书,他可以很快答出来。

但是,如果要问你大街上有哪些人读过某一本书,你可能就需要大费周折了。

这是因为,当一本书被一个人读了之后。虽然是“书”和“人”这两个主体发生了关联。但是,只有人的脑子里记录了这个关联,书店并不会记录这本书被某人读了。人脑记住的这份关联,就是索引。

Avatar
huiren
Code Artisan

问渠那得清如许,为有源头活水来

下一页
上一页
comments powered by Disqus