了解SAP HANA租户库Ⅱ

更多内容关注公众号:SAPtechnical 

点击进入:了解SAP HANA租户库Ⅱ

从第一篇《了解SAP HANA租户库Ⅰ》的介绍中我们了解到,SAP HANA 2.0 SPS01已经把多租户作为默认选项了,单容器租户将不是默认配置,因此,如果将单个容器系统从任何较低版本升级到HANA 2.0 SPS01,系统将自动转换为多租户系统。

当安装完成后,系统进会创建SYSTEMDB。而nameserver和其他非持久性服务仅在SYSTEMDB上可用。Indexserver和其他持久性服务仅在租户数据库上可用。并且当SYSTEM DB关闭时,所有的租户库也会关闭。还有就是默认情况下不启用跨数据库访问。

 

在SAP HANA中可以创建多少个租户库呢。这里我们分析的主要限制是每个租户数据库(CPU,内存)所需的资源。 此外,在3XX99之前可用端口3XX40存在限制,因此默认情况下,每个实例最多可包含20个租户数据库。那么,如果客户方配置有足够的资源,是否可以突破20个租户库的限制呢,我们可以通过保留更多实例的端口号来增加此数量。通过配置属性global.ini - [multidb] - reserved_instance_numbers来完成此操作。此属性的默认值为0,如果将值更改为1,则可以使用另一个实例的端口号(例如,如果第一个实例为00,则为30040-30199)。如果将其更改为2,则可以使用另外两个实例的端口号(例如,如果第一个实例为00,则为30040-30299)。

通常,在租户库设置上,SAP给出的建议是要设置分配限制,但是如果没有设置分配限制,在一个租户库上发生内存不足的现象,也会导致其他租户库出现内存不足的现象。如果要限制特定租户的内存分配,建议限制使用该参数global.ini - > [memorymanager] - > allocationlimit。

 

只有具有DATABASE ADMIN系统特权的System DB用户才能使用以下SQL启动/停止租户数据库。

ALTER SYSTEM STOP DATABASE <database_name>

ALTER SYSTEM START DATABASE <database_name>

我们还可以使用SAP HANA Cockpit在通过System DB访问时启动/停止租户。

 

但是,租户数据库管理员无法启动/停止租户数据库。

### 在 SAP HANA租户环境下使用 Python 开发 #### 安装必要的软件包 为了能够在 Linux 或 Windows 环境下通过 Python 访问 SAP HANA 数据,在多租户环境中同样适用,需确保已安装 Python 和相应的驱动程序。对于 Python 来说,`pyhdb` 是一个常用的客户端[^2]。 ```bash pip install pyhdb -i http://pypi.douban.com/simple/ ``` 这段命令会从指定源下载并安装 `pyhdb` ,该允许 Python 脚本与 SAP HANA 建立连接并执行 SQL 查询[^4]。 #### 创建数据连接函数 下面是一个简单的例子展示怎样建立到 SAP HANA 的连接: ```python import pyhdb def get_connection(): conn = pyhdb.connect( host="10.33.67.12", port=30053, # 注意这里指定了特定于多租户环境下的端口号 user="your_username", password="your_password" ) return conn ``` 请注意这里的主机 IP 地址 (`host`) 及端口 (`port`) 参数应根据实际部署情况调整;特别是当处理多租户实例时,务必确认所使用的端口号对应的是目标租户的服务端口。 #### 执行查询语句 一旦建立了有效的数据连接,就可以利用它来进行各种操作,比如读取数据表中的记录: ```python connection = get_connection() cursor = connection.cursor() query = "SELECT * FROM SCHEMA.TABLE LIMIT 10;" cursor.execute(query) for row in cursor.fetchall(): print(row) cursor.close() connection.close() ``` 上述代码片段展示了如何定义一条 SELECT 语句并通过游标的 execute 方法发送给服务器执行,之后遍历 fetchall() 返回的结果集打印每一行的数据。 #### 插入新纪录 除了查询现有数据外,还可以向表格内插入新的条目: ```python insert_query = """ INSERT INTO SCHEMA.TABLE (COLUMN1, COLUMN2) VALUES (?, ?); """ data_to_insert = ('value_for_column1', 'value_for_column2') cursor.execute(insert_query, data_to_insert) connection.commit() ``` 这条 INSERT 语句将一对值插入到了指定列中,并调用了 commit 函数使更改生效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值