点 Redis 8 来了——而且它是开源的

了解更多

什么是无数据库 (DBLess) 架构——以及为什么它是未来

您可能在想:为什么像 Redis 这样的数据库公司要谈论无数据库 (DBLess) 架构?它又是什么?这是很自然的,但在深入细节之前,我们先来看看这种全新架构背后的新思维方式。 

为此,我想稍作绕道,谈谈被称为第一性原理的思维方式。它迫使你独立思考,而不是只遵循传统,而是质疑一切。 

第一性原理的要旨在于,除非你面对的是自然法则(例如万有引力定律),否则每一个系统或概念都是人造的,可能存在效率低下的地方。此外,时间的推移或技术创新可能已经证明某些概念已经过时。这意味着你应该定期质疑传统的系统或概念,看看是否能构建出更好的东西。 

为了找出这些低效之处,你必须采用系统化和科学化的方法,将其分解成更小的部分,以触及基本事实。然后,看看时间的推移或新技术的发明是否已经淘汰了其中的任何一个部分。如果确实如此,那么你就有机会构建一个更新、更好的系统。 

从根本上说,无论人们是否知道,大多数社会、技术和经济变革的发生,都源于人们运用第一性原理进行思考并挑战传统。

来源:参见底部的参考链接 

在上面的视频中,埃隆·马斯克解释了他是如何研究电池原材料,并将成本从 700 美元降低到 70 美元的。

我们再来看一个第一性原理思维的例子,因为这更容易解释:汽油车对比电动车。

汽油车对比电动车

我们都知道可以使用电池来驱动汽车。 

但是,汽油车虽然也有电池,但它并非用于驱动汽车。它使用电池来启动发动机、空调、音响系统、车灯、传感器、门锁等等,但不是用来驱动汽车。相反,它依赖于内燃机 (ICE) 来运行汽车。

事实证明,内燃机汽车的效率非常低。产生的能量中只有约 16% 至 25% 真正传递到车轮。另一方面,电动汽车约有 90% 的能量传递到车轮!电动汽车在环保、维修成本等方面也具有显著优势。 

如果您从第一性原理的角度来看,即使如今建造的大多数汽车仍是汽油车,但基本事实是它们使用的是一个低效的系统。 

现在,如果您看电动汽车,它消除了这种低效,构建了一种新型汽车。在这种情况下,它只是去掉了复杂且效率极低的发动机,取而代之的是一个大型电池和一个电机,直接驱动车轮。 

所以您可以看到第一性原理思维是如何帮助识别低效之处,并创造出更新、更好的系统的。

现在看看这些想法,如果您要创办一家新的汽车公司,您会生产汽油车还是电动汽车?

让我们换个话题,转到数据库领域,看看能否将同样的第一性原理思维应用于该领域。

传统架构对比无数据库 (DBLess) 架构

我们首先看看传统架构。

在传统架构中,你有一个主数据库(如 Postgres, MongoDB 等) 以及一个二级数据库或缓存(例如 Redis 或 Memcached)。主数据库用于存储所有数据并支持 CRUD 操作。缓存数据库用于缓存、会话存储、速率限制、IP 白名单、发布/订阅、队列以及许多其他用途。

仔细想想,即使发生缓存命中,我们仍然将二级数据库用于部分 CRUD 操作。然而,我们却并未将其充分用作主数据库。 

这是否让您想起汽油车的问题?就像它们带有电池为除了驱动汽车之外的许多事物供电一样,传统架构将 Redis 等用于除了作为主数据库之外的一切用途。

您看到其中的相似之处了吗?

如果我们用第一性原理思维来做电动汽车所做的事情呢?就像电动汽车摆脱了发动机一样,如果我们摆脱慢速低效的主数据库,直接将缓存数据库用作主数据库呢?

认识一下无数据库 (DBLess) 架构。 

无数据库 (DBLess) 架构

在这种架构中,您摆脱了主数据库,因此得名 DBLess(无数据库)。取而代之的是,您将以前的二级/缓存数据库用作新的主数据库。

让我们想象一下,我们开始将 Redis 或其他类似的缓存数据库用作主数据库,并完全摆脱了主数据库(例如 Postgres, Mysql, MongoDB 等)。 

重要提示:这仅是架构上的讨论。DBLess 架构并非 Redis 或 Redis Enterprise 所特有的专有架构,它适用于任何类似 Redis 的系统。此外,请记住 Redis 是一个开源项目,因此您可以自行构建或在任何其他提供 Redis 托管服务的云提供商上构建。 

有人正在使用这种架构吗?

是的,当然。正如您所想,我们每天与成千上万的客户合作。尽管 Redis 仍然主要用作二级数据库,但我们已经开始看到这种新的 DBLess 架构在过去几年中出现。随着 Redis 本身变得功能更丰富、更强大,并且越来越多的人获得成功,它开始获得更多发展势头。许多甚至不是我们客户的人,比如 Request Metrics,已经将他们的整个初创公司构建在这种架构之上,并发现它非常成功。

点击图片观看 YouTube 视频。

现在您知道这是真实存在的,让我们看看是什么让它成为可能。

从技术角度讲,这与传统的主数据库相比如何?

让我们以 Redis Enterprise 为例,将其与传统主数据库进行比较。

如您所见,简而言之,它的表现非常好,实际上甚至比一些传统主数据库更优秀。

友情提示:您只需使用 Redis OSS 或其他 Redis 竞品即可采用这种架构。您只需要自行制作一个类似的对比表格,看看它表现如何。

但是,Redis 真的能做到这一点吗?我以为它只是一个缓存?

您是对的。它在大约十年前作为缓存存储起步,并且至今仍非常适合该用途。 

然而,多年来 Redis 和 Redis Enterprise 已显著扩展,整合了传统数据库的几乎所有功能——并且拥有一个与核心 Redis 原生运行的模块生态系统。 

RedisJSON为例(比市场领先者快 10 倍)。您可以使用它,实质上拥有一个实时的类似文档的数据库,或者使用RediSearch 模块(快 4 倍到 100 倍)并实现像 Elastic Search 或 Algolia 那样的实时全文搜索。 

您可以将这些模块中的任何一个用作 Redis OSS 的一部分,并自行托管。

这真的是未来吗?

我们坚信这种架构是未来的趋势,就像电动汽车是未来的趋势一样。尽管电动汽车在所有汽车中所占比例不足 1%,但它们代表着未来。我们认为这只是技术的自然演进。看到我们许多客户的成功,我们认为了解它的人越多,尝试并采用它的人就越多。

这个名字有什么含义?

之所以称为 DBLess(无数据库),是因为我们正在摆脱主数据库,我们认为这是一个有趣且古怪的名字,与“无状态”、“无服务器”、“NoSQL”和“无软件”等概念异曲同工。 

如何开始?

如果您是数十万 Redis 用户之一,那么您很幸运——今天就可以快速进行概念验证!  我们不是要求您添加新东西,而是摆脱效率低下的东西。 

以下是具体方法。

如果您正在构建一个新系统或新功能,那么很简单,直接开始使用这种架构——或者至少进行概念验证,看看它是否适合您。

如果您已经有一个主数据库,那么可以像我们的许多客户那样,采用混合方法。他们继续使用传统架构,但将产品的一部分迁移到新架构中,例如那些已经高度依赖 Redis 或新功能的部分。然后,他们缓慢而稳步地迁移所有功能,直到完全迁移完成。

总结:成为第一性原理思考者

我们希望您成为一个第一性原理思考者。仅仅因为某物是传统上使用的,并不意味着它就是完美的,也不意味着你应该盲目遵循它。我们希望您质疑传统思维,批判性地审视它,并尝试其他替代方案。当您这样做时,您可能会为自己和他人创造出有用的东西。

DBLess 架构提供了一种替代传统思维的方式。与其怀疑它是否有效,不如尝试一下概念验证。它可能会给您带来惊喜!

参考资料

  1. 埃隆·马斯克谈第一性原理