本节书摘来自异步社区《sap入门经典(第4版•修订版)》一书中的第3章,第3.4节,作者:【美】george anderson著,更多章节内容可以访问云栖社区“异步社区”公众号查看
sap入门经典(第4版•修订版)
掌握了硬件和操作系统的知识细节之后,现在我们可以把注意力转到在下层支持sap业务应用的数据库了,看看它所承担的角色。在选择数据库时,还应像选择硬件平台和os时一样慎重挑选。鉴于平台和sap版本限制,您可能只有一两种数据库可选(这就凸显了把sap基础设施作为一个整体计算平台加以考虑的重要性)。主流的数据库sap均能支持,包括microsoft sql server(最终将可以搭配sql azure使用)、ibm db2和多种oracle数据库产品。sap自己本身也有名为maxdb的数据库,它的发展非常有意思,目前一般来说只有小型系统才会使用。sap在2010年收购了sybase,现在它已经在向原来的sybase客户宣传,它在将来的某个时间将会向基于sap-on-sybase数据库平台提供有限支持。
microsoft sql server只能运行在基于windows的操作系统上。对能运行在windows、linux和所有主要unix操作系统上的oracle,sap均能支持。db2获得的支持更广泛一些,因为它运行在ibm的传统大型机系统上。
大多数部署sap的it部门都会根据他们当前支持的平台以及自己对各种平台的经验和熟悉程度来选择数据库提供商和数据库版本。但是这可能是在犯一个代价高昂的错误,因为大量由数据库管理员(dba)来完成的传统工作在sap环境中根本就不必要。这就是说,sap会把大量管理和维护底层数据库的复杂工作“剥离”掉。因此,鉴于各种数据库具有相似的性能、可升级特性和差异巨大的定价模式,请一定要对oracle、sql server和db2予以考虑。
除了价格,还应考虑每种数据库的高可用性方案。集群、镜像和快照,或克隆能力都是重要的区别点。其他选项也很有用,比如日志传送(log shipping)就会为灾难恢复提供支持。
3.4.1 数据库基本知识
无论您选择哪种数据库,像sap这样的企业应用归根结底都是由程序和这些程序创建和使用的数据构成的,而数据库要做的就是将这些数据以一种有意义的方式组织起来,使程序能够快捷方便地访问和查找它们,从而完成需要这些数据才能完成的有用工作,例如运行财务报表或创建销售订单。对于大多数sap组件来说(如erp),程序和数据会存放在同一个数据库中。
各种组件一般都需要有自己的数据库(尽管有少数例外)。例如,由sap erp、sap netweaver企业门户(ep)和sap crm构成的“生产环境”包含有3个不同的生产数据库。在每个sap系统中,数据库都担当着重要的角色,因为sap组件和应用程序使用的所有数据都存放在数据库里。最简形式的数据库由表、列(称为字段)和行(称为记录或数据)构成。数据库的基本结构与microsoft excel这样的电子表格的概念十分相似,其中用列存放一行一行的记录(数据)。数据库与电子表格最大的区别只是数据库可以包含多张(同时也是极大的)表,而这些表通过关系相互关联。因此,数据库可以被看作是一种复杂度更高而且极其有用的电子表格。
3.4.2 表、索引和结构
sap数据库可以包含千千万万个存储着信息的表。有些产品,如erp,可以包含超过40000张表;而复杂度稍弱的系统,如sap netweaver process integration(pi)包含的表可能不到10000张。请注意,在大多数sap系统中,10%的表容纳了90%的数据,因此,某些表的体积会变得硕大无比而且变化无常,而另一些则善于保持体形,而且相对来说更加静态。但无论如何,所有这些表都是通过既定关系相互绑定在一起的。而正是这套相互连接的表创建了所谓的关系数据库管理系统(rdbms)。
除了容纳原始数据,数据库还会存储索引,索引用于帮助提高检索数据的速度。对索引的最佳描述是一个内容表,或者把它看作是缩减成了几个关键字段的一个数据库表的副本。这种缩减版副本中的数据根据一些预定义标准进行存储,以便能够快速访问数据。并非所有副本表的字段都会进入索引,而索引会包含有一个指针,指向实际表的相关记录。可能会让您大吃一惊的是,索引的体积大约会占到整个sap数据库体积的50%!
sap还使用另一种被称为透明表的概念,它是一种只在运行时刻包含数据的sap数据表。当abap/4数据字典中的表被激活时,系统会自动创建一个透明表。这种透明表与您在abap/4数据字典中的数据库表同名。它的每个字段也都与相应的数据库字段同名,但是字段的顺序可能会不同。字段顺序变化使新字段可以插入到表中,而不必对其进行转换,从而能够加快运行时刻的数据访问速度。
最后,对数据结构有所了解也非常重要。您只需记住数据结构是一组逻辑上有隶属关系的内部字段即可。数据结构要在sap abap/4数据字典中激活和定义,它们只是临时包含数据(在程序执行过程中)。数据结构与数据库表的区别主要有以下3方面。
结构不包含或反映相关的abap/4数据字典表。
结构不包含主键。
结构没有任何技术特征,例如类、大小、范畴或缓冲规格等。