内存数据管理(第2版)
《内存数据管理(第2版)》
基本信息
原书名: In-Memory Data Management:Technology and Applications,Second Edition
原出版社: Springer; 2nd ed. 2012 edition
作者: (德)哈索 亚历山大.蔡尔
译者: SAP
出版社:清华大学出版社
ISBN:9787302292562
上架时间:2012-8-9
出版日期:2012 年8月
开本:16开
页码:291
版次:1-1
所属分类: 计算机 > 数据库 > 数据库存储与管理
更多关于 》》》《内存数据管理(第2版)》
内容简介
书籍
计算机书籍
试想您住在美国的一个大城市里。现在,想象一下每次您需要一杯水时,您不是去厨房取,而是需要先开车到机场,接着坐上飞机飞到德国,然后在那拿起一杯水。从现代CPU 的角度来看,访问内存数据就如同从厨房取一杯水。而访问计算机硬盘中的数据就好比飞到德国去取一杯水。在过去,主存的成本高昂,于是必须飞到德国去取水。然而,过去几年,主存每 MB 的成本显著降低,最终使得从厨房取一杯水成为有成本效益且更加便利的选择。
这种访问时间上的巨大差别对于企业级应用有重大影响。在过去由于花费时间过长而未曾考虑过的事情现在已经成为可能,这有助于企业将之前以臆测和猜测为主的工作转变为切实的洞察力。
本书中所述的内存计算革命不仅仅是指将数据存储于内存中,以便更快地进行访问。我们还阐述了 IT 行业其他两大趋势的融合:(a)多核CPU 的出现以及软件并行化的必要性(b) DRAM 访问延迟造成的阻塞,要求软件巧妙地平衡CPU和内存活动;需要利用以上两点以真正挖掘潜在性能优势。我们介绍的内存数据管理愿景的另一个重要方面是,底层数据库中数据存储方式的变化。正如下面的章节所述,这与我们所关注的企业级应用的关系尤为密切。内存数据管理的作用就在于将所有这些联系在一起。
内存数据管理与列存储相结合
我们的经验表明,许多企业级应用利用数据库的方式相似。在执行期间,他们处理大量数据行,但最为关键的是,只有表中的一小部分数据列可能会对某项特定查询有用。本书中所述的列存储模型允许仅读取所需列,而表中其余部分则可以忽略。传统的行优先模型则不同,必须访问表中的所有列,即便是对结果来说不必要的列也在访问范围之内。
列存储模型也意味着将给定列中的元素存储在一起。而在行优先模型中,给定列中的数据与行中的其他数据存储在一起,因而企业级应用常见的聚集操作在列存储模型中的速度要比在行优先模型中快得多。
多核和多台计算机上并行化的实现
单个 CPU内核的速度不会再快些,而 CPU 内核的数量却仍有望每 18 个月翻一番。因此利用多核 CPU 的并行处理能力对未来的软件开发至关重要。正如之前所述,内存列存储将给定列中的数据一起存储在内存中,从而便于分配一个或多个内核来处理单列。这称为垂直分片。
同时,也可将表分成数据行集合,然后再分配至不同的处理器,这一过程称为水平分片。水平分片在数据量持续增加时尤为重要,且在数据仓库应用程序的并行化中取得了部分成功。不但在单个多核计算机上,而且在群集或数据中心中的多台计算机上均可应用这两类方法。
利用压缩技术提高性能并节省空间
数据压缩技术利用数据冗余性和有关数据领域的知识。压缩尤其适合于企业数据管理场景中的列存储,因为同一列中的所有数据(a)具有相同的数据类型(b)在很多情况下,有很少数量的唯一值,比如在国家列或状态列中。在列存储中使用压缩技术有两个原因:节省空间和提高性能。
空间的有效利用对于内存数据管理尤为重要,这是因为,即使主存成本已大幅下降,然而与磁盘相比,它相对而言依然更加昂贵。由于在列中进行了压缩,因此与空间消耗相关的信息密度得到了提高。这样一来,每次便可加载更多的相关信息,从而提高了性能。与行存储相比,它需要的加载操作更少。因为在行存储中,对于查询来说不相关的列也被加载,但却没有被利用。
结论
内存数据管理不仅仅是一项技术,也是软件开发的另一种思路。我们必须考虑基础硬件因素,比如到主存或磁盘的访问时间以及通过多核 CPU 可能实现的并行化。考虑到新硬件环境,我们必须编写能直接的充分利用它的软件。从积极的角度来看,对于企业级应用开发人员,本书为针对所有这些问题的数据库层的开发奠定了技术基础。然而从消极的角度来看,数据库本身并不能解决所有问题。开发人员一定要了解底层的软件和硬件知识,以便充分利用潜在的性能优势。本书旨在帮助建立这方面的理解。
目录
第一部分企业级应用的转折点
第 1 章 可取性、适用性、可行性——内存计算技术的影响
1.1 实时信息——随时随地获取任何信息
1.1.1 思想速度般的响应
1.1.2 实时分析和动态计算
1.2 最新硬件趋势的影响
1.2.1 企业级应用的数据库管理系统
1.2.2 主存是新磁盘
1.2.3 从最大化 cpu 速度到多核处理器
1.2.4 增加的 cpu 和主存之间的带宽
1.3 通过内存数据管理降低成本
1.3.1 总体拥有成本
1.3.2 企业系统中的成本因素
1.3.3 内存计算的性能促进成本降低
1.4 结论
第 2 章 企业级应用为何如此繁杂零乱
2.1 当前的企业级应用
2.2 企业级应用范例
2.3 企业级应用架构
2.4 企业级应用中的数据处理
2.5 企业级应用中的数据访问模式
2.6 结论
第 3 章 sanssoucidb——企业内存数据库系统的未来蓝图
3.1 重点关注多核和主存
3.2 内存数据库系统设计
3.3 sanssoucidb中数据的组织与访问
3.4 结论
第二部分 sanssoucidb:通过内存计算技术提供单一数据源
第 4 章 sanssoucidb 的技术基础
4.1 了解内存层次结构
4.1.1 主存简介
4.1.2 主存层次结构的组织结构
4.1.3 内存层次结构的趋势
4.1.4 从程序员的角度看待内存
4.2 使用多核和跨服务器进行并行数据处理
4.2.1 通过添加资源增加容量
4.2.2 并行系统架构
4.2.3 企业级应用数据库的并行化
4.2.4 sanssoucidb 中的并行数据处理
4.3 通过压缩提高速度和减少内存消耗
4.3.1 轻量级压缩
4.3.2 重量级压缩
4.3.3 数据相关的优化
4.3.4 压缩感知的查询执行
4.35 真实数据的压缩分析
44 列优先、行优先、混合方式——优化数据布局
4.4.1 垂直分区
4.4.2 寻找最佳布局
4.4.3 混合型数据库面临的挑战
4.4.4 应用情景
4.5 虚拟化的影响
4.5.1 分析型工作负载的虚拟化
4.5.2 数据模型和基准测试环境
4.5.3 虚拟执行与本地执行
4.5.4 使用并行虚拟机减少响应时间
4.6 技术概念汇总
4.7. 结论
第 5 章 sanssoucidb 中数据的组织与访问
5.1 用于访问内存数据的 sql
5.1.1 sql 的角色
5.1.2 查询的生命周期
5.1.3 存储过程
5.1.4 数据组织和索引
5.1.5 任何属性均可作为索引
5.2 凭借数据老化提高性能
5.2.1 主动和被动数据
5.2.2 老化过程在实现上的考虑
5.2.3 销售线索水平分区的用例.
5.3 高效检索业务对象
531 从数据库中检索业务数据
532 对象数据指南
5.4高效执行业务函数
5.4.1区分业务函数与应用程序函数
5.4.2比较业务函数
5.5 处理读优化数据库中的数据更改
5.5.1 对 sanssoucidb 的影响
5.5.2 合并过程
5.5.3 通过单列合并提高性能
5.6 只添加、不删除,保持历史记录的完整性
5.6.1 “只插入”实施策略
5.6.2 通过“只插入”操作最小化锁定
5.6.3 对企业级应用的影响
5.6.4