开发人员现在可以在 MySQL 数据库服务器中编写 JavaScript 存储程序(函数和过程)。存储的程序将与GraalVM运行时一起运行。它在 MySQL 企业版中作为预览版提供,并且可以通过Oracle 技术网 (OTN)下载。MySQL-JavaScript 还可在 OCI、AWS 和 Azure 上的 MySQL Heatwave 云服务中使用。
为什么选择 JavaScript 存储程序?
JavaScript 是开发人员中最流行的编程语言。除了更简单的语法和对现代语言功能的支持之外,其受欢迎的一个关键因素是丰富的生态系统,提供了大量可重用的代码模块。
当需要持久存储时,最流行的开源数据库MySQL将是JavaScript开发人员的自然选择。通过在存储程序中支持 JavaScript,开发人员将能够用熟悉的语言编写 MySQL 存储程序,并利用广泛的 JavaScript 生态系统!
对JavaScript存储程序的支持,不仅可以利用庞大的生态系统来提高开发人员的生产力;现在,更多的开发人员将具备编写存储程序所需的技能。换句话说,组织现在可以利用广泛可用的 JavaScript 技能集进行后端开发,从而挖掘更广泛的开发人才。
存储程序的一个关键优势是最大限度地减少数据库服务器和应用程序之间的数据移动。由于多种原因,传输大量数据(尤其是批处理数据)可能会出现问题:
- 它非常耗时,并且可能会导致大量的网络开销。
- 当应用程序“喋喋不休”时,延迟的增加可能会变得明显。
- 在中间层或应用层处理大量数据需要大量内存和存储,从而增加了成本。
- 由于安全风险和数据保护要求,通常必须避免机器之间的数据传输,尤其是在云环境中。
- 将大量数据移至数据库服务之外会增加出口成本。
使用存储程序处理数据库中的数据是解决这些问题的常见方法。
新用例
MySQL-JavaScript 为应用程序设计带来了新的机遇,而这些机遇曾经因权衡而受到限制。JavaScript 存储程序使开发人员能够避开数据移动并轻松在数据库内无缝实现高级数据处理逻辑。下面列出了一些简单用例的示例:
- 数据提取:从数据库中常用的复杂对象中提取信息,例如URL字符串。
- 数据格式化:使用广泛使用的模板化方案(例如 JavaScript Mustache 包)生成格式化字符串。
- 近似搜索:在 SELECT 查询中使用相似性评分函数,例如,从表中检索相似的字符串。
- 数据验证:使用复杂的验证规则清理数据。例如,使用 JavaScript Validator 包。
- 压缩/编码:使用 MySQL 中未包含的自定义算法进行数据压缩和加密。
- 数据转换:更改数据表示形式,例如将字符串列转换为特征工程中使用的稀疏矩阵表示形式。
提供的示例只是对该功能潜力的一瞥。存在更复杂的用例,例如部署完整的数据管道和为机器学习应用程序设置暂存环境。
网友评论:
- 将具有糟糕类型系统的语言放入类型至关重要的环境中。MySQL 已经实现了 JS 唯一好的部分(JSON),为什么还要费心去处理其余的部分呢?
- 为什么有人会使用它而不是在检索后操纵数据,这无疑会带来更好的性能。
- 总体来说,该功能具有一定的适用性。对于一个标准网站来说,它的作用非常小。但任何需要聚合数据的应用程序都可能有用。对于数据聚合,通常的问题是您需要非常快地使用它,并且需要基于大型数据集来聚合它。
- 如果他们使用一种类型系统与 SQL 类型更紧密映射的语言,效果会更好。就目前情况而言,JS 的类型过于广泛和灵活,因此这是没有意义的。
- 安全人员要尝试另一种攻击方式。
- 这可能是一个有趣的实验,因为这个领域的 JS 可以使 JS 开发人员更容易地将分析或复杂的数字处理转移到数据库问题上。
根据代码的优化/编写方式,可能会提高性能,也可能会带来彻底的灾难。 - 让我觉得有点好笑的是,就在几十年前,假设你是一名 javascript 开发人员,却被人瞧不起。
现在,情况完全不同了。 - 全新的js框架浪潮即将兴起 MySQL.js