MySQL 9.0“创新版”已支持向量,为何甲骨文却“偷偷摸摸”地宣布?

科技   2024-07-08 11:51   浙江  
转自:OSC开源社区(oschina2013)
MySQL 9.0.0 Innovation(俗称 “创新版”)已于近日发布。
从 MySQL 8.1 开始,官方启用了新的版本模型:MySQL 创新版 (Innovation) 和长期支持版 (LTS)。
根据介绍,两者的质量都已达到可用于生产环境级别。区别在于:
  • 如果希望尝试最新的功能和改进,并喜欢与最新技术保持同步,那么 MySQL 创新版本可能最适合您。
    该版本非常适合在快节奏的开发环境中工作的开发人员和 DBA,其中有高水平的自动化测试和现代的持续集成技术,可以实现更快的升级周期。
  • 如果您的环境需要继续保持已经固定的行为,那么 LTS 版本就是您的不二之选。这些版本仅包含必要的修复,因此可以减少数据库软件行为变更带来的风险。
对于 MySQL 9.0 “创新版”,最值得关注的新特性莫过于支持向量数据类型,字段类型名称为VECTOR,可以使用
 to_vector/string_to_vector/from_vector/vector_dim 等函数操作向量数据。
MySQL 9.0 的 Release Notes 写道:
此版本中添加了对 VECTOR 列类型的支持。
向量 (Vector) 是一种数据结构,由条目列表(4 字节浮点值)组成,可以表示为二进制字符串值或列表格式的字符串。
VECTOR 列声明有最大长度或条目数(在括号中);默认为 2048,最大为 16383。
下面示例是使用CREATE TABLE创建包含VECTOR列的InnoDB表:
mysql> CREATE TABLE v1 (c1 VECTOR(5000));
Query OK, 0 rows affected (0.03 sec)
操作向量的相关函数介绍:
  • VECTOR_DIM()函数用于获取向量的长度;
  • STRING_TO_VECTOR()
    (别名TO_VECTOR())函数采用向量的列表格式表示形式,并返回二进制字符串表示形式;
  • VECTOR_TO_STRING()
    (别名FROM_VECTOR())函数执行和上面相反的操作。

mysql> SELECT STRING_TO_VECTOR('[2, 3, 5, 7]');
+------------------------------------------------------+
| TO_VECTOR('[2, 3, 5, 7]') |
+------------------------------------------------------+
| 0x00000040000040400000A0400000E040 |
+------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT VECTOR_TO_STRING(0x00000040000040400000A0400000E040);
+------------------------------------------------------+
| VECTOR_TO_STRING(0x00000040000040400000A0400000E040) |
+------------------------------------------------------+
| [2.00000e+00,3.00000e+00,5.00000e+00,7.00000e+00] |
+------------------------------------------------------+
1 row in set (0.00 sec)

更多信息和示例查阅:VECTOR Type、Vector Functions (WL #16081)
https://dev.mysql.com/doc/refman/9.0/en/vector.html
https://dev.mysql.com/doc/refman/9.0/en/vector-functions.html

MySQL 9.0 前几天发布后就引起了广泛讨论,尤其是 Oracle 官方博客提到新增 Vector 数据类型。
不过 MySQL 数据库专家叶金荣却吐槽称,“MySQL 9.0 手册和 release notes 里只字不提新增 Vector(向量)数据类型及相关函数的事。”
他表示在这两份重要文档中,没任何一处提到新增 Vector 数据类型,在用户手册数据类型部分,也确实没看到关于 Vector 的介绍。
直到昨天,叶老师才发现 MySQL 9.0 用户手册和 release notes 加上了新增向量数据类型的相关说明:
via《Oracle MySQL,怒其不争,自甘堕落》
对于甲骨文这波操作,叶老师表达了自己的看法:
在 MySQL 9.0 里新增向量数据类型是为了 Heatwave 服务,而不是为了 MySQL 社区用户服务。
MySQL 9.0 “向量支持” 的 commit 信息也进一步印证了叶老师的观点:
MySQL HeatWave 是 Oracle 提供的一种数据库服务,它通过集成内存查询加速器来显著提高 MySQL 查询的性能,并且允许用户在不增加复杂性、延迟、风险和成本的情况下,对事务性数据进行实时分析。
用户无需将数据进行 ETL(提取、转换、加载)操作复制到单独的分析数据库中。

参考链接

https://my.oschina.net/actiontechoss/blog/10090445

https://dev.mysql.com/downloads/mysql/

https://dev.mysql.com/doc/relnotes/mysql/9.0/en/news-9-0-0.html#mysqld-9-0-0-vectors

https://blogs.oracle.com/mysql/post/mysql-july-2024-ga-releases-now-available

https://github.com/mysql/mysql-server/commit/8cd51511de7db36971954326af6d10eb7ac5476c

https://www.oracle.com/cn/heatwave/


推荐阅读  点击标题可跳转

1、被全球最大用户弃用!曾经的数据库霸主 HBase 正在消亡

2、“鸭子数据库”DuckDB正式发布1.0稳定版:C++引擎代码超30万行、百万级月下载量

3、OpenAI 突然收购实时分析数据公司,传统数据库厂商:快来,OpenAI 又带我们玩了

数据分析与开发
「数据分析与开发」分享数据分析与开发相关技术文章、教程、工具
 最新文章