SAP HANA™ 数据库–基础入门指南–如何使用SQL和SQLScript数据建模
2017年10月版
1.简介
1.1什么是SAP HANA
1.2相关文档
2.SAP HANA数据库概念
2.1 基本概念
2.1.1 现代化硬件对数据库系统架构的影响
2.1.2 基于列式和行式的存储
2.1.3 列式表的优势
2.2 架构概览
2.3 SAP HANA数据库概念:表,模型和视图处理
2.3.1 表,试图和星型结构
2.3.2 SAP HANA模型视图
2.3.3 SAP HANA视图处理
3. 教程
3.1 使用SAP HANA studio
3.2 如何使用SAP HANA modeler
3.2.1 如何建立分析试图
3.2.2 查看表
3.2.3 建立分析试图
3.2.4 MANDT属性
3.2.5 过滤器的应用
3.2.6 创建属性试图
3.2.7 创建简单的星型架构
3.2.8计算属性
数据库简单吗
3.2.9 多语种属性视图(文本视图)
3.2.10 图形化计算视图
3.2.11 如何创建脚本计算视图
3.3 使用SAP HANA studio执行SQL和SQLScript 语句3.4 如何显示查询计划
3.4.1 查询计划中的列
3.4.2 查询计划中的OPERATOR_NAME列
3.5 使用jdbc驱动
3.5.1 安装驱动
3.5.2 系统必备
3.5.3 jdbc驱动的整合
3.5.4 加载jdbc驱动
3.5.5 连接地址
3.5.6 jdbc
4.0标准扩展api
3.5.7 jdbc跟踪记录
3.5.8 匹配SQL和java类型
4. 最佳实践
4.1 列式存储引擎的特点
4.2 SQL查询代价的估算
4.2.1 行式搜索代价模型
4.2.2 列式搜索代价模型
4.3 SQL查询列引擎的优化技巧
4.3.1 表达式
4.3.2 联接
4.3.3 EXISTS / IN运算符
4.3.4 set操作
4.4 SQLScript推荐实践
4.4.1 减少SQL语句的复杂度
4.4.2 识别共同的子表达式
4.4.3 多层聚集
4.4.4 理解语句执行的代价
4.4.5 充分利用底层引擎
4.4.6 减少依赖性
4.4.7模拟SQL语句中的函数调用
4.4.8 避免混合使用计算引擎操作符和SQL查询
4.4.9 避免使用游标
4.4.10 避免使用动态SQL
4.4.11 跟踪和调试
免责声明
本文档为预览版本,文档中的内容均不是来自SAP AG公司发布的任何关于SAP的产品,策略,或未来
的发展的官方声明。文档中的信息可能是不完整或是不正确的。SAP公司不假设,不保证,对本文档为您的商业用途或利用它产生的任何损失不承担责任。本文档应当在您已授权SAP HANA许可下使用,并受其条款指导您使用SAP HANA。
1.简介
1.1什么是SAP HANA?
SAP HANA是由SAP带给您的一项令人兴奋的新技术。其核心利用了创新型的内存技术来存储数据,特别适合处理数据量非常大的表格型或关系型的数据,具有前所未有的性能。常见的数据库以行方式存储表格数据,例如,描述一个地址的所有数据都存储在内存中相互毗邻的位置。如果你的需求只是访问一个地址,程序会运行的很快,因为所有的数据是连续存储的。然而,试想这样的场景,你的程序需要计算有多少已储存的地址与特定的国家,城市或邮编对应?这种情况下,就可能不得不扫描整张表,选出每一行,然后检查国家或城市是否是需要的。由于所有的大容量存储设备,例如硬盘,以一种与感兴趣的数据相比很大的一整块形式访问数据,例如512字节的硬盘,很可能该设备读取一至多行的数据只是为了查几个字符,比如“巴西”或是“旧金山”。业务数据表经常含有很多偶尔使用的数据字段或列,例如和其他表相关联的数据,或者控制其他字段使用的数据字段。你能想象如果你的程序可以绕开不必要的列而访问真正需要的信息所带来的效率提升吗?
如果使用这种数据存储方式,你将会体验到数据库或程序明显更快的响应。SAP HANA通过高效的列式存储方式组织表来让你绕开读取不需要的数据。除了常见的行式存储架构之外,同样可以使用列式存储。这意味着你的程序无须等待数据库获取不需要的数据,因为列式表中的所有数据都是以相邻方式储存。因此,在我们的地址表例子中,扫描列字段“国家”或“城市”比读取行式存储快很多。
但是,如果你的数据库系统已经把所有数据缓存到内存或是靠近处理器的快速读取内存中,列式内存布局是否仍然可以加速访问?来自SAP和位于波茨坦市的哈索-普拉特纳研究所进行的测量证明,当访问每一行数据的子集时,以列方式重新组织内存中的数据可以带来显著的速度提升。由于SAP HANA把数据都缓存至内存中,硬盘几乎很少使用,只是为了数据持久化而对数据库的改变进行记录。SAP HANA为了保持数据库尽可能小的变化,采用只对原始数据库的增量变化记录的方式。数据是增加或插入到一个表列而不是就地修改,这种方式提供了很多的好处,不只是速度上的提升。由于保留了所有的旧数据,你的程序可以高效地在数据间“时空穿梭”,并提供随时间变化的数据的视图。
现代数据库系统把数据管理和数据应用分隔至两个独立的体系结构层:数据库层和数据应用层。这种分隔方式迫使数据在被分析或是修改前,不得不从数据库“漫游”到应用层,很多时候,数据量非常大。SAP HANA通过下放数据密集的应用逻辑到数据本来的地方,即数据库本身,来避免这种常见的瓶颈。为了在数据库启用这种内置的应用逻辑,SAP开发了标准SQL的扩展(结构化查询语言)名为SQLScript。SQLScript允许编程的方式使得在数据库层执行数据密集型业务,也允许你扩充SQL语句来
包含高水平的计算,从而提升了数据库的数据处理能力。
本文档阐述了如何利用SQLScript在SQL HANA数据库中实现高效的密集型数据处理。
1.2相关文档
还有其他相关文档,说明了程序员工具的细节和可以使用的编程语言,包含如下:
∙ SAP HANA Database – Administration Guide
–如何使用SAP HANA Studio以及管理SAP HANA数据库.
SAP HANA Modeling Guide
–如何利用HANA Modeler在SQLScript编程语言的基础上创建OLAP分析试图和计算试图。SAP HANA Database – SQL Reference Guide (PDF)
SAP HANA Database – SQL Reference Guide (HTML)
–SAP HANA查询语言完整参考
SAP HANA Database – SQLScript Guide
–有关如何在SAP HANA程序,包括ABAP程序中使用SQLScript和存储过程的教程。