数据库知识篇

什么是云数据库BaaS

不想自己装数据库?

传统方式用数据库,你需要:安装数据库软件、配置端口和权限、管理备份、处理扩容……对新手来说门槛不低。云数据库 / BaaS 帮你把这些全搞定,你只管用。

💡 类比:自己装数据库就像自己买服务器放家里,云数据库就像用云盘——注册账号就能用,不用操心硬件。

BaaS = Backend as a Service(后端即服务)

加载图表中...

主流云数据库 / BaaS 平台

平台底层数据库特点免费额度
SupabasePostgreSQL开源、功能全面✅ 慷慨
PlanetScaleMySQL分支管理、无停机迁移✅ 有
NeonPostgreSQLServerless、按用付费✅ 有
FirebaseNoSQLGoogle 出品、实时同步✅ 有
MongoDB AtlasMongoDB官方托管、全球分布✅ 有
阿里云 RDSMySQL/PG国内首选付费
腾讯云MySQL/PG国内常用付费
加载图表中...

Supabase:开源的 Firebase 替代品

Supabase 是目前最受欢迎的 BaaS 平台之一,基于 PostgreSQL:

加载图表中...

使用 Supabase

# 安装 SDK
npm install @supabase/supabase-js
// lib/supabase.ts
import { createClient } from "@supabase/supabase-js";

export const supabase = createClient(
  process.env.NEXT_PUBLIC_SUPABASE_URL!,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY!
);
// 查询数据
const { data: users, error } = await supabase
  .from("users")
  .select("*")
  .order("created_at", { ascending: false });

// 插入数据
const { data, error } = await supabase
  .from("users")
  .insert({ name: "张三", email: "zhang@mail.com" })
  .select();

// 更新数据
const { data, error } = await supabase
  .from("users")
  .update({ name: "张三丰" })
  .eq("id", 1);

// 删除数据
const { error } = await supabase
  .from("users")
  .delete()
  .eq("id", 1);

Supabase 的数据流

加载图表中...

BaaS vs 自建后端

对比BaaS(如Supabase)自建后端
开发速度⚡ 极快🐢 较慢
学习成本
灵活性中(受平台限制)高(完全自定义)
成本免费起步,用量大后收费服务器费用
运维平台负责自己负责
适合个人项目、快速原型、MVP大型企业项目
加载图表中...

Supabase 用户认证

Supabase 内置了完整的用户认证系统:

// 注册
const { data, error } = await supabase.auth.signUp({
  email: "user@example.com",
  password: "password123",
});

// 登录
const { data, error } = await supabase.auth.signInWithPassword({
  email: "user@example.com",
  password: "password123",
});

// 获取当前用户
const { data: { user } } = await supabase.auth.getUser();

// 登出
await supabase.auth.signOut();

// 第三方登录(GitHub)
const { data, error } = await supabase.auth.signInWithOAuth({
  provider: "github",
});

环境变量配置

# .env.local
NEXT_PUBLIC_SUPABASE_URL=https://xxxxx.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...

NEXT_PUBLIC_ 前缀的环境变量可以在前端使用,但 ANON_KEY 是公开的,安全性由 Supabase 的行级安全策略(RLS)保证。

🎯 AI编程小贴士:想快速搭建一个有用户系统的全栈应用?告诉 AI"帮我用 Next.js + Supabase 实现用户注册登录和文章管理",它会帮你从创建 Supabase 项目到前端页面一步步完成。

小结

  • 云数据库/BaaS 帮你免去安装、配置、运维数据库的麻烦
  • Supabase 是最推荐的 BaaS 平台,基于 PostgreSQL,功能全面
  • Supabase 提供数据库、认证、存储、实时订阅等一站式服务
  • BaaS 适合个人项目和快速原型,大型项目可以考虑自建
  • 不确定怎么选?先用 BaaS 快速上线,后续再迁移