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

[TOC]

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

思考:

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

你可能会觉得理所当然。

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

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

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

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

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

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

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

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

再举个例子加深你的理解

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容