走出误区之解惑,何谓“随机访问”? 何谓“随机读写”?
程序员文章站
2022-05-25 10:10:46
...
长期以来,我们一直都会说XXX文件系统支持随机读写,XXX数据结构或XXX开源项目支持随机访问,这种称为随机XX的叫法,其实是一种错误的说法,如果你是一位真正了解"随机读写或随机访问"的人,可能并不是太会在意这种说法,但是对于一些刚入行,或入行不久的朋友们来说,这种叫法会常常使我们感到十分迷惑和不解,按照我们汉语的方式理解,随机访问是指具有不确定性的访问,意思就是可能一会访问这里,又可能一会访问那里,而随机读写是指,随机的找一个位置,进行读取或写入数据。如果我们要是按照这样的意思理解它,那我们完全就被这种根深蒂固的叫法给误导了。
接下来散仙要冒天下之大不韪,来详细的解惑下,到底什么才是真正的“随机读写”和“随机访问”。首先,散仙要拿我们生活中都很熟悉的一个东西,来作为解惑的开端,这个东西就是我们计算机的内存条,或者用我们工程师的专业术语称为RAM,散仙不知道有多少朋友知道RAM的非缩写的全称,就像很多人知道CTO是技术总监,但是并不知道每个缩写代表着那个单词一样,不过没关系,这不是本文的重点。RAM的全称是Random Access Memory,而事实上“随机访问”就是由Random Access两个单词翻译来的,而Random在英语里不仅仅有随机的意思,还有任意的意思,如果能这样理解Random,那我们就可以更好的理解Random Access了,而Random Access真正翻译过来应该是叫做任意访问,而不是随机访问。
内存是可以*的访问,任意一个存储点的,这一点与磁盘,磁带等需要寻道,倒带才可以访问到指定存储点等存储器是不一样的,正因为磁盘访问需要计算微乎其微的寻道时间以及IO的开销,所以我们会发现存储在内存的东西的访问速度,比磁盘要快很多。
而正是恰恰由于这个寻道的原因,所以用过Hadoop的朋友们都知道HDFS默认存储的block都是64M存储的,为什么要设计的这么大,很大一部分原因就是为了减少读取时拼接块的寻道时间。
到此处,我们已经可以真正的理解所谓的“随机读写”和“随机访问”是指其支持任意一个位置的读和写以及访问,而不是像我们汉语理解的随机一个位置的读和写。或许我们理解成“随便读写”和“随便访问”都比理解成“随机访问”和“随机读写”要准确的多,当然它最准确的叫法,还是叫做“任意读写”和“任意访问”。
说了这么多,散仙并不是在这里咬文嚼字,也不是想改变大家的叫法,而只是想提示一下大家,由于一些技术文章翻译的质量实在是不堪入目,于是造成了很多读者可能被误解,导致给他人讲解的时候形成不良循环,所以建议大家要么直接看国外原版的技术书籍,要么就直接看国内的技术书籍。
接下来散仙要冒天下之大不韪,来详细的解惑下,到底什么才是真正的“随机读写”和“随机访问”。首先,散仙要拿我们生活中都很熟悉的一个东西,来作为解惑的开端,这个东西就是我们计算机的内存条,或者用我们工程师的专业术语称为RAM,散仙不知道有多少朋友知道RAM的非缩写的全称,就像很多人知道CTO是技术总监,但是并不知道每个缩写代表着那个单词一样,不过没关系,这不是本文的重点。RAM的全称是Random Access Memory,而事实上“随机访问”就是由Random Access两个单词翻译来的,而Random在英语里不仅仅有随机的意思,还有任意的意思,如果能这样理解Random,那我们就可以更好的理解Random Access了,而Random Access真正翻译过来应该是叫做任意访问,而不是随机访问。
内存是可以*的访问,任意一个存储点的,这一点与磁盘,磁带等需要寻道,倒带才可以访问到指定存储点等存储器是不一样的,正因为磁盘访问需要计算微乎其微的寻道时间以及IO的开销,所以我们会发现存储在内存的东西的访问速度,比磁盘要快很多。
而正是恰恰由于这个寻道的原因,所以用过Hadoop的朋友们都知道HDFS默认存储的block都是64M存储的,为什么要设计的这么大,很大一部分原因就是为了减少读取时拼接块的寻道时间。
到此处,我们已经可以真正的理解所谓的“随机读写”和“随机访问”是指其支持任意一个位置的读和写以及访问,而不是像我们汉语理解的随机一个位置的读和写。或许我们理解成“随便读写”和“随便访问”都比理解成“随机访问”和“随机读写”要准确的多,当然它最准确的叫法,还是叫做“任意读写”和“任意访问”。
说了这么多,散仙并不是在这里咬文嚼字,也不是想改变大家的叫法,而只是想提示一下大家,由于一些技术文章翻译的质量实在是不堪入目,于是造成了很多读者可能被误解,导致给他人讲解的时候形成不良循环,所以建议大家要么直接看国外原版的技术书籍,要么就直接看国内的技术书籍。