HANA system通过唯一的SID标识,HANA中可以有多个相关的数据库(与oracle的数据库实例类似)。
每个数据库包含多个servers,例如index server、name server etc。
HANA system 可以是单节点或者是多节点。
在 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等数据库对象可以跨数据库访问
一个数据库包含多个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,这些后面章节会有详细介绍。
为了扩展性和可用性(scalability and availability),HANA可以在多台主机之间做成分布式系统。multiple-host就是HANA安装在多台主机上安装,否则就是single-host system。
安装分布式系统的主要原因就是它的可扩展性。分布式系统能够克服单台主机的硬件配置的限制,它可以在多台主机之间分发请求。
Multiple-Host (Distributed) Systems也只能有一个SID,对于管理员来说就感觉像是一个整体。例如HANA系统的安装,更新,启动,关闭,你会感觉到HANA的分布式系统是一个整体。
不同的database之间分享相同的元数据(metadata)和请求(request)
系统数据库是在安装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里面),但不保存租户数据库实实在在的数据