如何迁移到PlanetScale的无服务器数据库?

网友投稿 680 2023-03-27

本站部分文章、图片属于网络上可搜索到的公开信息,均用于学习和交流用途,不能代表睿象云的观点、立场或意见。我们接受网民的监督,如发现任何违法内容或侵犯了您的权益,请第一时间联系小编邮箱jiasou666@gmail.com 处理。

如何迁移到PlanetScale的无服务器数据库?

我选择PlanetScale的原因如下:

数据库分支:我可以使用心智模型与Git相同的数据库。每次更改我的数据库模式,我都打开部署请求。然后,我可以将这些更改合并回到主数据库分支中。Prisma支持:与Prisma结合使用,可以很轻松地处理数据库迁移。无连接:由于PlanetScale是无服务器,因此可以承受数千个同时连接。几乎可以把这认为是无连接,因为我不需要担心池化或其他常见的反对意见。10秒内部署:我在测试13个数据库后,发现PlanetScale部署速度最快。使用它几周并监控性能后,我看到API平均在大约150ms内解析(见下面的结果)。

Firebase和Redis

我的网站以前使用Google Firebase和Redis用于实时博文阅读量和留言簿。决定选择这些技术主要是想学习一下。Firebase和Redis(借助Upstash)都很易于上手,无需思考即可扩展,在无服务器环境下运行顺畅。但是我想转而使用基于SQL的数据库(MySQL或PostgreSQL),以获得新的学习体验。

重建SQL

我发现自己在SQL有内置功能的地方编写JavaScript。比如说,我使用Firebase获取 JSON对象阅读量,然后将这些值相加以找到总的阅读量。

const snapshot = await db.ref('views').once('value'); const views = snapshot.val();  const allViews = Object.values(views).reduce((total, value) => total + value);  With SQL, you can use SUM() instead.   SELECT SUM(count) as total  FROM views;

排序同样如此。以前我使用JavaScript sort,现在使用ORDER BY。虽然Firebase确实有类似功能,但我并不使用它。

SELECT * FROM guestbook ORDER BY updated_at DESC;

SQL是成熟的技术。它已存在多年,会继续存在多年。我在以前的工作中用过它,但仍觉得可以更深入地理解它。我也喜欢使用PostgreSQL(推荐Supabase),强烈推荐考虑该解决方案。

迁移现有数据

可能有更好的方法来迁移,但我将数据迁移到PlanetScale的自创解决方案如下:

下面是我使用的两个脚本,供参考。

以下是我的PlanetScale模式,用于跟踪博文阅读量和留言簿留言。

CREATE TABLE `views` (    `slug` varchar(128) NOT NULL,    `count` bigint NOT NULL DEFAULT '1',    PRIMARY KEY (`slug`)  )  CREATE TABLE `guestbook` (    `id` bigint NOT NULL AUTO_INCREMENT,    `email` varchar(256) NOT NULL,    `body` varchar(500) NOT NULL,    `created_by` varchar(256) NOT NULL,    `created_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),    `updated_at` datetime(6) NOT NULL DEFAULT CURRENT_TIMESTAMP(6),    PRIMARY KEY (`id`)  )

结果

我一直使用Checkly来监控连接到PlanetScale的生产级API的性能。Checkly让我可以设置警报,那样出现停运或性能降到接受的阈值以下时发出警报。迄今为止,我发现我的Next.js API Routes在us-east的Vercel上部署为无服务器函数时延迟约150ms。

PlanetScale性能小结

如下图所示,与我之前的Firebase实现相比,响应时间显著加快(请注意我何时进行切换)。 此外,拥有一项而不是两项服务可以清理代码,需要较少的环境变量即可连接到每项服务。

原文标题:How to Migrate to PlanetScale’s Serverless Database,作者:Lee Robinson

上一篇:IT运维管理与网络管理的区别
下一篇:告警量数据分析大纲(告警分析报告)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~