从边缘连接数据库
#database #edge #deno #cloudflareworkers

什么是边缘

云不是新事物,您不必担心云上的基础架构。例如,如果您想在US-West-2中部署代码。您无需购买机器并为​​其配置网络。只需支付US-West-2中的EC2,就可以将代码部署为您需要做的一切。但是等等,这是一个真正的Cloud

为什么我需要先购买EC2?您可以在没有服务器的情况下直接编写和部署代码的图像。这是无服务的。

基于无服务器,为什么我需要注意代码正在运行的位置?图像代码不仅可以在US-West-2中运行,而且还可以在任何地方运行 - 更靠近代码触发器。边缘来了。

CloudFlare工人,Vercel Edge函数和NetLify Edge功能都提供了边缘,这使您可以实现低延迟的HTTP API,而无需任何其他基础架构。而且您的代码可以靠近您的客户。

Edge实际上是边缘计算,它是一种侧重于使计算尽可能接近数据源以减少延迟和带宽的使用。

为什么很难连接边缘的数据库

在谈论why it is hard之前。我们最好了解边缘的工作原理。

边缘有两个重要部分:

  1. 边缘网络:您的代码在任何地方运行,这意味着您的代码将被复制到全球网络(边缘网络)的一堆节点中。
  2. 边缘运行时:代码的运行时。例如,Java在JVM上运行,JavaScript在节点上运行。

您是否可以连接到数据库取决于边缘运行时。

提供商 边缘运行时
Cloudflare Cloudflare工人
vercel Cloudflare工人
Netlify deno
supbase deno

CloudFlare工人是用JavaScript编写的,并使用V8 JavaScript引擎(来自Google Chrome)执行。 DENO还提供了Edge运行时,超出了V8 JavaScript引擎。他们不选择在node.js顶部构建的主要原因在于安全性不是被设计为沙盒。

因此,CloudFlare工人和DENO不支持数据库JavaScript驱动程序使用的所有node.js API。相反,它们的API基于Web平台API(API通常遵循规格,应与Chrome和Firefox中的实现相匹配)。还有WinterCG,旨在在浏览器外使用Web Platform API,即服务器(DENO / NODE.JS)或EDGE RUNTIMES(Cloudflare Workers / deNo)。< / p>

换句话说,我们无法使用Cloudflare工人或Deno直接使用数据库驱动程序。

数据库提供商的努力

尽管TCP连接支持不足,但Edge Runtimes通常对Websocket和HTTP有更好的支持。因此,许多云数据库提供商使用无服务器驱动程序或数据服务连接到数据库。

提供商 连接方法
行星尺度 serverless driver(http)
霓虹灯 serverless driver(http和websocket)
TIDB无服务器 serverless driver(HTTP)和数据服务
supbase serverless driver(HTTP)
mongo Realm Web SDK

边缘提供商的努力

数据服务或无服务器驱动程序的局限性很明显。作为无状态协议,HTTP的性能与传统的TCP连接到数据库时的性能不同。例如,很难在HTTP之外提供transactions

因此,我认为更好的方法是在边缘运行时进行优化。让我们看看边缘提供商为此所做的。

不是

除了Web Platform API外,DENO还提供了全局API,可从文件,打开的TCP插座,服务器HTTP和Execute子流程等读取。基于这些API,有deno drivers1111111111111来自Deno Edge运行时。

更重要的是,Deno对节点兼容性付出了很多费用。 DENO支持导入节点和NPM模块,您可以在DENO中导入并使用node-mysql2,但是节点兼容性并不是一件容易的事。例如,在使用Node-Mysql2的TLS时发生错误。它还有很长的路要走。

Cloudflare工人

CloudFlare工人还提供compatibility_flags = [ "nodejs_compat" ]配置的node compatibility。但这并不意味着您可以使用所有节点API。数据库驱动程序仍无法在Cloudflare工人中使用。

最近,CloudFlare工人提供了用于创建TCP插座的插座API。同时,他们在node-postgres中添加了插座API,这意味着您可以直接在Cloudflare工人中使用此驱动程序。

结论

本文介绍了什么边缘以及为什么很难连接到边缘的数据库。本文还向您展示了数据库提供商和边缘提供商的努力。相信在不久的将来连接到边缘的数据库将不再是麻烦。

参考