跳到主要内容

SAP HANA

安装

TypeORM 依赖 @sap/hana-client 来建立数据库连接:

npm install @sap/hana-client

如果你使用的是 TypeORM 0.3.25 或更早版本,还需要 hdb-pool 来管理连接池。

数据源选项

有关常用数据源选项,请参阅 数据源选项

  • host - SAP HANA 服务器的主机名。例如,"localhost"
  • port - SAP HANA 服务器的端口号。例如,30015
  • username - 用于连接 SAP HANA 服务器的用户名。例如,"SYSTEM"
  • password - 用于连接 SAP HANA 服务器的密码。例如,"password"
  • database - 要连接的数据库名称。例如,"HXE"
  • encrypt - 是否加密连接。例如,true
  • sslValidateCertificate - 是否验证 SSL 证书。例如,true
  • keycertca - 用于加密连接的私钥、公钥证书和证书颁发机构。
  • pool — 连接池配置对象:
    • maxConnectedOrPooled(数字)— 连接池中最大活动或空闲连接数(默认值:10)。
    • maxPooledIdleTime(秒)— 空闲连接关闭前的等待时间(默认值:30)。
    • maxWaitTimeoutIfPoolExhausted(毫秒)— 等待连接可用的最长时间(默认值:0,表示不等待)。需要 @sap/hana-client 版本 2.27 或更高。
    • pingCheck(布尔)— 使用前是否验证连接有效性(默认值:false)。
    • poolCapacity(数字)— 保持可用的最大连接数(默认值:无上限)。

更多详情及 extra 属性,请参阅 SAP HANA Client 官方文档:Node.js 连接属性

列类型

SAP HANA 2.0 和 SAP HANA Cloud 支持的数据类型略有不同。更多信息请查看 SAP 帮助页面:

TypeORM 的 SapDriver 支持的类型包括:tinyintsmallintintegerbigintsmalldecimaldecimalrealdoubledatetimeseconddatetimestampbooleancharncharvarcharnvarchartextalphanumshorttextarrayvarbinaryblobclobnclobst_geometryst_pointreal_vectorhalf_vector。其中一些数据类型在 SAP HANA Cloud 已被废弃或移除,连接到云数据库时会转换为最接近的可用替代类型。

向量类型

real_vectorhalf_vector 数据类型分别于 SAP HANA Cloud 2024Q1 和 2025Q2 版本引入,同时需要支持的 @sap/hana-client 版本。

为了与 PostgreSQL 的向量支持保持一致,TypeORM 也提供了别名:

  • vectorreal_vector 的别名)— 以 4 字节浮点数存储向量
  • halfvechalf_vector 的别名)— 以 2 字节浮点数存储向量,优化内存使用
@Entity()
export class Document {
@PrimaryGeneratedColumn()
id: number

// 使用 SAP HANA 原生类型名称
@Column("real_vector", { length: 1536 })
embedding: Buffer | number[]

@Column("half_vector", { length: 768 })
reduced_embedding: Buffer | number[]

// 使用跨数据库别名(推荐)
@Column("vector", { length: 1536 })
universal_embedding: Buffer | number[]

@Column("halfvec", { length: 768 })
universal_reduced_embedding: Buffer | number[]
}

默认情况下,客户端会以更高效的 fvecs/hvecs 格式返回一个 Buffer,也可以通过在连接选项中添加 { extra: { vectorOutputType: "Array" } } 让驱动转换值为 number[]。关于更多信息,请参阅 SAP HANA Client 文档中的 REAL_VECTORHALF_VECTOR

使用相应的 向量函数 进行相似度搜索。