数据库管理316期 2025-04-17
- 数据库管理-第316期 Oracle DB 23.8新特性一览(20250417)
- 1 客户端完整支持稀疏向量
- 2 DBMS_HYBRID_VECTOR.GET_SQL函数
- 3 PL/SQL 函数的动态统计信息
- 4 非ADB-S部署中的弹性向量内存管理
- 5 DBMS_HYBRID_VECTOR支持FILTER_BY
- 6 JSON类型定义功能增强:数据大小和数组规范
- 7 JSON到二元性迁移:提示配置字段
- 8 DBMS_HYBRID_VECTOR.SEARCH中的JSON_TEXTCONTAINS与JSON_EXISTS支持
- 9 适用 Azure Blob存储的Oracle数据库云备份模块
- 10 PL/SQL稀疏向量支持
- 11 数据库内JavaScript的受限执行上下文
- 12 具备RAG和合成数据生成功能的Select AI
- 13 DBMS_HYBRID_VECTOR SEARCH函数的表函数支持
- 14 IVF索引的可终止迭代
- 15 包含使用IVF索引列的可更新的JSON
- 16 使用JavaScript的用户定义向量距离函数
- 总结
数据库管理-第316期 Oracle DB 23.8新特性一览(20250417)
作者:胖头鱼的鱼缸(尹海文) Oracle ACE Pro: Database PostgreSQL ACE Partner 10年数据库行业经验 拥有OCM 11g/12c/19c、MySQL 8.0 OCP、Exadata、CDP等认证 墨天轮MVP,ITPUB认证专家 圈内拥有“总监”称号,非著名社恐(社交恐怖分子) 公众号:胖头鱼的鱼缸 CSDN:胖头鱼的鱼缸(尹海文) 墨天轮:胖头鱼的鱼缸 ITPUB:yhw1809。 除授权转载并标明出处外,均为“非法”抄袭
复制
又到了一季度一次的Oracle DB 23ai小版本更新,众所周知,从23ai开始,每个季度的版本更新都会带来不少的新特性,这也是在不断完善、扩展功能。之前的季度更新新特性可查看:
数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)
数据库管理-第256期 Oracle DB 23.6新特性一览(20241031)
数据库管理-第287期 Oracle DB 23.7新特性一览(20250124)
接下来一起看Oracle DB 23.8(2024四月补丁)带来了什么新特性。
1 客户端完整支持稀疏向量
JDBC和ODP.NET客户端驱动现在分别支持为稀疏向量、.NET稀疏和密集向量数据类型设计的Java接口。
稀疏向量是通常具有大量维度的向量,但这些维度中只有少数具有非零值。由于稀疏向量只存储非零值,因此使用它们可以提高效率并节省存储空间。ODP.NET中提供的稀疏类型以及为JDBC定义的用于在Java中表示稀疏向量的新接口,使您可以通过这些客户端驱动程序与稀疏向量数据进行交互。
2 DBMS_HYBRID_VECTOR.GET_SQL函数
DBMS_HYBRID_VECTOR包包含一个新函数GET_SQL,用于显示DBMS_HYBRID_VECTOR.SEARCH API生成的SQL。生成的 SQL可用于查看查询执行计划,以查找为混合搜索操作选择的索引。
调用DBMS_HYBRID_VECTOR.SEARCH函数时,将使用JSON文档格式调用该API。使用GET_SQL函数可以显示 DBMS_HYBRID_VECTOR.SEARCH API生成的SQL。GET_SQL提供的附加信息有助于解答有关生成的查询执行计划的问题,例如查找为混合搜索操作选择了哪个索引。
3 PL/SQL 函数的动态统计信息
SQL WHERE子句和TABLE函数中使用的PL/SQ 函数的动态统计信息支持已得到增强。长时间运行的PL/SQL函数如果与动态统计信息一起使用,可能会增加SQL解析时间,因此我们提供了全局级别和细粒度的控制来配置应包含或排除哪些函数。
在优化包含PL/SQL函数的SQL语句时,基数可能难以估计。这可能导致SQL执行计划和SQL性能不佳。控制和使用PL/SQL函数的动态统计信息的能力使优化器能够找到更好的执行计划,从而提高数据库的整体性能。
4 非ADB-S部署中的弹性向量内存管理
向量内存池可以配置为动态增长,以满足创建HNSW索引的大小需求。Oracle自治数据库和非自治数据库均支持此功能。
HNSW向量索引位于Oracle SGA中的向量内存池中。创建HNSW索引依赖于内存池的大小足以容纳该索引。对底层基表的后续更改也可能导致HNSW索引的大小随时间变化。借助弹性向量内存管理,可以将内存池配置为动态调整大小以容纳所有 HNSW索引。自动调整大小有助于更有效地分配空间并简化向量池的维护。
5 DBMS_HYBRID_VECTOR支持FILTER_BY
DBMS_HYBRID_VECTOR包现在包含一个FILTER_BY字段。FILTER_BY字段允许您指定要应用于执行混合向量搜索的基表的其他列的运算符和值。FILTER_BY字段还允许对JSON字段进行过滤。
在使用语义和文本组件执行混合向量搜索时,通常需要根据其他谓词过滤结果。FILTER_BY字段提供了一种使用标准关系逻辑运算符提供这些附加过滤器的方法。
6 JSON类型定义功能增强:数据大小和数组规范
可以以字节为单位指定JSON类型列的最大大小。
对于类型定义ARRAY,您可以指定:
- 所有数组元素均为(单一)标量类型
- 数组元素是否可以为JSON null
- 数组元素的最大数量
- 是否按升序存储数组元素
指定JSON类型列的大小限制并限制数组大小、元素类型和存储顺序,可以更高效地处理存储的JSON数据。
7 JSON到二元性迁移:提示配置字段
二元性视图的提示配置字段可以将主键列映射到子对象字段,将SQL数据类型映射到字段,以及禁用子对象底层数据的共享。
可以更好地控制二元视图支持的文档与其底层关系数据之间的映射:
- 哪些文档字段应对应于主键列
- 哪些 SQL 数据类型应作为特定字段的基础
- 是否对文档中的特定对象进行规范化
此功能增强了开发人员利用JSON文档通过高效的关系数据存储模型进行数据访问的能力,同时又不影响其简洁性和效率。
8 DBMS_HYBRID_VECTOR.SEARCH中的JSON_TEXTCONTAINS与JSON_EXISTS支持
DBMS_HYBRID_VECTOR.SEARCH API现在支持用户在混合搜索中指定可选的JSON_EXISTS和JSON_TEXTCONTAINS子句。
编写复杂查询需要能够在处理复杂JSO 数据时通过JSON_EXISTS和JSON_TEXTCONTAINS进一步约束混合(语义和文本)搜索。此功能可让您设计更复杂的应用程序,以更好地满足用户的搜索条件。
9 适用 Azure Blob存储的Oracle数据库云备份模块
适用于Azure Blob存储的Oracle数据库云备份模块支持Oracle数据库将备份发送到Microsoft Azure Blob存储并从中恢复。此备份模块兼容部署在本地或Azure云上的Oracle数据库。不支持将备份写入Oracle托管数据库服务的Azure Blob存储。数据库管理员可以使用RMAN命令、RMAN脚本和Oracle Enterprise Manager在Azure Blob存储执行备份和恢复操作。
您可以在许多不同的位置运行Oracle数据库,适用于Azure Blob存储的备份模块为本地和Azure用户提供了更灵活的备份存储位置选择。
10 PL/SQL稀疏向量支持
PL/SQL原生支持创建和声明稀疏向量。在某些情况下,与使用密集向量相比,使用稀疏向量可以更节省空间并提升相似性搜索性能。
稀疏向量通常具有大量维度,但其中只有少数维度具有非零值。由于稀疏向量仅存储非零值,因此使用它们可以提高效率并节省存储空间。PL/SQL的原生支持允许您在PL/SQL内部创建和声明稀疏向量,而无需调用SQL。
11 数据库内JavaScript的受限执行上下文
可以在多语言引擎(MLE)环境和JavaScript内联调用规范中指定PURE选项,以创建受限的JavaScript上下文,在这些上下文中无法与数据库功能进行交互。
使用PURE选项创建受限的JavaScript执行上下文,可以方便地限制在数据库中运行的JavaScript代码的功能。在受限上下文中执行的JavaScript程序可以保证不会修改数据库表或使用PL/SQL包,无论当前有效的数据库权限如何。常见的数据处理用例中,使用用户定义函数只需要对函数输入进行计算。在这些场景中,受限上下文提供了一个安全网,禁止不必要的数据库修改——例如,在使用第三方或开源JavaScript库时。
在AI向量搜索的上下文中,创建HNSW索引时,JavaScript函数可以用作用户定义的向量距离度量。只有标有PURE选项的JavaScript函数才允许在HNSW索引上使用。
12 具备RAG和合成数据生成功能的Select AI
Select AI现已支持检索增强生成(RAG)、合成数据生成(SDG)以及AI提供商Google、Anthropi 和Hugging Face。这些增强功能基于现有的自然语言到SQL (NL2SQL)功能构建。
Oracle自治数据库上的Select AI已支持RAG、SDG和更广泛的AI提供商。此功能为非自治数据库用户提供了更强大的功能对等性。Select AI使您能够使用大型语言模型(LLM) 以及SQL和PL/SQL转换器轻松开发基于AI的应用程序。
RAG使您能够提供企业特定的、更新的数据,以增强LLM响应并减少幻觉,从而支持更广泛的用例。
SDG使您能够生成数据。这些合成数据具有多种用例。例如,它可以帮助您快速启动一个没有用户数据的新项目,使用应用程序界面验证用户体验,或为开发和测试场景填充元数据克隆。
更多的AI提供商为您提供了使用LLM和转换器与Select AI的更多选项。
13 DBMS_HYBRID_VECTOR SEARCH函数的表函数支持
除了现有的DBMS_HYBRID_VECTOR.SEARCH API之外,还新增了使用便捷表函数返回混合搜索结果的支持。
DBMS_HYBRID_VECTOR.SEARCH函数以JSON文档格式输出结果。表函数支持提供了一种便捷的方式,可以将混合搜索结果与现有SQL集成,而无需对结果进行后处理。
14 IVF索引的可终止迭代
在使用IVF向量索引时,可终止迭代能够在搜索过程中返回预期的“K”行数。优化器会考虑将搜索范围扩展到更多质心,以确保返回所需的K行。
使用IVF平面索引时,优化器会估算底层质心表中需要考虑的探测或聚类的数量。如果优化器低估了探测的数量,查询返回的行数可能会少于预期。在获取的行数对应用程序至关重要的情况下,将可终止迭代与IVF索引结合使用可以设置至少要返回的行数(或行数范围)。
要使用可终止迭代,您必须指定操作。如果使用向量索引时优化器成本更高,则优化器会选择不使用向量索引。
15 包含使用IVF索引列的可更新的JSON
向量索引中的包含列通过将非向量列合并到邻近分区向量索引中,从而加快了使用属性过滤器的搜索速度。此外,对JSON、BLOB和 CLOB数据类型的限制也已移除。
包含列允许将底层基表中的其他非向量列存储在邻近分区向量索引中。这优化了查询执行,因为不再需要访问底层基表来检索这些列。新增的包含JSON、BLOB 和 CLOB数据类型的列支持提高了灵活性。
16 使用JavaScript的用户定义向量距离函数
AI向量搜索基于向量距离度量。除了欧氏距离度量和余弦距离度量之外,您还可以使用用户定义的向量距离度量。向量索引可以基于用户定义的JavaScrip 函数创建和查询。
向量相似性搜索操作通常基于欧氏距离度量、余弦距离度量和点积距离度量。然而,在某些情况下,需要特定领域或专有的度量。用户定义的向量距离函数为您提供了一个可扩展的解决方案,让您能够使用JavaScript函数创建自定义度量。
总结
Oracle DB 23.8带来了更多的JSON和向量相关功能的增强。
老规矩,知道写了些啥。
评论

