/

在哪里托管PostgreSQL数据库

在哪里托管PostgreSQL数据库

让我们看看一些托管PostgreSQL数据库的选择。

当涉及到为你的应用程序托管PostgreSQL数据库时,你有很多选择,哪一种对你来说是最完美的取决于你的技能,你是否愿意用时间换金钱(托管解决方案或自托管解决方案)以及你的偏好。

本地数据库

快速 免费 需要设置 仅限本地主机

在本地主机上开发应用程序时,本地数据库是你的最佳选择。

如果你使用本地数据库,你的应用程序在本地主机上会非常快,因为应用程序不需要在互联网上查找数据。

缺点是需要进行初始设置,但是你可以通过在Google或YouTube上搜索“在macOS上安装PostgreSQL”找到操作系统特定的许多教程,我有一篇关于macOS安装PostgreSQL的指南

这很重要:本地数据库只能在本地主机上工作,因为你的计算机无法从互联网访问,所以当你想要部署到Vercel、Netlify或任何其他具有公共访问权限的地方时,你需要创建一个新的远程数据库。

下面列出的所有其他选项将不会有这个问题,它们都可以从互联网上的任何地方访问。

Railway

免费 无需设置 无限项目

Railway是一个很好的选择,可以快速启动和运行远程数据库。

免费版开始使用,没有限制可以创建的项目数量。

问题在于,在完成几个项目后,你可能会超过免费计划的限制,因此稍后你将不得不付费,否则你的应用程序将无法工作。

Railway有一个漂亮的用户界面,简单易用,但在免费计划下可能会有点慢(当然,因为他们必须在支出上“节约”)。

DigitalOcean VPS

$5/月 需要设置

这是在互联网上拥有自己的服务器和自己的数据库的最佳选择之一。

缺点是你需要学习如何设置一个Linux服务器,并进行其管理。如果这不让你激动,那就跳过这个选项,因为这可能会带来真正的困扰和时间浪费。

提示:DigitalOcean还提供了一个更易于使用的托管数据库(但也更昂贵,节省时间花费更多),请参阅以下信息。

DigitalOcean文档上有一些很好的指南:

如何在Ubuntu 20.04上安装PostgreSQL[快速入门] | DigitalOcean

我之所以提到DigitalOcean,是因为我使用并喜欢那个平台(你可以使用我的推荐链接获得100美元的免费信用,供你在接下来的两个月使用),但你也可以选择任何其他VPS公司。

好处是,如果你有自己的VPS用于数据库,你也可以在此上面托管Next.js应用程序。这有一个好处:应用程序和数据都在同一个服务器上。

对于所有其他选项,你的数据将存储在“云中的某个地方”,你的数据库将位于“云中的其他某个地方”,这会导致速度下降。

你可以根据需要提高服务器能力,所以你的5美元VPS的成本会更高一些,但随着需求增长,性能也将更好。

DigitalOcean 托管数据库

付费 $15/月 无需设置

我已经提到了DigitalOcean,关于如何托管你自己的VPS。

这是不同的 - 他们托管数据库,而你不需要设置或维护任何内容。

我认为这是一个很好的解决方案,用于托管所有应用程序,而不产生额外的费用(如Railway),并且无需担心服务器、维护、被黑客攻击等问题。

这是一个费用高昂的解决方案,但出于这个原因,它很方便(你可以使用我的推荐链接获得100美元的免费信用,供你在接下来的两个月使用)。有趣的是,你是按小时付费的,所以你可以先测试一下,然后关闭它。

他们提供了很棒的功能,如每日备份,他们拥有连接池,可以帮助避免Prisma耗尽数据库连接限制

Supabase

2个项目免费 连接池 无需设置

Supabase是一个非常有趣的项目。它不仅仅是“托管数据库”,而是你可以将其作为这样使用。它是建立在PostgreSQL之上的应用程序开发平台,他们提供了一个免费的连接池,可以帮助避免Prisma耗尽数据库连接限制

免费帐户允许最多2个项目,所以值得一试。你也可以在一个新项目上工作,完成后删除旧项目。

Supabase定位自己为Firebase的替代产品,除了数据库之外,你还有身份验证、订阅等更多功能可以稍后探索。

注意:Supabase也可以自托管,这样你的2个项目限制将消失,但你需要管理自己的基础设施。

AWS RDS for PostgreSQL

付费 无需设置

如果你已经在使用AWS,那么这是一个最佳的解决方案。AWS的免费层应该在你的第一年中包括这个服务。

与其他托管解决方案相比,这个解决方案的设置要复杂一些,因为它是AWS提供的,但它也是一种托管解决方案,所以你不需要担心管理自己的服务器。

与DigitalOcean类似,你还可以使用AWS EC2在Amazon AWS上托管你的VPS,并在上面安装PostgreSQL。