19 điểm bởi GN⁺ 2025-04-11 | 5 bình luận | Chia sẻ qua WhatsApp
  • SpacetimeDB là một hệ thống kết hợp cơ sở dữ liệu và chức năng máy chủ
  • Thay vì đặt riêng máy chủ web hoặc máy chủ game truyền thống, client có thể kết nối trực tiếp tới cơ sở dữ liệu để thực thi logic ứng dụng
  • Có thể tải trực tiếp logic ứng dụng lên cơ sở dữ liệu thông qua stored procedure ở dạng "module" được viết bằng Rust
  • Có thể triển khai toàn bộ ứng dụng bằng một binary Rust duy nhất, không cần DevOps, container, server hay microservice

Tính năng chính

  • Có khái niệm tương tự smart contract nhưng không liên quan tới blockchain
  • Nhanh hơn rất nhiều so với các hệ thống smart contract hiện có
  • Backend của game MMORPG BitCraft Online được cấu thành chỉ bằng SpacetimeDB
  • Mọi thành phần trong game đều được xử lý theo thời gian thực trong cơ sở dữ liệu và đồng bộ tới client
  • Được tối ưu cho ứng dụng thời gian thực và được thiết kế với mục tiêu giảm thiểu độ trễ
  • Trạng thái ứng dụng được giữ trong bộ nhớ và được ghi vào WAL (Write-Ahead Log) để phục hồi

Cách cài đặt

Cài đặt trên macOS / Linux

Cài đặt trên Windows

Chạy bằng Docker

  • Nếu sử dụng Docker
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

4 bước để bắt đầu

  1. Cài đặt công cụ CLI spacetime
  2. Chạy một single node bằng lệnh spacetime start
  3. Viết và tải module lên bằng một trong các ngôn ngữ được hỗ trợ
  4. Kết nối tới cơ sở dữ liệu bằng thư viện client

Hỗ trợ ngôn ngữ

Module phía server

Thư viện client

Thông tin giấy phép

  • Tuân theo giấy phép BSL 1.1
  • Sau một khoảng thời gian sẽ chuyển sang AGPL v3.0 + ngoại lệ liên kết
  • Không yêu cầu công khai mã nguồn của các ứng dụng tích hợp với SpacetimeDB
  • Cách cấp phép phần mềm tự do được thiết kế để các đóng góp được hoàn lại cho cộng đồng

Tài liệu chính thức

5 bình luận

 
ethanhur 2025-04-11

Ý tưởng khá thú vị. Mình tò mò không biết họ đã giải quyết tốt các vấn đề như DDoS hay Auth như thế nào.

 
turastory 2025-04-11

Chỉ riêng cái tên thôi đã ngầu hết chỗ nói rồi.

 
jujumilk3 2025-04-11

Tôi đã nghĩ đây thực sự là một ý tưởng rất mới mẻ và trông khá hay, nhưng hóa ra trước đây từ lâu tôi đã từng đánh dấu sao trên GitHub rồi. Trí nhớ đúng là...

 
xguru 2025-04-11

SpaceTimeDB - Kết hợp DB và server thành một

Đã được giới thiệu cách đây khoảng một năm rưỡi, và có vẻ vẫn đang được cập nhật rất tốt. Cả a16z lẫn Supercell cũng đã đầu tư vào dự án này.

 
GN⁺ 2025-04-11
Ý kiến trên Hacker News
  • SpacetimeDB thuộc một thể loại công nghệ kiểu "tái cấu trúc tư duy ở tầm vũ trụ". Điều này có thể mang lại khả năng cải thiện hiệu năng rất lớn thông qua việc tái sắp xếp cấu trúc

    • Những công nghệ như vậy đòi hỏi lập trình viên phải sắp xếp lại cách tư duy, và rất khó phân biệt liệu vấn đề là do công nghệ chưa được chấp nhận hoàn toàn, hay do lời hứa của công nghệ đó không phù hợp với một số trường hợp sử dụng nhất định
    • Các công nghệ tương tự gồm có Elixir và Node, nơi bạn phải chấp nhận toàn bộ stack và những giới hạn mới để đổi lấy những đảm bảo hiếm có
    • Những công nghệ kiểu này có khả năng thành công cao hơn khi những người tiên phong có tầm nhìn rõ ràng chứng minh được thế mạnh của chúng trong mã nguồn mở
    • Hy vọng Clockwork Labs sẽ cung cấp thành công trò chơi ví dụ của họ
  • Bình luận hay nhất trong bài đăng trước:

    • SpacetimeDB là một cơ sở dữ liệu đa dụng, hỗ trợ độ trễ thấp và stored procedure WASM
    • Nó có vẻ là một khối xây dựng vững chắc cho thế giới bền vững của game nhiều người chơi
    • Bạn vẫn phải tự triển khai netcode để che giấu độ trễ
  • SpacetimeDB được phát triển để hỗ trợ BitCraft, một MMORPG quy mô lớn

    • Nó được thiết kế để đáp ứng các yêu cầu hiệu năng của game
    • Nó nổi bật với độ trễ rất thấp và thông lượng cao
    • Nếu muốn xây dựng một MMO mới, nên xem cách tiếp cận của thị trường hiện tại
    • Lấy World of Warcraft làm ví dụ, độ tin cậy của client và việc điều phối sự kiện ở phía server là cốt lõi của các mẹo mở rộng quy mô
  • Rất khó hiểu cách viết game server bằng công nghệ này

    • Khi cần mô phỏng vật lý, tìm đường, hoạt ảnh... trên server thì không rõ phải tích hợp như thế nào
    • Thông thường người ta dùng chế độ headless của Unreal/Unity, nhưng nếu dùng SpacetimeDB thì có vẻ phải bỏ game engine và tự triển khai lại mọi thứ từ đầu
  • BitCraft trông khá dễ thương

    • Ban đầu tôi có định kiến cá nhân khi thấy thuật ngữ liên quan đến giá là "maincloud", nhưng thực ra đó chỉ là cách đặt tên cho hosting credit
  • YouTube đang đề xuất SpacetimeDB, nhưng tôi chưa từng làm game

    • Mong các nhà phát triển game cho ý kiến về việc công nghệ này thực sự hữu ích đến mức nào
    • Rất khó đánh giá đâu là giá trị thật, đâu là marketing tốt
  • Dự án này được cấp phép theo BSL, với giới hạn thời gian khá phiền phức

    • Mỗi dịch vụ chỉ được phép một instance
  • Không nên nhầm lẫn giữa schema của cơ sở dữ liệu quan hệ và cách ứng dụng xử lý dữ liệu

    • Cần có sự kiểm soát tường minh và tránh kiểu ma thuật bằng annotation
  • Tò mò không biết việc chạy cơ sở dữ liệu cục bộ trong game chơi đơn có ý nghĩa hay không

    • Không rõ việc chạy toàn bộ trạng thái game thông qua cơ sở dữ liệu cục bộ có mang lại lợi ích gì không
    • Nếu có một trình quản lý trạng thái mạnh mẽ tồn tại như phần mềm riêng biệt, có vẻ chỉ cần viết mỗi graphics engine
  • Có vẻ đây là một cơ sở dữ liệu in-memory, kèm runtime WASM để host domain logic

    • Chưa rõ nó xử lý mở rộng quy mô và clustering như thế nào
    • Có vẻ bạn phải tự phân mảnh dữ liệu
    • Replication và tính nhất quán mới là phần khó trong cơ sở dữ liệu phân tán
    • Có thể dùng cả bảng trong bộ nhớ lẫn bảng trên đĩa
    • Cơ sở dữ liệu thông thường đã làm được việc này, còn viết domain logic trong stored procedure thì khá phiền
    • Hiện tại, nhúng sqlite vào file nhị phân dưới dạng bảng trong bộ nhớ có vẻ là tương đương
    • Bạn phải tự viết mã để phát hành cập nhật bảng tới client
    • Có tài liệu về clustering nhưng không cụ thể lắm