长期以来,我们一直都会说XXX文件系统支持随机读写,XXX数据结构或XXX开源项目支持随机访问,这种称为随机XX的叫法,其实是一种错误的说法,如果你是一位真正了解"随机读写或随机访问"的人,可能并不是太会在意这种说法,但是对于一些刚入行,或入行不久的朋友们来说,这种叫法会常常使我们感到十分迷惑和不解,按照我们汉语的方式理解,随机访问是指具有不确定性的访问,意思就是可能一会访问这里,又可能一会访问那里,而随机读写是指,随机的找一个位置,进行读取或写入数据。如果我们要是按照这样的意思理解它,那我们完全就被这种根深蒂固的叫法给误导了。
到底什么才是真正的“随机读写”和“随机访问”。首先,这个东西就是我们计算机的内存条,或者用我们工程师的专业术语称为RAM,散仙不知道有多少朋友知道RAM的非缩写的全称,就像很多人知道CTO是技术总监,但是并不知道每个缩写代表着那个单词一样,不过没关系,这不是本文的重点。RAM的全称是Random Access Memory,而事实上“随机访问”就是由Random Access两个单词翻译来的,而Random在英语里不仅仅有随机的意思,还有任意的意思,如果能这样理解Random,那我们就可以更好的理解Random Access了,而Random Access真正翻译过来应该是叫做任意访问,而不是随机访问。
内存是可以自由的访问,任意一个存储点的,这一点与磁盘,磁带等需要寻道,倒带才可以访问到指定存储点等存储器是不一样的,正因为磁盘访问需要计算微乎其微的寻道时间以及IO的开销,所以我们会发现存储在内存的东西的访问速度,比磁盘要快很多。[/size][/color][/b]
而正是恰恰由于这个寻道的原因,所以用过Hadoop的朋友们都知道HDFS默认存储的block都是64M存储的,为什么要设计的这么大,很大一部分原因就是为了减少读取时拼接块的寻道时间。
到此处,我们已经可以真正的理解所谓的“随机读写”和“随机访问”是指其支持任意一个位置的读和写以及访问,而不是像我们汉语理解的随机一个位置的读和写。或许我们理解成“随便读写”和“随便访问”都比理解成“随机访问”和“随机读写”要准确的多,当然它最准确的叫法,还是叫做“任意读写”和“任意访问”。