无服务器数据库是未来的趋势。无服务器数据库的兴起意味着开发者可以享受传统关系型数据库的好处--ACID合规性、熟悉的SQL等--以及无服务器数据库的优势--弹性扩展、基于消费的计费、防弹的弹性等。
如果你还不了解情况,这里可以快速概述一下无服务器数据库能带来什么。
这些都不是假想的。在Cockroach Labs,我们刚刚推出了自己的无服务器数据库。CockroachDB Serverless,包括一个慷慨的永久免费层,这意味着你现在就可以免费启动自己的无服务器数据库。
但你为什么要这样做呢?无服务器数据库到底有什么用,什么时候无服务器数据库不是最佳选择?
什么时候使用无服务器数据库?
当你需要自动弹性扩展时
任何数据库都可以 "扩展",也就是说,总是可以在一个问题上投入更多的工程师和机器。但是,这种方法昂贵、低效,而且对于尖峰工作负载或 "意外 "扩展事件(如你的应用程序突然走红)并不奏效。
无服务器数据库解决了这个问题,因为它们可以自动扩大和缩小规模,对需求的变化几乎即时作出反应。当你的应用流量较少时,你的无服务器数据库将缩小规模,从而消耗较少的计算资源(从而使你的成本降低)。当流量激增时,它又会扩大规模以满足新的需求,而不影响应用性能。
自动扩展对任何企业都是有益的,但它对工作负荷剧增或不可预测的企业尤为关键。当你做容量规划时,你不必试图预测未来,你只需启动一个数据库集群,让它为你处理好扩展的问题。
当你需要最小化成本时
传统上,数据库服务器是逐机消耗的。换句话说,你为你的工作负载所需要的服务器支付多少费用。如果你没有使用你所支付的这些机器的所有存储和计算能力,太糟糕了。没有退款。
反之亦然--如果你为固定数量的机器付费,而你的工作负载激增,超出了它们的能力,你的应用程序的性能就会受到影响。
无服务器数据库解决了这两个问题,它根据你的实际存储和计算使用量来收费,而不是按机器来收费。这可以通过使用无服务器架构(更多细节见此)与我们刚才谈到的无缝弹性扩展相结合来实现。
你的数据库所分配的资源会随着需求自动增加和减少,你的成本也会随之增加。CockroachDB Serverless还能让你设置每月的支出限额,以确保你不会超出预算。
底线是,对于许多用户来说,无服务器数据库以较低的成本提供更可靠的数据库性能。无服务器数据库并不总是每个应用程序的最佳选择。但由于这种只为使用而付费的架构,它们是一种有效的方式,可以将各种工作负载的数据库成本降到最低。
同样重要的是要记住,节省的成本往往不仅仅是你在账单上看到的东西。
当你需要最小化操作时
传统上,拥有交易型数据库工作负载的企业(即大多数企业)不得不在两个相当不受欢迎的选项中选择。
使用NoSQL数据库易于扩展,但代价是失去交易一致性,并且必须学习新的专有查询语言;或者保持交易一致性和对SQL的熟悉程度,但要花费大量的运营精力,使用手动分片来扩展。
CockroachDB Serverless等无服务器数据库为开发者提供了摆脱这种选择的途径。通过自动扩展和弹性,它可以提供NoSQL的免操作扩展体验,而不会失去ACID交易和SQL数据库的其他优势。
在实践中,这意味着你和你的团队可以花更少的时间来担心数据库,而把更多的时间用于构建你的应用程序。这使得无服务器数据库成为任何希望专注于开发并消除数据库运营负担的开发团队的一个特别好的选择。
当你在测试、实验或评估的时候
无服务器数据库非常适合轻量级应用、原型、测试和开发环境、辅助项目等,因为它们是自助式的、快速的,而且--至少在CockroachDB Severless的情况下是免费的。
说真的,你可以注册一个账户,建立一个集群,并在五分钟内将其连接到一个简单的应用程序上,而不需要信用卡。
整个过程也是完全自我服务的。这使得它非常适用于实验和辅助项目,因为它允许你在投入一毛钱之前 "踢轮胎 "并解决任何错误。或者,你可以把它作为你常规原型设计过程的一部分,或者在你的CI管道中使用它进行测试。
当你期待开/关使用模式时
CockroachDB Serverless是任何可能产生开关使用模式的应用程序的最佳选择--休眠期与活动水平较高的时期相交替。
不过,这里有一个重要的注意事项:**并不是所有的无服务器数据库都是这样的。**当一个休眠的数据库需要重新启动时,"冷启动 "造成的延迟会导致用户体验不佳。
然而,CockroachDB无服务器特别避免了冷启动的问题,其独特的架构允许休眠数据库消耗零计算资源,但在有请求时仍能立即使用。
这使得它成为任何可能出现开/关使用模式的应用程序的最佳选择,因为它确保你在不需要计算资源时不会消耗(或支付)这些资源。
小公司和初创企业可能在短期内不需要自动扩展和弹性这样的功能。许多公司可以而且确实使用 "老式 "设置,如单实例Postgres或MySQL数据库。但是,仅仅因为你可以,并不一定意味着你应该。
如果你希望在长期内进行扩展,就没有理由推迟迁移到云原生、弹性扩展的无服务器数据库的进程。随着你的应用程序的复杂性增加,迁移的过程--或试图将云和扩展功能改造成一个并不适合这两方面的数据库--只会变得更加痛苦。从一开始就使用一个可以随着公司发展而扩展的数据库要容易得多,即使你预计在最初的几年里没有什么扩展的需要。
值得一提的是,选择像CockroachDB Serverless这样的下一代云数据库,也有助于吸引优秀的工程师。最优秀的工程师希望与新的、令人兴奋的技术一起工作。让开发人员有机会使用CockroachDB这样的无服务器分布式SQL数据库,可以让你的招聘信息在众多的MySQL、Postgres和Oracle选择中脱颖而出。
何时不使用无服务器数据库。
无服务器数据库很好,但它们并不总是正确的解决方案。以下是一些选择无服务器数据库可能是错误的情况。
当你需要对硬件进行控制时
无服务器数据库是一个可管理的解决方案,这意味着你不必担心细节问题,比如数据的精确存储方式,或者自动扩展的运作方式。对于许多开发者来说,这种简单性是一个卖点,因为它允许他们专注于构建他们的应用程序。
但这确实意味着你不能完全控制一些细节,而且由于它是基于云的,你不能控制硬件。这可能排除了无服务器数据库作为某些公司的选择,这些公司可能需要一个可以控制硬件的内部解决方案(例如,出于安全或监管的原因)。
当你需要一个深入的功能集时
无服务器数据库很了不起,但它们也相对较新。这意味着目前无服务器数据库的功能往往比非无服务器数据库的功能少。例如,在当前的测试版中,CockroachDB Serverless目前不支持CockroachDB其他地方的一些多区域功能。
当然,这只是一个暂时的劣势。很快,无服务器数据库将达到非无服务器产品的成熟度和功能深度。但是,如果你现在需要一个具有多区域功能的数据库,那么你可能更适合使用CockroachDB Dedicated这样的非无服务器选项。
当安全问题排除在多租户之外时
CockroachDB Serverless和其他多租户无服务器数据库当然包括安全措施,将租户的活动和他们的数据相互隔离。但归根结底,租户仍然在共享同一台机器,这意味着无服务器数据库通常不是需要高度安全的工作负载的最佳选择。
对于这些高安全性的工作负载,CockroachDB Dedicated等专用解决方案是一个更好的选择,它提供了许多与无服务器数据库相同的优势
当其他选择提供更好的性能或成本更低时
虽然无服务器数据库是许多用例的最佳选择,但并没有一个 "完美 "的数据库解决方案能满足所有可能的用例/工作负载。在某些情况下,像CockroachDB Dedicated或CockroachDB Self-Hosted这样的解决方案会比无服务器更受欢迎。
当然,Serverless的好处之一是它可以免费提供自助服务。因此,虽然我们无法在本文中涵盖所有可能的用例,但你可以启动一个免费的集群,自己进行试验,看看无服务器数据库是否是适合你的团队的解决方案。