china-pub  
您的位置:china-pub网上书店 > 计算机 > 内存数据管理(第2版)

内存数据管理(第2版)

  试想您住在美国的一个大城市里。现在,想象一下每次您需要一杯水时,您不是去厨房取,而是需要先开车到机场,接着坐上飞机飞到德国,然后在那拿起一杯水。从现代CPU 的角度来看,访问内存数据就如同从厨房取一杯水。而访问计算机硬盘中的数据就好比飞到德国去取一杯水。在过去,主存的成本高昂,于是必须飞到德国去取水。然而,过去几年,主存每 MB 的成本显著降低,最终使得从厨房取一杯水成为有成本效益且更加便利的选择。
  这种访问时间上的巨大差别对于企业级应用有重大影响。在过去由于花费时间过长而未曾考虑过的事情现在已经成为可能,这有助于企业将之前以臆测和猜测为主的工作转变为切实的洞察力。
  本图书中所述的内存计算革命不仅仅是指将数据存储于内存中,以便更快地进行访问。我们还阐述了 IT 行业其他两大趋势的融合:(a)多核CPU 的出现以及软件并行化的必要性(b) DRAM 访问延迟造成的阻塞,要求软件巧妙地平衡CPU和内存活动;需要利用以上两点以真正挖掘潜在性能优势。我们介绍的内存数据管理愿景的另一个重要方面是,底层数据库中数据存储方式的变化。正如下面的章节所述,这与我们所关注的企业级应用的关系尤为密切书籍。内存数据管理的作用就在于将所有这些联系在一起。
  
  内存数据管理与列存储相结合
  
  我们的经验表明,许多企业级应用利用数据库的方式相似。在执行期间,他们处理大量数据行,但最为关键的是,只有表中的一小部分数据列可能会对某项特定查询有用。本书中所述的列存储模型允许仅读取所需列,而表中其余部分则可以忽略。传统的行优先模型则不同,必须访问表中的所有列,即便是对结果来说不必要的列也在访问范围之内。
  列存储模型也意味着将给定列中的元素存储在一起。而在行优先模型中,给定列中的数据与行中的其他数据存储在一起,因而企业级应用常见的聚集操作在列存储模型中的速度要比在行优先模型中快得多。 畅销书
  
  多核和多台计算机上并行化的实现
  
  单个 CPU内核的速度不会再快些,而 CPU 内核的数量却仍有望每 18 个月翻一番。因此利用多核 CPU 的并行处理能力对未来的软件开发至关重要。正如之前所述,内存列存储将给定列中的数据一起存储在内存中,从而便于分配一个或多个内核来处理单列。这称为垂直分片。
  同时,也可将表分成数据行集合,然后再分配至不同的处理器,这一过程称为水平分片。水平分片在数据量持续增加时尤为重要,且在数据仓库应用程序的并行化中取得了部分成功。不但在单个多核计算机上,而且在群集或数据中心中的多台计算机上均可应用这两类方法。
  
  利用压缩技术提高性能并节省空间
  
  数据压缩技术利用数据冗余性和有关数据领域的知识。压缩尤其适合于企业数据管理场景中的列存储,因为同一列中的所有数据(a)具有相同的数据类型(b)在很多情况下,有很少数量的唯一值,比如在国家列或状态列中。在列存储中使用压缩技术有两个原因:节省空间和提高性能。
  空间的有效利用对于内存数据管理尤为重要,这是因为,即使主存成本已大幅下降,然而与磁盘相比,它相对而言依然更加昂贵。由于在列中进行了压缩,因此与空间消耗相关的信息密度得到了提高。这样一来,每次便可加载更多的相关信息,从而提高了性能。与行存储相比,它需要的加载操作更少。因为在行存储中,对于查询来说不相关的列也被加载,但却没有被利用。
  
  结论
.  
  内存数据管理不仅仅是一项技术,也是软件开发的另一种思路。我们必须考虑基础硬件因素,比如到主存或磁盘的访问时间以及通过多核 CPU 可能实现的并行化。考虑到新硬件环境,我们必须编写能直接的充分利用它的软件。从积极的角度来看,对于企业级应用开发人员,本书为针对所有这些问题的数据库层的开发奠定了技术基础。然而从消极的角度来看,数据库本身并不能解决所有问题。开发人员一定要了解底层的软件和硬件知识,以便充分利用潜在的性能优势。本书旨在帮助建立这方面的理解。
  网上书店有售。
分享到:
上一篇:QTP自动化测试最佳实践
下一篇:实战android应用开发

推荐图书频道