19 คะแนน โดย GN⁺ 2025-04-11 | 5 ความคิดเห็น | แชร์ทาง WhatsApp
  • SpacetimeDB เป็นระบบที่รวมฐานข้อมูลและความสามารถฝั่งเซิร์ฟเวอร์เข้าไว้ด้วยกัน
  • แทนที่จะมีเว็บเซิร์ฟเวอร์หรือเกมเซิร์ฟเวอร์แบบดั้งเดิมแยกต่างหาก ไคลเอนต์สามารถเชื่อมต่อกับฐานข้อมูลโดยตรงเพื่อรันลอจิกของแอปพลิเคชัน
  • สามารถอัปโหลดลอจิกของแอปขึ้นสู่ฐานข้อมูลได้โดยตรง ผ่าน stored procedure ในรูปแบบ "module" ที่เขียนด้วย Rust
  • สามารถดีพลอยทั้งแอปพลิเคชันได้ด้วย Rust binary เดียว และไม่จำเป็นต้องมี DevOps, คอนเทนเนอร์, เซิร์ฟเวอร์ หรือไมโครเซอร์วิส

คุณสมบัติหลัก

  • เป็นแนวคิดที่คล้าย smart contract แต่ไม่เกี่ยวข้องกับบล็อกเชน
  • เร็วกว่าระบบ smart contract แบบเดิมอย่างมาก
  • แบ็กเอนด์ของเกม MMORPG อย่าง BitCraft Online สร้างขึ้นด้วย SpacetimeDB เพียงตัวเดียว
  • ทุกองค์ประกอบภายในเกมถูกประมวลผลแบบเรียลไทม์ในฐานข้อมูลและซิงก์ไปยังไคลเอนต์
  • ปรับแต่งมาสำหรับแอปพลิเคชันแบบเรียลไทม์ และออกแบบมาโดยมีเป้าหมายเพื่อลด latency ให้ต่ำที่สุด
  • สถานะของแอปพลิเคชันถูกเก็บไว้ในหน่วยความจำ และบันทึกลง WAL(Write-Ahead Log) เพื่อการกู้คืน

วิธีติดตั้ง

ติดตั้งบน macOS / Linux

ติดตั้งบน Windows

รันด้วย Docker

  • หากใช้ Docker
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

4 ขั้นตอนเพื่อเริ่มต้นใช้งาน

  1. ติดตั้งเครื่องมือ CLI spacetime
  2. รันโหนดเดี่ยวด้วยคำสั่ง spacetime start
  3. เขียนและอัปโหลดโมดูลด้วยหนึ่งในภาษาที่รองรับ
  4. เชื่อมต่อกับฐานข้อมูลด้วยไลบรารีไคลเอนต์

การรองรับภาษา

โมดูลฝั่งเซิร์ฟเวอร์

ไลบรารีไคลเอนต์

ข้อมูลไลเซนส์

  • ใช้ไลเซนส์ BSL 1.1
  • หลังจากช่วงเวลาหนึ่งจะเปลี่ยนเป็น AGPL v3.0 + ข้อยกเว้นการลิงก์
  • ไม่ได้บังคับให้ต้องเปิดเผยซอร์สโค้ดของแอปพลิเคชันที่เชื่อมต่อกับ SpacetimeDB
  • เป็นแนวทางไลเซนส์ซอฟต์แวร์เสรีที่ออกแบบมาเพื่อให้การมีส่วนร่วมกลับคืนสู่ชุมชน

เอกสารทางการ

5 ความคิดเห็น

 
ethanhur 2025-04-11

ไอเดียน่าสนใจดีนะครับ สงสัยเหมือนกันว่าเขาแก้เรื่องอย่าง DDoS หรือ Auth ได้ดีแค่ไหน

 
turastory 2025-04-11

ชื่อดูเท่มากจริง ๆ

 
jujumilk3 2025-04-11

ตอนแรกคิดว่ามันสดใหม่และดูดีมากจริง ๆ แต่กลายเป็นว่าผมเคยกดดาวบน GitHub ไว้นานแล้วนี่เอง ความจำผมนี่นะ..

 
xguru 2025-04-11

SpaceTimeDB - รวม DB และเซิร์ฟเวอร์ไว้เป็นหนึ่งเดียว

เคยแนะนำไปเมื่อปีกว่า ๆ ก่อนหน้านี้ ตอนนี้ก็ยังอัปเดตมาได้ดีอย่างต่อเนื่องนะครับ a16z กับ Supercell ก็ร่วมลงทุนด้วยเหมือนกัน

 
GN⁺ 2025-04-11
ความคิดเห็นจาก Hacker News
  • SpacetimeDB อยู่ในหมวดเทคโนโลยีแบบ "จัดระเบียบวิธีคิดใหม่ครั้งใหญ่" ซึ่งมีศักยภาพที่จะเพิ่มประสิทธิภาพได้มากผ่านการจัดโครงสร้างใหม่

    • เทคโนโลยีแบบนี้ทำให้นักพัฒนาต้องจัดระเบียบวิธีคิดใหม่ และยากที่จะแยกให้ออกว่าปัญหาเกิดจากเทคโนโลยียังไม่ได้รับการยอมรับอย่างเต็มที่ หรือเพราะคำสัญญาของเทคโนโลยีนั้นไม่เหมาะกับกรณีใช้งานบางแบบ
    • เทคโนโลยีที่คล้ายกันมีอย่าง Elixir และ Node โดยต้องยอมรับทั้งการเลือกใช้สแตกนั้นและข้อจำกัดใหม่ ๆ เพื่อแลกกับการรับประกันบางอย่างที่หาได้ยาก
    • เทคโนโลยีลักษณะนี้มีโอกาสสำเร็จสูงเมื่อมีผู้บุกเบิกที่มีวิสัยทัศน์ชัดเจนแสดงให้เห็นจุดแข็งของมันผ่านโอเพนซอร์ส
    • หวังว่า Clockwork Labs จะส่งมอบเกมตัวอย่างของพวกเขาได้สำเร็จ
  • ความคิดเห็นที่ดีที่สุดจากโพสต์ก่อนหน้า:

    • SpacetimeDB เป็นฐานข้อมูลแบบทั่วไปที่รองรับ latency ต่ำและ stored procedure แบบ WASM
    • มันดูเหมือนเป็น building block ที่แข็งแรงสำหรับ persistent world ของเกมมัลติเพลเยอร์
    • คุณยังต้องลงมือทำ netcode สำหรับซ่อน latency เอง
  • SpacetimeDB ถูกพัฒนาขึ้นเพื่อรองรับ MMORPG ขนาดใหญ่ชื่อ BitCraft

    • มันถูกออกแบบให้สอดคล้องกับข้อกำหนดด้านประสิทธิภาพของเกม
    • มีจุดเด่นเรื่อง latency ต่ำมากและ throughput สูง
    • ถ้าจะสร้าง MMO ใหม่ ก็ควรดูแนวทางของผู้เล่นในตลาดที่มีอยู่ก่อน
    • ถ้ายกตัวอย่าง World of Warcraft หัวใจของการแฮ็กเพื่อให้ขยายสเกลได้คือความน่าเชื่อถือของไคลเอนต์และการประสานอีเวนต์ของเซิร์ฟเวอร์
  • เข้าใจได้ยากว่าจะเขียนเกมเซิร์ฟเวอร์ด้วยเทคโนโลยีนี้อย่างไร

    • เวลาต้องจำลองฟิสิกส์, pathfinding, แอนิเมชัน ฯลฯ บนเซิร์ฟเวอร์ ก็ยังสงสัยว่าจะผสานเข้าด้วยกันอย่างไร
    • ปกติจะใช้โหมด headless ของ Unreal/Unity แต่ถ้าใช้ SpacetimeDB ก็ดูเหมือนต้องทิ้งเกมเอนจินแล้วเขียนทุกอย่างใหม่ตั้งแต่ต้น
  • BitCraft ดูน่ารักดี

    • ตอนเห็นคำว่า "maincloud" ซึ่งเป็นคำเกี่ยวกับราคา ก็เกิดอคติส่วนตัวขึ้นมา แต่จริง ๆ แล้วมันเป็นแค่ชื่อสำหรับเครดิตโฮสต์ติ้ง
  • YouTube แนะนำ SpacetimeDB แต่ไม่เคยสร้างวิดีโอเกมมาก่อน

    • อยากให้เหล่านักพัฒนาเกมช่วยให้ความเห็นว่าเทคโนโลยีนี้มีประโยชน์จริงแค่ไหน
    • ตัดสินได้ยากว่านี่คือการตลาดที่ทำออกมาได้ดีแค่ไหน
  • โปรเจกต์นี้อยู่ภายใต้ BSL และมีข้อจำกัดด้านระยะเวลาที่ค่อนข้างหนัก

    • อนุญาตให้มีเพียงหนึ่งอินสแตนซ์ต่อหนึ่งบริการ
  • ไม่ควรสับสนระหว่างสคีมาฐานข้อมูลเชิงสัมพันธ์กับวิธีที่แอปประมวลผลข้อมูล

    • ต้องการการควบคุมอย่างชัดเจน และควรหลีกเลี่ยงเวทมนตร์จาก annotation
  • สงสัยว่าการรันฐานข้อมูลแบบโลคัลในเกมเล่นคนเดียวมีความหมายหรือไม่

    • ยังไม่แน่ใจว่าการให้สถานะทั้งหมดของเกมวิ่งผ่านฐานข้อมูลโลคัลจะมีข้อดีหรือไม่
    • ถ้ามี state manager ที่แข็งแรงอยู่เป็นซอฟต์แวร์แยกต่างหาก ก็ดูเหมือนว่าน่าจะเหลือแค่เขียนกราฟิกเอนจิน
  • ดูเหมือนจะเป็นฐานข้อมูลในหน่วยความจำ พร้อม WASM runtime สำหรับโฮสต์โดเมนลอจิก

    • ยังไม่ชัดเจนว่ามันจัดการเรื่อง scalability และ clustering อย่างไร
    • ดูเหมือนว่าต้องจัดการ data partitioning เอง
    • การทำ replication และ consistency คือส่วนที่ยากของฐานข้อมูลแบบกระจาย
    • ใช้ได้ทั้งตารางแบบอยู่ในหน่วยความจำและแบบอยู่บนดิสก์
    • ฐานข้อมูลทั่วไปก็ทำสิ่งเหล่านี้ได้อยู่แล้ว และการเขียนโดเมนลอจิกใน stored procedure ก็ค่อนข้างยุ่งยาก
    • ตอนนี้การฝัง sqlite เป็นไฟล์ไบนารีพร้อมตารางในหน่วยความจำก็ดูเทียบเท่ากัน
    • คุณต้องเขียนโค้ดเพื่อเผยแพร่การอัปเดตตารางให้ไคลเอนต์เอง
    • มีเอกสารเรื่อง clustering แต่ยังไม่ลงรายละเอียดมากนัก