数据本地化的实质是软件工程师们要充分尊重和理解底层硬件的限制,并且用各种手段规避问题最大化利用手里的硬件资源。本地化有很多种形态。 最常见的最好理解的本地化问题是网络问题。我们都知道网络带宽不是无限的,比本地磁盘慢多了。如果可能尽量不要通过网络去访问数据。即便要访问,也应该一次抓取多一些数据,而不是一次搞一点,然后搞很多次。因为网络连接和来回的开销是非常高的。这就是 data locality 的问题。我们要把计算尽可能的靠近数据,减少网络上传输的数据量。 这种带宽引起的本地化问题,还有很多。网络比硬盘慢,硬盘比内存慢,内存比L2缓存慢。做到极致的数据库可以让计算完全发生在 L2 缓存内,尽可能地避免频繁地在内存和L2之间倒腾数据。 另外一种形态的问题是磁盘的顺序读和随机读。当数据彼此靠近地物理存放在磁盘上的时候,顺序读取一批是非常快的。如果需要随机读取多个不连续的硬盘位置,磁头就要来回移动从而使得读取速度快速下降。即便是 SSD 硬盘,顺序读也是要比随机读快的。
更多干货分享、行业资讯、可视化视频教学,微信号: 大数据魔镜(TheMagicMirror613 ) 还有更多大礼!好礼送不停!
|