嘟嘟社区

Cloudflare即将可以托管sqlite


https://blog.cloudflare.com/introducing-d1/

我们在2017年宣布了Cloudflare Workers,允许开发人员访问我们网络上的计算。我们对这种解锁的可能性感到兴奋,但我们很快就意识到——大多数现实世界的应用程序都是有状态的。从那时起,我们交付了KV、耐用对象和R2,让开发人员可以访问各种类型的存储。

今天,我们很高兴地宣布D1,这是我们的第一个SQL数据库。

虽然对测试版访问的等待时间应该不会太久——我们最早会在6月开始让人们进来(在这里注册),但我们很高兴分享一些关于即将到来的细节。

认识D1,为Cloudflare Workers设计的数据库

D1建立在SQLite上。SQLite不仅是世界上最无处不在的数据库,每天有数十亿台设备使用,也是有史以来第一个无服务器数据库。惊讶吗?SQLite在时代如此领先,在该术语获得云服务的内涵之前,它自称为“无服务器”,最初的意思是“不涉及服务器”。

由于Workers本身在服务器和客户端之间运行,并受到为客户端构建的技术的启发,SQLite似乎非常适合我们首次进入数据库。

那么,你可以用D1构建什么?真正的答案是“几乎任何事情!”,这可能对激发想象力没有多大帮助,那么现场演示怎么样?

D1演示:Northwind Traders

您可以通过尝试我们在这里运行的演示:northwind.d1sql.com来查看D1的实际运行示例。

如果你想知道“谁是北风交易员?”,北风交易员就是“你好,世界!”如果你愿意,可以去数据库。微软将与Microsoft Access一起提供的示例数据库,用作他们自己的教程。它于25年前于1997年首次出现,您可以在互联网上找到许多使用它的例子。

这是一个典型的业务应用程序,具有现实的模式,具有许多外键,跨越许多不同的表——这是对数据的真正永恒表示。

Queso Cabrales最近的订单是什么时候发货的,它在哪艘船上?你可以很快发现。有人打电话来点柴吗?好消息是,Exotic Liquids仍有39台库存,每台仅需18美元。

我们欢迎您玩耍和闲逛,并回答您对Northwind Trading业务的任何问题。

Northwind Traders演示还具有仪表板,您可以在其中找到有关幕后发生的D1 SQL查询的详细信息和指标。

你可以用D1构建什么?

然而,回到演示前的原始问题,您可以使用D1构建什么?

虽然您可能没有自己运行Northwind Traders,但您可能正在某个地方运行一个非常相似的软件。即使在Cloudflare服务的核心也是一个数据库。一个充满表格、实例化视图和大量存储过程的SQL数据库。每次客户与我们的仪表板交互时,他们最终都会改变该数据库中的状态。

现实是,数据库无处不在。它们在您正在阅读的网页浏览器中,在手机上的每个应用程序中,以及银行交易、旅行预订、商务应用程序的存储空间中。我们使用D1的目标是帮助您构建从API到丰富而强大的应用程序的任何东西,包括电子商务网站、会计软件、SaaS解决方案和CRM。

您甚至可以将D1与Cloudflare Access相结合,并创建仅安全锁定在您组织中的人员的内部仪表板和管理工具。真的,世界就是你的牡蛎。

D1开发人员体验

我们将在帖子中进一步讨论功能和即将推出的功能,但其核心是D1的优势是开发人员体验:允许您在瞬间从无到有的应用程序。回想一下您使用过的一个工具,它让开发感觉很神奇——这正是我们希望与Workers和D1一起开发的感觉。

为了让你了解它,以下是D1入门的样子。

创建您的第一个D1数据库

使用D1,您只需单击几下即可创建数据库——定义表,插入或上传一些数据,除非您需要,否则无需记住任何命令。

当然,如果命令行是您的果酱,本周早些时候,我们宣布了新的和改进的牧马人2,这是争吵和部署工人的最佳工具,很快也是您部署D1的工具。Wrangler还将提供原生D1支持,因此您可以通过几个简单的命令创建和管理数据库:

从您的员工访问D1

将D1附加到您的Worker就像创建新绑定一样简单。您附加到Worker的每个D1数据库都附加在env参数上自己的绑定:

或者,对于稍微复杂的示例,您可以使用路由器和参数化查询安全地将参数从URL传递到数据库:

那么,你能从D1中得到什么?

首先,我们希望您能够使用D1开发,而无需担心成本。

在Cloudflare,我们不相信将您的数据扣为人质,因此D1与R2一样,将免费出口费用。我们的计划是通过对基本存储和执行的数据库操作收费来为存储产品定价D1,就像我们为存储产品定价一样。

但是,同样,我们不希望我们的客户担心成本或如果他们的业务起飞会发生什么,他们需要更多的存储空间或有更多的活动。我们希望您能够构建您梦想的简单或复杂的应用程序。我们将确保D1的成本低于可比的集中式解决方案,性能更好。无服务器和像Cloudflare这样的全球网络的承诺是由我们的架构驱动的性能和更低的成本。

以下是D1中功能的小预览。

阅读复制

使用D1,我们希望轻松地将整个应用程序的状态存储在一个地方,以便您可以在整个数据集中执行任意查询。这就是关系数据库如此强大的原因。

然而,我们认为强大不应该是繁琐的同义词。大多数关系数据库都是巨大的、整体的东西,配置复制并不微不足道,因此一般来说,大多数系统的设计都使所有读写流回单个实例。D1采取了不同的方法。

有了D1,我们希望从您手中取消配置,并利用Cloudflare的全球网络。D1将创建数据的只读克隆,靠近用户的位置,并不断更新更改。

批次

应用程序中的许多操作不只是生成单个查询。如果您的逻辑在用户附近的Worker中运行,但每个查询都需要在数据库上执行,那么逐一通过电线发送它们效率极低下。

D1的API包括批处理:无论在哪里可以发送单个SQL语句,您也可以提供它们的数组,这意味着您只需要一次HTTP往返即可执行多个操作。这非常适合需要原子执行和提交的事务:

嵌入式计算

但我们正在走得更远。使用D1,可以定义直接在数据库旁边运行的Worker代码块,为您提供完全控制和最大性能——每个请求首先击中用户附近的Worker,但根据操作的不同,可以移交给部署在副本或主D1实例旁边的另一个Worker以完成其工作。

备份和冗余

很少有比存储在主应用程序数据库中的数据这样重要的事情了,因此D1将通过一键恢复过程定期自动将数据库的快照保存到Cloudflare的云存储服务R2。而且,由于我们正在建立持久对象的冗余存储,您的数据库可以根据需要物理移动位置,从而在几秒钟内从最具灾难性的问题中自行愈合。

导入和导出数据

虽然D1已经支持SQLite API,使您可以轻松编写查询,但您可能还需要数据来运行它们。如果您没有创建全新的应用程序,您可能需要从其他来源或数据库导入现有数据集,这就是为什么我们将努力允许您将自己的数据带到D1。

同样,SQLite的优势之一是其可移植性。如果您的应用程序有一个专用的阶段环境,例如,您将能够将该数据的快照克隆到本地机器上进行开发。我们将增加更大的灵活性,例如能够为您的Pages项目上的每个新拉取请求创建一个带有一组测试数据的新数据库。

下一步是什么?

如果我们没有得出“我们才刚刚开始!”的结论,这不会是Cloudflare的公告——这是真的!我们对我们全球网络上的数据库打开的所有强大可能性感到非常兴奋。

您是否已经在考虑要使用D1和Workers构建什么?一样。告诉我们您的详细信息,我们将尽快为您提供访问权限——从2022年6月开始,请留意我们的测试版邀请!

强大,cf可玩性越来越高了
cf托管loc全站指日可待