MySQL语法100%可转换为MemSQL?
或者90%?70%?
只是试图判断这是另一种需要学习的单独SQL语言,还是大多数东西都是可移植的。
发布于 2022-08-31 04:33:10
第一件事: MemSQL不再以这个名字存在。他们的制造商在2020年将其更名为SingleStoreDB。
用户使用MySQL客户端软件连接到SingleStoreDB云服务器。SingleStoreDB云使用与MySQL相同的有线协议,并支持与MySQL类似的SQL语法,以与MySQL客户端软件兼容。
他们所说的“连线协议”的意思是,您可以使用同一个客户端连接到SingleStoreDB。您可以使用同一个客户端连接和验证、发送查询和获取结果,但是SQL查询(发送它们时只是字符串)不一定兼容。
还有其他使用MySQL有线协议的数据库产品: MariaDB、TiDB、ClickHouse、PlanetScale和Dolt。它们都有略微不同的SQL语言支持。
人们怎么说他们的“百分比”兼容呢?
浏览一下MemSQL的文档,有很多MySQL语言看起来很熟悉,比如自动增量和许多内置函数、存储过程和数据类型-- INSERT...ON重复的密钥更新等等。我猜SingleStoreDB是基于几年前的MySQL叉的。
SingleStoreDB有一些没有在MySQL中实现的专有特性。类似地,MySQL有一些不在SingleStoreDB中的特性(我只是随机浏览了一个部分:JSON内置函数,因为它是相对较新的MySQL添加。我发现SingleStoreDB和MySQL在这方面完全不同)。
但是,有许多功能似乎是兼容的。或者他们是?这两个数据库都支持使用WITH语法的通用表表达式,但MySQL支持WITH RECURSIVE,而SingleStoreDB不支持。
但是SingleStoreDB支持它自己的扩展,而MySQL没有相应的扩展,比如数组和记录类型。
如果您可以度量每个数据库的SQL语法,并计算每个解析树中的终端和非终端,并使用它来度量一个精确的兼容性百分比,那么您将如何处理这些信息?
假设答案是80%的语法对于这两个数据库来说是通用的。这是否意味着不需要对项目中的查询进行检查?不-你所有的疑问都需要审查。这意味着您需要仔细测试并研究这两种产品的文档以了解差异。
抱歉,当你把代码从一个平台移植到另一个平台时,没有捷径。你只需要集中精力,学习和测试,这需要时间。
顺便说一句,在选择支持MemSQL:https://dom.as/2012/06/26/memsql-rage/之前,您还应该阅读这个博客--它是由一位高级MySQL开发人员编写的,因此可以被认为是有偏见的,但他也是一位受人尊敬的数据库性能专家,他很好地支持他的观点。
发布于 2022-08-31 12:24:54
由于支持OLAP和OLTP工作负载的“通用存储”特性,MemSQL正在成为SingleStore。
SingleStore支持所有MySQL数据类型和95%的MySQL函数。在此基础上,SingleStore还有其他新函数和索引/键。
SingleStore还不支持的唯一东西是外键,除了可以保留MySQL模式并轻松地将数据迁移到SingleStore之外。
https://stackoverflow.com/questions/73550651
复制相似问题