SQL as a Service

The following text is a partial translation of the original English article, performed by ChatGPT (gpt-3.5-turbo) and this Jekyll plugin:

自从2007年以来,大约是亚马逊推出S3的时候,我就一直在思考这个问题。我甚至尝试过几次实现,但在设计阶段就失败了。我听说过一家初创公司也试图做同样的事情,但也失败了。我仍然不确定是否有可能做到,但它肯定可以成为云数据管理市场上的畅销产品。等等,你可能会说,谷歌云SQL、AWS RDS、微软Azure、Heroku PostgreSQL以及其他许多呢?它们与我的意思相去甚远。

让我给你举个类似的例子。假设你想在云上存储一段二进制数据。我有两个解决方案供你选择。第一个是一个带有FTP的托管服务器。你每月支付给我5美元,我给你提供服务器的FTP访问权限,它有100GB的磁盘。你可以将文件上传到那里,然后下载回来。非常好用。我还有第二个选择,就是亚马逊S3。你也可以上传和下载数据,但是通过他们的API进行。你需要为每个API请求、每个托管的字节和每个传输的字节付费,而不是按月付费。你会选择哪一个呢?

显然,你会选择S3。为什么?这两者之间的根本区别是什么?关键区别在于它们的服务水平协议(SLAs):第一个带有FTP的是一个“服务器”,而第二个是一个“服务”。

FTP服务器提供商保证计算资源(CPU、磁盘、带宽等)的可用性,而S3保证数据的可用性。如果FTP服务器上的磁盘崩溃,它将及时更换,但数据将丢失。如果磁盘已满,你可以订购额外的服务器,但这是你的责任,不要忘记。如果磁盘空间未使用,你仍然需要支付每月5美元。等等。

AWS S3在市场上取得了如此突破性的进展,十多年前,正是因为这个区别。他们在我们都习惯的“网页托管”之上添加了一个新的“服务层”。这个想法仍然是一样的——它仍然是云中的数据,我们上传和下载——但SLA是不同的。我们不再需要担心磁盘溢出、为未使用的空间支付过多费用、定期备份、SSH终端等等。他们只是给了我们一个简单的API和一个承诺,数据在那里,并且是安全的。

现在是2019年了,对于关系数据,我们仍然没有同样的解决方案。无论你选择哪个提供商,他们所做的都是给你一台(或一个集群)安装了MySQL或PostgreSQL(或者他们自己版本的)的机器,并按照运行时间收费。他们仍然给你提供了“好旧的FTP”,没有额外的服务层。

这就是我期望的真正的云中关系数据的服务水平协议的样子:

  • 按数据付费。让我们为每个SQL请求、每个存储的字节和每个传输的字节付费。需要多少服务器和硬盘来托管这一切——那不应该是我们关心的事情。

  • 受限制的 SQL。在大多数项目中,并不需要使用 MySQL 或 PostgreSQL 方言中的大多数命令。只需要给我们 INSERTSELECTUPDATEDELETE,就可以了。

  • 索引。根据我们所进行的SQL查询的统计数据来自动生成它们。

  • 模式版本控制。通过类似于Liquibase的方式,使得可以通过创建新的ALTER TABLECREATE TABLE脚本,并将其应用于现有数据库来更新模式。

  • 快照和回滚。允许对数据进行快照,应用新的模式版本,如果出现问题,则可以回滚到之前创建的某个快照。

这个实现起来真的那么难吗?

Translated by ChatGPT gpt-3.5-turbo/42 on 2023-12-16 at 15:05

sixnines availability badge   GitHub stars