在这篇文章中,我想向大家介绍 Jonathan Bregler,他是SAP的一名软件工程师,负责SAP HANA数据库的开发。

你好,乔纳森。你想自我介绍一下吗?
你好,弗拉德。感谢你的邀请。我叫乔纳森·布列格勒。我在德国沃尔多夫的SAP公司担任软件工程师。
我最初是一名Java开发者,参与了许多使用各种开源组件的项目,例如Spring、Tomcat、OSGi、CXF,当然还有Hibernate。我一直对数据库及其高效使用感兴趣,这也是我为什么从一开始就对Hibernate着迷的原因。
由于我想了解数据库的内部工作原理并获取一些实践经验,我加入了SAP,成为他们SAP HANA开发团队的一员。在过去的几年里,我一直在SAP HANA数据库的多个方面工作,例如软件物流、将数据库移植到IBM PowerPC,以及SAP HANA部署基础设施。
去年,我有机会帮助改进Hibernate等流行的Java开源框架对SAP HANA的支持。鉴于我的背景,这个机会对我来说似乎是量身定做的,所以我接受了这个机会,从未回头。
你能告诉我们SAP HANA是如何工作的,以及它与其他数据库系统有何不同吗?
SAP HANA与大多数其他数据库不同,因为它是一个内存中的列式数据库。这种独特的设计使得它可以同时处理事务性和分析性工作负载,从而使SAP HANA成为一个真正的 跨分析数据平台。以下是SAP HANA提供的一些好处。
内存中、列式、大规模并行数据库处理
SAP HANA 平台允许使用单一数据副本在单一平台上进行在线事务处理和在线分析处理工作负载。
它将数据存储在高速内存中,按列组织,并在多个服务器之间进行分区和分配。这可以提供更快的查询,更有效地汇总数据,同时避免昂贵的全表扫描、物化视图和分析索引。
数据建模和存储过程
SAP HANA 提供了一种称为 SQLScript 的本地语言,允许您构建存储过程,并使用高级功能在数据库内部构建复杂逻辑。
它包括一个业务功能库,其中内置了参数驱动的金融函数。此外,它还包括一个框架,允许您构建自定义算法并在数据库内部安全地运行。核心数据服务、图形计算视图和决策表进一步简化并加速了数据库逻辑的创建。
空间处理
SAP HANA 提供了对空间数据和空间函数的原生支持。空间处理通过开放地理空间联盟标准、国际标准化组织关于多媒体和特定应用包的规则(ISO SQL/MM)以及地理空间 JavaScript 开放表示法(GeoJSON)标准通过 SQL 支持,用于存储、查询和访问位置信息。
使用开放标准可以让您与第三方空间解决方案交换空间信息,以开发企业级的位置智能。
SAP HANA 包括带有政治边界和兴趣点的基图,以加速开发现代的位置感知业务应用程序。第三方空间解决方案也可以将 SAP HANA 作为高性能、内存数据存储来管理和处理空间数据。
图
SAP HANA 允许您使用动态数据模型属性图存储和处理高度连接的数据。通过 SQL 和 openCypher 项目提供的 Cypher 查询语言支持存储和查询图数据。
图提供全事务一致性并保证 ACID 兼容性,而无需复制实时事务数据。提供原生图算法以实时揭示您数据中的关系。
您还可以将图数据处理与 SAP HANA 中的其他高级分析处理功能相结合,例如文本分析、预测和空间分析。SAP HANA 中的图查看器可以帮助您可视化和探索图数据。
预测分析和机器学习
SAP HANA 的预测分析包括针对专家和自动化模式的本地高性能预测算法。
此外,您可以通过与 R Server 集成在 SAP HANA 上运行开源 R 脚本,并通过与 TensorFlow 的集成构建机器学习应用程序。
一些预测算法在流、空间和时间序列数据上运行,并具有自我改进的能力。
搜索
您可以使用 SQL 在多个列和二进制文件中快速定位文本,例如 Adobe PDF 文件、HTML、RTF、MSG、Microsoft Office 文档和平面文本文件。SAP HANA 允许您运行 32 种语言的全文和高级模糊搜索。
SAP HANA 中的文本分析包括高级自然语言处理和实体提取功能,例如分词、词干提取、标记和情感分析。
SAP HANA 还提取通常被称为三元组的内容——主语、谓语和宾语的序列。这些功能有助于从非结构化数据中提取意义并将其转换为分析的结构化数据。SAP HANA 还支持文本挖掘算法,以从文档集中挖掘相关关键词。
流分析
您可以使用 SAP HANA 内部的高扩展性智能数据流引擎实时捕获和处理来自许多源的事件流。
SAP HANA 支持类似 SQL 的处理语言,以结合流与上下文数据,并实时分析结果。
为了提高可扩展性,SAP HANA 提供了一个轻量级流组件,您可以在流数据源上部署它来分析并过滤流,在它们到达 SAP HANA 之前。
文档存储
SAP HANA 允许您使用支持将模式灵活的数据以 JSON 格式存储的功能,构建企业级的非 SQL(NoSQL)应用程序。您可以结合 JSON 数据和结构化数据,并使用 SQL 查询或分析它。
数据集成、复制和质量
SAP HANA 支持全面的功能来处理所有数据集成场景,包括实时数据复制以及批量加载数据、数据转换、数据清理服务和数据丰富服务。
提供适配器可以从多个数据库、云源和 Apache Hadoop 加载数据,同时还有用于构建您自己的适配器的自定义软件开发工具包。
Apache Hadoop 和 Apache Spark 集成
SAP HANA 提供了多种分析 Apache Hadoop 数据的选项,包括 SAP Vora 引擎、SAP Cloud Platform Big Data 服务、Apache Spark 适配器和 Apache Hive。
您可以通过用户定义的虚拟函数在 SQL 中访问 Hadoop 分布式文件系统中的数据,并将 MapReduce 函数作为数据源。
免费开发者版本
SAP HANA,express edition,是 SAP HANA 的免费开发者版本,可用于开始开发 SAP HANA 上的应用程序。
express edition 的内存限制为 32GB,但除此之外和少数企业功能外,它提供了 SAP HANA 中所有功能的完整范围。SAP HANA,express edition 可以通过直接安装二进制文件、运行包含二进制文件的虚拟机或运行 Docker 镜像在本地运行。
SAP HANA,express edition 还可通过 SAP Cloud Appliance Library(AWS 或 Microsoft Azure)、Google Cloud Platform 或 Microsoft Azure Marketplace 在云中提供。
您为 SAP HANA Hibernate Dialect 提供了许多改进。当与 SAP HANA 一起工作时,Hibernate 是否是一个合适的匹配项?
是的,Hibernate 与 SAP HANA 配合得非常好。在我的研究过程中,我没有找到像 Hibernate 那样受欢迎且提供相同范围功能的任何项目。此外,这些功能中的每一个都补充了 SAP HANA 的特定功能。
首先,核心方言提供了处理数据库之间不可避免的 SQL 语法差异所需的灵活性。
此外,Hibernate 提供了一些与 SAP HANA 配合得非常好的有趣扩展。一个这样的例子是 Hibernate Spatial 方言,可以用于利用 SAP HANA 的高级地理空间引擎处理地理空间数据。SAP HANA 的文本搜索和分析功能可以通过 Hibernate Search 项目使用。
当与 SAP HANA 的 NoSQL 功能一起工作时,Hibernate OGM 项目可以被扩展以与 SAP HANA 图形引擎和 SAP HANA 文档存储一起工作。
在我看来,Hibernate非常适合在SAP HANA上构建高级事务和分析应用,因为它提供了访问SAP HANA最重要功能的接口,使开发人员能够在熟悉的领域内使用这些功能,而无需过多关注数据库的具体细节。
自从你在Hibernate ORM中修复了各种问题以来,你在Hibernate ORM项目中的贡献经验如何?其他开发者开始贡献是否容易?
我对贡献ORM项目的经历非常积极。贡献流程简单,在Hibernate网站和GitHub仓库中有明确的描述。
我特别喜欢只有最低限度的许可开销需要考虑,因此你可以不咨询律师就开始。
贡献指南清晰,有资源可以描述如何使用流行的IDE开始,包括代码模板和格式化工具,从而便于遵守编码规范。
Hibernate团队定期检查新的GitHub拉取请求,审查它们,并在必要时提供有用的反馈。
我们始终重视社区的反馈,所以你能告诉我们你希望我们添加哪些功能,以便使其他数据访问框架更容易与JPA或Hibernate集成吗?
总的来说,我对Hibernate提供的功能非常满意。我以某种方式实现了所需的所有功能。所以,实际上,我没什么好抱怨的,但既然你问了……
在我实现Hibernate用于SAP HANA的方言时,我发现有时调整Hibernate执行的SQL查询生成方式以添加数据库特定语法会很有帮助。据我所知,重构SQL查询生成是Hibernate 6的一个主要议题,所以我期待着那。
另一个有趣的功能是能够轻松地影响不仅SQL查询生成,还有模式生成。这样,数据库模式也可以根据特定数据库进行定制,可能利用标准SQL不包括的数据库特定功能。
感谢你,Jonathan,感谢你抽出时间。能邀请你来这里是一种极大的荣幸。要联系Jonathan,你可以关注他的GitHub。