Next.js ช่วยให้นักพัฒนาสามารถสร้างแอปพลิเคชันแบบเต็มสแต็กด้วยความสามารถในการแสดงผลฝั่งเซิร์ฟเวอร์ Vercel และ Netlify ช่วยให้พวกเขาเขียน API แบ็กเอนด์ด้วยฟังก์ชันแบบไร้เซิร์ฟเวอร์ คำถามต่อไปคือฐานข้อมูลในอุดมคติสำหรับแอป Next.js คืออะไร ในโพสต์นี้ ฉันจะตรวจสอบฐานข้อมูลที่ได้รับความนิยมในหมู่ชุมชน Next.js ฉันจะแสดงความคิดเห็นว่าพวกเขาเหมาะสมกับโมเดลแบบไร้เซิร์ฟเวอร์อย่างไร สองสิ่งที่ต้องตรวจสอบ:
- การกำหนดราคาแบบไร้เซิร์ฟเวอร์:ราคาเป็นแบบจ่ายต่อการใช้งานหรือไม่ เมื่อฐานข้อมูลไม่ได้ใช้งาน คุณยังต้องจ่ายหรือไม่
- การเชื่อมต่อแบบไร้เซิร์ฟเวอร์:มีการรองรับการเชื่อมต่อแบบ HTTP หรือไม่ ดังนั้นจึงไม่ควรมีปัญหาในการเชื่อมต่อซึ่งมักเกิดขึ้นกับฟังก์ชันแบบไร้เซิร์ฟเวอร์
TLDR
ฉันได้ตรวจสอบ PlanetScale, Supabase, Upstash, Fauna, DynamoDB และ MongoDB Atlas แล้ว ตรวจสอบตารางด้านล่างเพื่อเปรียบเทียบชุดคุณลักษณะของแต่ละผลิตภัณฑ์
คุณลักษณะ | PlanetScale | สุภาเบส | อัพสเตช | สัตว์ | DynamoDB | แผนที่ MongoDB |
---|---|---|---|---|---|---|
API | MySQL | PostgreSQL | รีดิส | สัตว์ | DynamoDB | MongoDB |
ประเภท | เชิงสัมพันธ์ | เชิงสัมพันธ์ | KV Store | เอกสาร | เอกสาร | เอกสาร |
ฟรีเทียร์ | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
การกำหนดราคาแบบไร้เซิร์ฟเวอร์ | 🟡 (ขั้นต่ำ $29) | 🟡 (ขั้นต่ำ $25) | 🟢 | 🟡 (ขั้นต่ำ $22.5) | 🟢 | 🟢 |
REST API | 🔴 | 🟢 | 🟢 | 🟢 | 🟢 | 🟢 |
GraphQL API | 🔴 | 🔴 | 🔴 | 🟢 | 🔴 | 🔴 |
การจำลองแบบทั่วโลก | 🔴 | 🔴 | 🟢 | 🟢 | 🟢 | 🟡 (เฉพาะรุ่นเท่านั้น) |
การแยกฐานข้อมูล | 🟢 | 🔴 | 🔴 | 🔴 | 🔴 | 🔴 |
อัพเดตเรียลไทม์ | 🔴 | 🟢 | 🔴 | 🔴 | 🟢 | 🟡 (ผ่านอาณาจักร) |
อ่านราคา | $1.5 / 10m | $0.09 / GB | $0.2 / 100K | $0.45 / 1m (4KB) | $0.25 / 1m (2KB) | $0.3 / 1m (4KB) |
เขียนราคา | $1.5 / 1m | $0.09 / GB | $0.2 / 100K | $2.25 / 1m (1KB) | $1.25 / 1m (1KB) | $1.25 / 1m (1KB) |
การจัดเก็บราคา | $1.25 / GB | 0.125 เหรียญ / GB | $0.25 / GB | $0.23 / GB | $0.25 / GB | $0.25 / GB |
PlanetScale
- PlanetScale เป็นฐานข้อมูลที่เข้ากันได้กับ MySQL ในฐานะบริการ
- ใช้ Vitess เป็นพื้นหลัง สิ่งนี้ยอดเยี่ยมเพราะ Vitess กำลังถูกใช้งานโดยยักษ์ใหญ่อย่าง Youtube
- PlanetScale แนะนำแนวคิดการแยกฐานข้อมูล คุณสามารถสร้างสาขาและรวมการเปลี่ยนแปลงสกีมาเข้ากับฐานข้อมูลที่ใช้งานจริงได้เช่นเดียวกับ git Afaik คุณลักษณะนี้มีเฉพาะใน PlanetScale
- มีระดับฟรีพร้อมการอ่าน 100m ต่อเดือน
- แผนการชำระเงินเริ่มต้นที่ $29 ส่วนประกอบราคาหลักสำหรับแผนชำระเงินคือ:
- พื้นที่เก็บข้อมูล/เดือน:$1.25/GB หลังจาก 25GB แรก
- การอ่าน/เดือน:$1.50 ต่อ 10m หลังจาก 500m แรก
- เขียน/เดือน:$1.50 ต่อ 1m หลังจาก 50m แรก
- PlanetScale ไม่มี API ที่ใช้ HTTP/REST
ความคิดเห็นของฉัน:
- ในโฮมเพจ มีการกล่าวว่า Trusted By Github, Square, Slack เป็นต้น บริษัทเหล่านี้ใช้ PlanetScale หรือ Vitess หรือไม่ หากบริษัทเหล่านี้ใช้ PlanetScale ก็ถือว่ายอดเยี่ยม ไม่อย่างนั้นฉันไม่รู้สึกดีกับการตลาดแบบนี้
Trusting Vitess
และTrusting PlanetScale
เป็นสิ่งที่แตกต่างกัน - PlanetScale ต้องการให้คุณใช้การเชื่อมต่อแบบ TCP (การเชื่อมต่อ MySQL) นี่อาจเป็นปัญหาสำหรับฟังก์ชันไร้เซิร์ฟเวอร์เนื่องจากไม่มีสถานะ พวกเขากล่าวว่าจำนวนการเชื่อมต่อไม่ใช่ปัญหาสำหรับ Vitess แต่ก็ยังมีขีดจำกัดการเชื่อมต่อสูงสุดสำหรับแผนต่างๆ
- การขาด HTTP/REST API ทำให้ไม่สามารถใช้ PlanetScale จาก Cloudflare Workers และแพลตฟอร์ม Vercel Edge ได้ เนื่องจากไม่อนุญาตการเชื่อมต่อ TCP
- แผนชำระเงิน Planetscale เริ่มต้นที่ $29 ดังนั้นราคาจะไม่ปรับเป็นศูนย์ แม้ว่าคุณจะไม่ได้ใช้ DB คุณต้องใช้ $29 ต่อ db เป็นอย่างน้อย ฉันคิดว่านี่เป็นข้อขัดแย้งกับคำจำกัดความของ
serverless
.
ลิงค์ที่มีประโยชน์:
- ราคาโดยละเอียด
- กวดวิชาการใช้ Planetscale กับ Next.js และ Prisma
- วิดีโอสอนที่ใช้ Planetscale และ Next.js จากนั้นปรับใช้กับ Vercel
- Hackernews แสดงความคิดเห็นเกี่ยวกับการเปิดตัว PlaneScale
สุภาเบส
- Supabase คือชุดเครื่องมือสำหรับนักพัฒนาซึ่งรวมถึงฐานข้อมูล บริการตรวจสอบสิทธิ์ ที่เก็บข้อมูล พวกเขาเรียกตัวเองว่า
Open Source Firebase Alternative
- Supabase ให้บริการฐานข้อมูล PostgreSQL
- เช่นเดียวกับ Firebase Supabase ช่วยให้นักพัฒนารับฟังการเปลี่ยนแปลงในฐานข้อมูลแบบเรียลไทม์
- Supabase จัดเตรียม RESTful API โดยใช้ PostgREST สิ่งนี้มีประโยชน์โดยเฉพาะอย่างยิ่งหากคุณวางแผนที่จะใช้ Supabase ในฟังก์ชันแบบไร้เซิร์ฟเวอร์
- Supabase สามารถใช้ได้ใน Cloudflare Workers ด้วย REST API ตรวจสอบสิ่งนี้
- Supabase Free Tier จำกัดไว้ที่พื้นที่เก็บข้อมูล 500MB และโอนข้อมูล 2GB ต่อเดือน
- คล้ายกับ PlanetScale Supabase มีค่าใช้จ่ายขั้นต่ำสำหรับฐานข้อมูลแบบชำระเงินซึ่งอยู่ที่ $25/เดือน สรุปราคา payg:
- พื้นที่เก็บข้อมูล:0.125 เหรียญสหรัฐต่อ GB ต่อเดือน
- การถ่ายโอนข้อมูล:$0.09 ต่อ GB
ความคิดเห็นของฉัน:
- Supabase ให้บริการฐานข้อมูล บริการตรวจสอบสิทธิ์ พื้นที่จัดเก็บอ็อบเจ็กต์ และ
serverless functions
กำลังมา. ฉันกังวลว่าการเริ่มต้นให้บริการที่มีคุณภาพสูงและแข่งขันกับ Firebase ที่ Google สนับสนุนอาจเป็นเรื่องยาก ฉันหวังว่าพวกเขาจะประสบความสำเร็จ - เช่นเดียวกับ PlanetScale ฉันคิดว่าราคาของพวกเขาไม่ใช่แบบไร้เซิร์ฟเวอร์อย่างแท้จริง แผนการชำระเงินของพวกเขาต้องการค่าใช้จ่ายรายเดือนคงที่ ดังนั้นจึงไม่ลดขนาดเป็นศูนย์
ลิงก์ที่มีประโยชน์:
- ราคาโดยละเอียด
- เริ่มต้นใช้งาน Next.js
- วิดีโอ:Supabase Crash Course
- วิดีโอสอน:Supabase พร้อม Next.js
อัพสแตชเรดิส
- Upstash ให้บริการ Redis เป็นราคาต่อคำขอ
- มีทั้ง Redis และ REST API คุณจึงใช้งานได้ทั้งแบบไร้เซิร์ฟเวอร์และฟังก์ชัน Edge (Cloudflare Workers)
- Upstash มีตัวเลือกระดับภูมิภาคและระดับโลก ฐานข้อมูลทั่วโลกจำลองข้อมูลไปยังหลายภูมิภาค
- มีระดับฟรีที่มีคำสั่งสูงสุด 10,000 คำสั่งต่อวัน การกำหนดราคาแบบจ่ายตามที่คุณกำหนดมีดังนี้:
- คำสั่ง:$0.2 ต่อ 100,000 คำสั่ง
- พื้นที่เก็บข้อมูล:$0.25 ต่อ GB
ความคิดเห็นของฉัน:
- ทั้งเรา (Upstash) และ RedisLabs คิดว่า Redis นั้นทรงพลังเพียงพอสำหรับกรณีการใช้งานจำนวนมาก นอกเหนือจากกรณีการใช้งาน Redis แบบคลาสสิก (การแคช, kv-store) แต่ฉันก็ยังเห็นนักพัฒนาหลายคนชอบฐานข้อมูล SQL เป็นที่เก็บข้อมูลหลัก หากคุณต้องการความสามารถในการสืบค้นที่ซับซ้อน Redis อาจไม่ใช่ตัวเลือกแรกของคุณ
ลิงก์ที่มีประโยชน์:
- ราคาโดยละเอียด
- เริ่มต้นใช้งาน Next.js และ Redis
- เริ่มต้นใช้งาน Next.js Edge Functions
- วิดีโอ:การใช้ Redis แบบไร้เซิร์ฟเวอร์กับ Next.js
สัตว์
- Fauna ให้บริการฐานข้อมูลที่จำลองแบบจากทั่วโลกซึ่งมีความสอดคล้องอย่างยิ่งในฐานะบริการคลาวด์
- มี GraphQL API นอกเหนือจาก Fauna API
- การเชื่อมต่อเป็นแบบ HTTP คุณจึงใช้ Fauna ในฟังก์ชันแบบไร้เซิร์ฟเวอร์ได้โดยไม่มีปัญหาเกี่ยวกับการเชื่อมต่อ
- แผนพื้นฐานที่สุด (รายบุคคล) เริ่มต้นที่ $22.5/เดือน
- ราคาสัตว์:
- อ่าน:$0.45/ล้านหน่วย (4KB)
- เขียน:$2.25/ล้านหน่วย (1KB)
- พื้นที่เก็บข้อมูล:$0.23/GB
ความคิดเห็นของฉัน:
- ความสม่ำเสมอที่แข็งแกร่งระดับโลกมาพร้อมกับต้นทุนด้านประสิทธิภาพที่เพิ่มขึ้น การเขียนมีเวลาแฝงที่สูงกว่าฐานข้อมูลทางเลือกอื่นๆ
- หากคุณจะใช้ GraphQL ก็ถือว่าดีมาก แต่อย่างอื่น FQL นั้นยากสำหรับฉันที่จะเรียนรู้และใช้งาน
- การกำหนดราคาสัตว์มีหน่วยเป็นของตัวเอง (TRO, TWO, TCO) และมีหลายขนาด คุณต้องอ่านบทความเพื่อทำความเข้าใจราคา
ลิงก์ที่มีประโยชน์:
- หน้าราคา
- การใช้ Next.js กับ Fauna
- วิดีโอ:การใช้ Next.js กับ Fauna
แผนที่ MongoDB
- Atlas เป็น MongoDB เป็นบริการที่มีการจัดการซึ่งมีแผนแบบไร้เซิร์ฟเวอร์ แชร์และทุ่มเท..
- ข้อมูล (REST) API ได้รับการประกาศเมื่อเร็วๆ นี้ ซึ่งช่วยให้คุณเข้าถึงฐานข้อมูลของคุณโดยใช้ HTTP
- MongoDB Atlas มีแผน Serverless โดยมีข้อจำกัดบางประการ ราคาของแผนนี้เป็นราคาต่อการดำเนินการ ดังนั้นจึงปรับขนาดเป็นศูนย์ตามที่คาดไว้จากผลิตภัณฑ์แบบไร้เซิร์ฟเวอร์
- การจำลองแบบหลายภูมิภาคใช้ได้กับแผนเฉพาะเท่านั้น
- การกำหนดราคาแบบไร้เซิร์ฟเวอร์:
- การอ่าน:$0.30 ต่อล้านหน่วย (4KB)
- เขียน:$1.25 ต่อล้านหน่วย (1KB)
- พื้นที่เก็บข้อมูล:0.25 เหรียญ/GB ต่อเดือน
ความคิดเห็นของฉัน:
- Serverless Plan และ Data API บอกเราว่า MongoDB Atlas ไม่ได้เพิกเฉยต่อพื้นที่ Serverless แต่โซลูชันทั้งสองอยู่ในระยะแสดงตัวอย่างและจำเป็นต้องได้รับการปรับปรุงเพื่อให้เป็นโซลูชันข้อมูลที่เหมาะสำหรับแอปพลิเคชันแบบไร้เซิร์ฟเวอร์
ลิงก์ที่มีประโยชน์:
- หน้าราคา
- วิธีผสานรวม MongoDB เข้ากับแอป Next.js
- วิดีโอ:การรวม MongoDB เข้ากับแอป NextJS ของคุณ
DynamoDB
- จัดการฐานข้อมูล NoSQL อย่างเต็มรูปแบบด้วยคีย์-ค่าและโมเดลข้อมูลเอกสาร
- การเชื่อมต่อเป็นแบบ HTTP ดังนั้นจึงเหมาะกับแอปพลิเคชันแบบไร้เซิร์ฟเวอร์
- ราคาเป็นราคาต่อการดำเนินการนอกเหนือจากค่าใช้จ่ายในการถ่ายโอนข้อมูล มันจึงปรับขนาดเป็นศูนย์
- โดยค่าเริ่มต้น การอ่านจะมีความสอดคล้องกันในที่สุด คุณยังขออ่านได้อย่างสม่ำเสมอ แต่มีข้อจำกัดบางอย่าง
- คุณสามารถเปิดใช้งานการจำลองแบบหลายภูมิภาคโดยมีค่าใช้จ่ายเพิ่มเติม
- ราคา:
- การอ่าน:$0.25 ต่อหน่วยคำขออ่านหนึ่งล้านหน่วย (2KB)
- เขียน:$1.25 ต่อล้านหน่วยคำขออ่าน (1KB)
- การถ่ายโอนข้อมูล (ออก):$0.09 ต่อ GB
- พื้นที่เก็บข้อมูล:$0.25 ต่อ GB ต่อเดือน
ความคิดเห็นของฉัน:
- สำหรับฉัน DynamoDB API ไม่ได้ใช้งานง่ายเหมือน Redis หรือ MongoDB
- มีปัญหาการล็อคอินของผู้ขาย DynamoDB อยู่ที่ AWS เท่านั้น และคุณไม่สามารถย้ายแอปพลิเคชันของคุณไปยังผู้ให้บริการรายอื่นโดยไม่เปลี่ยนรหัส
ลิงก์ที่มีประโยชน์:
- หน้าราคา
- ตัวอย่างแอป:Next.js กับ DynamoDB
- หลักสูตรวิดีโอ:Next.js พร้อม DynamoDB
บทสรุป
แล้วฐานข้อมูลที่ดีที่สุดสำหรับ Next.js คืออะไร? ตามที่คาดไว้ไม่มีคำตอบเดียว แต่ให้คำตอบแบบมีเงื่อนไข:
- หากคุณต้องการฐานข้อมูลเชิงสัมพันธ์ 👉🏻 Supabase หรือ PlanetScale
- หากคุณต้องการแยกฐานข้อมูล 👉🏻 PlanetScale
- หากคุณต้องการอัปเดตตามเวลาจริง 👉🏻 Supabase หรือ MongoDB Atlas
- หากคุณต้องการเวลาแฝงต่ำทั่วโลก 👉🏻 Upstash หรือ DynamoDB
- ถ้าคุณต้องการความสม่ำเสมอที่แข็งแกร่งระดับโลก 👉🏻 สัตว์
- หากคุณต้องการเก็บค่าคีย์เวลาแฝงต่ำ 👉🏻 อัพสแตช
- ถ้าคุณรัก PostgreSQL 👉🏻 Supabase
- ถ้าคุณรัก MySQL 👉🏻 PlanetScale
- ถ้าคุณรัก Redis 👉🏻 Upstash
- ถ้าคุณรัก Mongo 👉🏻 MongoDB Atlas
- หากคุณต้องการ GraphQL 👉🏻 Fauna
ฉันพยายามที่จะยุติธรรมและถูกต้อง หากคุณคิดว่ามีอะไรต้องแก้ไข โปรดส่งความคิดเห็นของคุณไปที่ twitter ของฉัน