替代 Google Cloud SQL 中用户定义的函数
Posted
技术标签:
【中文标题】替代 Google Cloud SQL 中用户定义的函数【英文标题】:Alternative to user defined functions in Google's Cloud SQL 【发布时间】:2015-06-25 06:05:00 【问题描述】:我刚刚将我的数据库转移到 Google 的 Cloud SQL,但正如 FAQ on Google Cloud SQL 中所述,它说不支持用户定义的函数。我正在使用取自 *** article 的名为 Levenshtein 的函数对我在数据库中创建的字典执行搜索。它是一个函数,可以找到看起来相似的单词(包括拼写错误)并返回与给定单词的距离。
Google 是否提供任何替代用户定义函数的选项,让我可以使用此功能执行搜索?
【问题讨论】:
不,它没有。但是,您可以使用 gce 并在其中使用您想要的任何数据库。 是的,CloudSQL 本质上是沙盒 mysql,因此在 Compute Engine 实例上简单地运行 MySQL(或其他数据库)可能是您的最佳解决方案。 谷歌不支持这一点是一个蹩脚的,我可以考虑基于云的基础设施的原因之一是能够将我的数据库迁移到 CloudSQL 以利用电源、性能和可扩展性,所以我我的应用基于 UDF 和存储过程。 显然,如果您使用 GCE(谷歌云引擎),您可以完全控制您的数据库。但是您不能使用 GAE(Google App Engine)来做到这一点。有关差异的更多信息,请参阅***.com/questions/22697049/…。 【参考方案1】:您对术语感到困惑:
用户定义函数 = 在实际代码中定义的函数,编译成 DLL/SO,并在 MySQL 中使用CREATE FUNCTION ... SONAME
创建。这在 Cloud SQL 中是不可能的。
存储过程 = 在 SQL 语句中定义的函数,并在 MySQL 中使用CREATE FUNCTION routine_body
或CREATE PROCEDURE
创建。这在 Cloud SQL 中是允许的。
我刚刚通过将definition from that SO post 复制并粘贴到我的 Cloud SQL 实例中进行了测试,它运行良好。
【讨论】:
同意。我的意思是存储过程。我测试了 SO 文章中的代码,它给出了一些 SQL 错误,但它确实创建了函数。感谢您的帮助!以上是关于替代 Google Cloud SQL 中用户定义的函数的主要内容,如果未能解决你的问题,请参考以下文章
在 Google Cloud 函数中访问用户定义的包(ModuleNotFoundError: No module named...)
在 BigQuery Google Cloud 中获取我所有计划的 SQL 查询
无法从在具有自定义运行时的 Docker 中运行 .NET Core 应用程序的 App Engine 连接到 Google Cloud SQL 中的 postgres
如何终止 Google Cloud SQL for PostgreSQL 中的会话?