什么是无服务器SQL数据库?

199 阅读9分钟

所有的数据库最终都只是应用程序。那么,从根本上说,无服务器数据库的定义是任何体现无服务器应用程序核心原则的数据库

  • 无服务器管理
  • 自动弹性扩展
  • 内置弹性和容错
  • 基于消费的计费
  • 即时访问和始终可用

数据库本身的确切味道并不重要,无论是CRM应用还是RDBMS或OLAP或其他什么:任何自称为无服务器的数据库必须具备这五个基本要素。虽然有很多不同的类型,但最复杂的是提供参考完整性、连接、二级索引等的关系型数据库,以及保证ACID事务。这就是为什么无服务器关系型数据库必须满足额外的要求,才能获得使用 "无服务器 "这一名称的权利。

每个应用都需要数据,而SQL是数据的语言。如果你想与数据互动,在某些时候,你至少会遇到一点SQL或其方言之一。提供优雅的SQL可能不是每个无服务器数据库的要求,但它是关系型数据库的核心。如果你想要一个无服务器的关系型数据库,那么它是一个分布式的SQL数据库才有意义。

那么,真正的无服务器SQL数据库是什么样子的呢?真正的无服务器SQL数据库又增加了三个基本要求。

  • 分布式架构
  • 地理上的规模
  • 云中的简单SQL API

当我们把所有这九个要素组合在一起时会发生什么?我们有一个数据库,它可以让你实现原生规模和全球覆盖,而没有分布式数据库工作的复杂性--同时又能以直接熟悉的SQL方式工作。

无服务器SQL数据库的特点是什么?

为什么这些要求如此重要,它们如何在无服务器SQL数据库中协同工作,以及--最重要的是--当我们看到这些功能时,我们如何知道它们?

让我们来看看无服务器应用程序的基本要求,以及它们在无服务器SQL数据库中是如何具体交付的。

标准免责声明:尽管名字叫无服务器应用程序,但它确实依赖于服务器。配置、容量规划、扩展、维护、更新--所有这些肯定还在发生,但现在是在幕后。重要的是,作为用户,我们并不是做这些事情的人。我们所负责的只是逻辑。我的意思是,是否有任何开发人员真诚地喜欢管理他们的服务和应用程序?

  1. 内置的弹性和容错。

真正的无服务器SQL数据库可以在节点、区域、甚至地区的中断中存活下来,所以你永远不需要担心你的数据不可用。即使发生这些问题,它也能在后端故障中幸存,并保证数据的正确性。它甚至可以让你在数据库的多个实例中实施在线模式变更和滚动软件更新,所有这些都没有问题,同时始终保持可用。它消除了计划内和计划外的停机时间。

无服务器的SQL数据库会自动扩大和缩小规模以满足需求。这包括在不使用数据库时,将数据库的规模缩小到零,而在有查询出现时,又能立即启动。你不需要担心你的数据库是否能处理突然激增的读和写,因为扩展会自动发生。

  1. 基于消费的计费。

真正的无服务器数据库自动实现了数据需求的弹性,因此你只需在使用资源时为其付费。基于消费的计费方式使成本尽可能地低。此外,无服务器数据库还允许你设置限制,这样你就不会超出预算。

  1. 分布式架构。

无服务器数据库也预示着固有的分布式数据库架构。分布式SQL是一个单一的逻辑数据库,部署在一个数据中心的多个物理节点上,或跨越许多数据中心。为了实现无服务器应用(包括数据库)的两个基本原则--弹性规模和原生弹性,真正的无服务器数据库根据定义需要是分布式的。

任何无服务器数据库都应该在地理上进行扩展。真正的无服务器SQL数据库可以实现真正的多区域数据和自动地理分区,在全球范围内动态地移动数据。这让开发人员既能最大限度地减少延迟,又能在数据层中轻松解决区域数据归属要求(如GDPR)--而不是试图在应用层中处理这个问题。

  1. 云中的简单API

SQL是数据的语言,也是所有应用逻辑的默认语言。开发人员不应该为了使用数据库而需要学习一种新的语言。与数据库的交互应该像一个简单的REST API和你最喜欢的SQL方言一样简单和熟悉。

(要求5必然会引起一些争论。有一些SQL数据库声称自己是无服务器的,尽管它们不是分布式的。相反,它们基本上是成千上万的Postgres碎片,由SRE手动添加和删除。这就是你的自动化。此外,它们是分片的--它们不互相交谈!所以你的固有的恢复能力也没有了。- 所以你固有的弹性和可扩展性也随之消失。最终,无服务器的SQL数据库意味着永远不必说 "我分片了")。

那么,一个真正的无服务器SQL数据库最终能让你做什么?

无服务器SQL的好处

无服务器SQL是数据库的下一个逻辑演进,也是我们在云端管理数据方式的未来。这意味着,除了上述六个基本要素之外,真正的SQL数据库必须提供更多的东西。

  • ACID事务。你不应该为了规模而牺牲一致性。无服务器SQL数据库必须在不牺牲速度的情况下提供符合ACID标准的交易一致性,无论你在什么规模下运行。保证原子性和一致性、可序列化的隔离、持久化的数据--所有这些都保证是正确的(对核代码来说也足够好)。
  • 地理复制。无服务器SQL数据库通过地理复制提供数据的持久性:在一个主要位置创建或更新数据,然后将其异步复制到多个分布式位置,从而使相同的数据在所有位置独立存在(并得到备份)。
  • 多云能力。一个真正的无服务器SQL数据库允许同时部署到多个云的操作灵活性。这可以让你在不影响可用性的情况下最大限度地减少延迟,甚至在面对云提供商的服务故障时也是如此。

最终,当我们把所有这些东西放在一起的时候,开发人员就会得到一个数据库,它可以消除数据库部署和操作的复杂性,这样我们就可以直接开始构建很酷的东西。

无服务器SQL数据库能为开发者做什么?

对于开发者来说,其价值在于平台的简单性和便捷性。我怎样才能与这个东西互动,而不需要处理确保它的运行或确保它的扩展,确保它部署在正确的地方?

无服务器承诺的价值--最大限度地减少围绕管理服务器和基础设施以及任何应用程序的后台(非商业价值)部分的重复性和人工工作--是令人难以置信的,尽管在很长一段时间里,并不清楚这个未来何时会完全到来。

现在,我们离无服务器的未来又近了一步,无服务器的SQL数据库可以将分布式数据库的大部分复杂性抽象为云中的简单REST API。这个未来为开发者提供了自动扩展、弹性和交易一致性,而且操作费用极少,基于消费的计费模式可以最大限度地降低和保护成本。有趣的是,虽然SQL通常是表、行和连接的代名词,但这些好处也可以延伸到分析数据。

有趣的是:无服务器SQL并不只适用于关系型数据库!

从根本上说,无服务器SQL数据库只是让你使用SQL语言处理分布式数据,而不需要操作服务器、管理维护和容量规划等。因此,通过对数据湖或blob存储中的非结构化数据运行SQL查询,可以将无服务器SQL应用于分析数据--无需首先将数据注入NoSQL数据库,如MongoDB或Cassandra,通常选择用于分析数据工作负载。无服务器SQL的价值在于它可以为分析数据提供快速而灵活的洞察力。例如,与离线数据进行交互,而不需要建立一个管道,或者在转换和保存到其专用数据库之前检查刚刚沉入存储的新数据。

无论你的数据是什么味道,无服务器SQL数据库将无服务器的简单性、传统RDBMS的可靠熟悉性和云的全球规模结合起来。 无服务器SQL消除了分布式架构的操作复杂性,让你只负责一件事:你的数据。无服务器SQL数据库减少了操作的开销并使之自动化,因此开发人员可以专注于真正重要的工作:驱动和区分我们应用程序的数据。

准备好亲自尝试无服务器SQL了吗?立即开始使用CockroachDB无服务器技术吧