19 puan yazan GN⁺ 2025-04-11 | 5 yorum | WhatsApp'ta paylaş
  • SpacetimeDB, veritabanı ile sunucu işlevlerini birleştiren bir sistemdir
  • Geleneksel web veya oyun sunucusunu ayrı tutmak yerine, istemci doğrudan veritabanına bağlanarak uygulama mantığını çalıştırır
  • Rust ile yazılmış "modül" biçimindeki stored procedure'ler aracılığıyla uygulama mantığı doğrudan veritabanına yüklenebilir
  • Tüm uygulama tek bir Rust binary'si olarak dağıtılabilir; DevOps, container, sunucu ve mikroservislere gerek yoktur

Başlıca özellikler

  • Smart contract'lara benzer bir kavramdır, ancak blockchain ile ilgili değildir
  • Mevcut smart contract sistemlerinden çok daha hızlıdır
  • MMORPG oyunu BitCraft Online'ın backend'i yalnızca SpacetimeDB'den oluşur
  • Oyun içindeki tüm öğeler veritabanında gerçek zamanlı olarak işlenir ve istemciyle senkronize edilir
  • Gerçek zamanlı uygulamalar için optimize edilmiştir ve gecikmeyi en aza indirme hedefiyle tasarlanmıştır
  • Uygulama durumu bellekte tutulur ve kurtarma için WAL (Write-Ahead Log) içine kaydedilir

Kurulum yöntemi

macOS / Linux kurulumu

Windows kurulumu

Docker ile çalıştırma

  • Docker kullanıyorsanız
    docker run --rm --pull always -p 3000:3000 clockworklabs/spacetime start

Başlamak için 4 adım

  1. spacetime CLI aracını kurun
  2. spacetime start komutuyla tek bir node çalıştırın
  3. Desteklenen dillerden biriyle bir modül yazıp yükleyin
  4. İstemci kütüphanesiyle veritabanına bağlanın

Dil desteği

Sunucu tarafı modülleri

İstemci kütüphaneleri

Lisans bilgisi

  • BSL 1.1 lisansını kullanır
  • Belirli bir sürenin ardından AGPL v3.0 + linking exception'a geçer
  • SpacetimeDB ile entegre çalışan uygulamaların kaynak kodunun açıklanmasını zorunlu kılmaz
  • Topluluğa yapılan katkıların geri dönmesini hedefleyen özgür yazılım lisanslama yaklaşımıdır

Resmi belgeler

5 yorum

 
ethanhur 2025-04-11

İlginç bir fikir. DDoS veya Auth gibi şeyleri nasıl iyi çözdüklerini merak ediyorum.

 
turastory 2025-04-11

En azından adı aşırı havalı duruyor

 
jujumilk3 2025-04-11

Gerçekten çok yenilikçi ve iyi göründüğünü düşünmüştüm ama meğerse çok eskiden GitHub yıldızını vermişim bile. Hafızam...

 
xguru 2025-04-11

SpaceTimeDB - VT ve sunucuyu tek bir yapıda birleştiren çözüm

1,5 yıl önce tanıtılmıştı, görünüşe göre düzenli olarak iyi güncellemeler almaya devam ediyor. a16z ve Supercell de yatırım yapmış.

 
GN⁺ 2025-04-11
Hacker News görüşleri
  • SpacetimeDB, "kozmik düşünceyi yeniden yapılandırma" diyebileceğimiz bir teknik kategoriye giriyor. Yapısal yeniden düzenleme yoluyla performansı büyük ölçüde artırma potansiyeli taşıyor

    • Bu tür teknolojiler geliştiricilerin düşünme biçimini yeniden düzenlemesini gerektiriyor; sorunun teknolojinin henüz tam benimsenmemiş olması mı, yoksa vaatlerinin belirli kullanım senaryolarına uymaması mı olduğunu ayırt etmek zor
    • Benzer örnekler olarak Elixir ve Node var; nadir görülen garantiler elde etmek için bu stack benimseniyor ve yeni sınırlamalar kabul ediliyor
    • Bu tür teknolojiler, net bir vizyona sahip öncüler açık kaynakta güçlü yönlerini gösterdiğinde daha yüksek başarı şansına sahip oluyor
    • Clockwork Labs'in örnek oyununu başarıyla sunmasını umuyorum
  • Önceki gönderideki en iyi yorumlar:

    • SpacetimeDB, düşük gecikme ve WASM stored procedure desteği sunan genel amaçlı bir veritabanı
    • Çok oyunculu oyunlarda kalıcı dünya kurmak için sağlam bir yapı taşı gibi görünüyor
    • Gecikmeyi maskeleyen netcode'u yine kendiniz yazmanız gerekiyor
  • SpacetimeDB, BitCraft adlı büyük ölçekli bir MMORPG'yi desteklemek için geliştirildi

    • Oyunun performans gereksinimlerine göre tasarlandı
    • Çok düşük gecikme ve yüksek throughput sunduğunu iddia ediyor
    • Yeni bir MMO inşa etmek istiyorsanız, mevcut pazarın yaklaşımına bakmak faydalı olabilir
    • World of Warcraft örneğinde olduğu gibi, istemciye duyulan güven ve sunucunun olayları koordine etmesi, ölçeklenebilirlik için yapılan hilelerin temelini oluşturuyor
  • Bu teknolojiyle oyun sunucusunun nasıl yazılacağını anlamak zor

    • Fizik simülasyonu, pathfinding, animasyon vb. sunucuda simüle edilmesi gerektiğinde bunun nasıl entegre edileceği belirsiz
    • Genelde Unreal/Unity'nin headless modu kullanılır; ancak SpacetimeDB ile oyun motorunu bırakıp her şeyi sıfırdan yeniden uygulamak gerekiyor gibi görünüyor
  • BitCraft sevimli görünüyor

    • Fiyatlandırmayla ilgili bir terim gibi duran "maincloud" ifadesini görünce kişisel bir önyargı oluştu ama bu sadece hosting kredileri için kullanılan bir adlandırma
  • YouTube, SpacetimeDB'yi öneriyor ama video oyunu yapmış değil

    • Oyun geliştiricilerinin bu teknolojinin pratikte ne kadar faydalı olduğu konusunda görüş vermesini isterim
    • Bunun ne kadarının iyi pazarlama olduğunu anlamak zor
  • Bu proje BSL kapsamında ve biraz ağır bir zaman kısıtı içeriyor

    • Servis başına yalnızca tek bir instance'a izin veriliyor
  • İlişkisel veritabanı şemasını, uygulamanın veriyi işleme biçimiyle karıştırmamak gerekir

    • Açık kontrol gerekir ve annotation sihrinden kaçınılmalıdır
  • Tek oyunculu bir oyunda veritabanını yerelde çalıştırmanın anlamlı olup olmadığını merak ediyorum

    • Tüm oyun durumunu yerel bir veritabanı üzerinden yürütmenin avantaj sağlayıp sağlamadığı belirsiz
    • Sağlam bir state manager ayrı bir yazılım olarak varsa, o zaman yalnızca grafik motorunu yazmak yeterli olabilir gibi geliyor
  • Bellek içi bir veritabanına benziyor ve alan mantığını barındırmak için bir WASM runtime'a sahip

    • Ölçeklenebilirlik ve clustering'i nasıl ele aldığı net değil
    • Veri parçalamayı muhtemelen kendiniz yapmanız gerekiyor
    • Replikasyon ve tutarlılık, dağıtık veritabanlarının zor kısmı
    • Hem bellek hem de disk tabanlı tablolar kullanılabiliyor
    • Genel amaçlı veritabanları bunu zaten yapıyor; alan mantığını stored procedure içinde yazmak ise zahmetli
    • Şu an için sqlite'ı bellek tablolarıyla birlikte ikili dosyaya gömmek eşdeğer görünüyor
    • İstemcilere tablo güncellemelerini yayınlayan kodu sizin yazmanız gerekiyor
    • Clustering ile ilgili dokümantasyon var ama yeterince somut değil