一、SAP HANA System Architecture
SAP HANA System Architecture Overview
HANA system通过唯一的SID标识,HANA中可以有多个相关的数据库(与oracle的数据库实例类似)。
每个数据库包含多个servers,例如index server、name server etc。
HANA system 可以是单节点或者是多节点。
1.1 Tenant Databases(租户数据库)
在 HANA system 里面可以存在多个单独的数据库,他们被称之为租户数据库(tenant database)。
HANA system 存在一个系统数据库(system database)和多个租户数据库(租户数据库数量可以为0)。
HANA system通过SID标识,tenant database通过SID和数据库名称标识。
所有的database共享同样的数据库系统软件,系统资源。
每个数据库都单独拥有:
- Set of database users 数据库用户
- Database catalog 数据库资源
- Repository 资源库
- Persistence 持久层
- Backups 备份
- Traces and logs 跟踪和日志
尽管如此,schemas, tables, views, procedures等数据库对象可以跨数据库访问
1.2 Server Architecture of Tenant Database Systems(租户数据库系统架构)
一个数据库包含多个server,例如 name server,index server,preprocessor server等等,HANA databse 运行着不同的server组合。其中最重要的是index server,它在每个租户数据库上都单独存在,区别于其他租户数据库(每个租户数据库都有一个index server,占用不同的端口),它用来存储数据和处理数据。
只有system database运行name server。name server 包含整个HANA system的一些信息,例如存在哪些租户数据库。name server 还为system database提供一些index server 的功能。name server在租户数据库中不存拓扑结构信息,换句话说,就是不存表位置和表分区等信息,这些信息都保存在租户数据库的catalog中。
租户数据库只需要一个自己的index server。其他不保存数据的服务,像complie server ,preprocessor server运行在system database里面,为其他所有租户数据库服务。下面是一个单节点HANA system例子,其中包含三个数据库(1个system database,两个tenant databse)
Note:
在tenant database中xs classic service 默认是内嵌在index server中的,如果需要,可以添加一个单独的xs service。
SAP Web Dispatcher 在system database中是一个独立的数据库服务,它用来调度进来的HTTP请求,将他们转到正确的xs classic server上面。
除了系统内部的internal web dispatcher,你还可以添加external web dispatcher,这些后面章节会有详细介绍。
1.3 Multiple-Host (Distributed) Systems(多结点分布式系统)
为了扩展性和可用性(scalability and availability),HANA可以在多台主机之间做成分布式系统。multiple-host就是HANA安装在多台主机上安装,否则就是single-host system。
安装分布式系统的主要原因就是它的可扩展性。分布式系统能够克服单台主机的硬件配置的限制,它可以在多台主机之间分发请求。
Multiple-Host (Distributed) Systems也只能有一个SID,对于管理员来说就感觉像是一个整体。例如HANA系统的安装,更新,启动,关闭,你会感觉到HANA的分布式系统是一个整体。
不同的database之间分享相同的元数据(metadata)和请求(request)
1.3.1Scale-Out Architecture of Tenant Databases(租户数据库在分布式系统中的架构)
- 能够将租户数据库分布在多个节点上
- 当一个租户数据库超过了一个单节点的最大限度(假设单节点主机上限是2T,目前数据库大小需要2T以上),这个时候就需要考虑scale-out。当然还有其他一些原因,比如一个大型的BW系统,在它的sizing规则里面就要求一个scale-out的配置
- 一般情况下,多个租户数据库都放在相同的节点上。当为了最大限度的使用主节点的资源(由于性能原因),建议避免将其他租户数据库放在主节点上。下面的部署方式会提供性能优势
- Host 1: Master for tenant database 1
- Host 2: Worker for tenant database 1 and worker for tenant database 2
- Host 3: Master for tenant database 2
- Host 4: Standby host for failover
- 如果分布式的HANA是sizing的要求,建议谨慎部署额外的租户数据库在同一台主机上,原因是这样的,由于在分布式场景中的工作负载不稳定且不可预测,因此为了维持预期的性能,需要将最大的资源提供给租户数据库
1.4 The System Database(系统数据库)
系统数据库是在安装HANA的时候创建,或者是在从single-container system向tenant database system转换的时候会创建。系统数据库被作为中央管理系统,它包含整个系统的所有信息,包括租户数据库的信息,但是它没有数据库相关的拓扑信息,换句话说,就是没有表的位置信息和表分区信息。数据库相关的拓扑信息保存在相关的租户数据库的catalog中。
系统数据库有且只有一个,系统管理员工具(例如SAP HANA cockpit,SAP HANA studio)能够连上这个数据库。
系统数据库保存着整个系统的landscape信息。
关于系统数据库需要记住的:
- 系统数据库对sql不完全支持(由于系统数据库里面没有index server,name server为系统数据库提供一些index server的功能)
- 系统数据库不能在多节点上分布,换句话说,系统数据库不能进行scale-out(所有节点上都存在完整的系统数据库)
- 如果你需要一个全功能(full-featured)的数据库,你至少需要创建一个租户数据库
- 系统数据库能展现从租户数据库监测到的数据(在schema SYS_DATABASES 的view里面),但不保存租户数据库实实在在的数据
1.5 Administration of Tenant Databass (租户数据库的管理)
- 启动和关闭整个HANA系统
- 系统监控
- 配置系统层面的configuration (*ini) files
- 创建和配置租户数据库
- 备份和恢复租户数据库
- 监控数据库
- 配置数据库用户
- 创建和删除schemas, tables, and indexes
- 备份数据库
- 在configuration (*ini) files配置数据库参数