Karmaşık modern uygulamalarda dokümanlar için MongoDB, sosyal ilişkiler ve izin ağaçları için Neo4j, canlı bildirimler için Redis ve AI gömmeleri için ayrı bir vektör veritabanı çalıştırmak; hem altyapı karmaşasını (database sprawl) artırır hem de bulut faturasını aylık binlerce dolara çıkarır. Java sanal makinesi (JVM) yerine saf Rust dilinde yazılan ve RocksDB üzerinde çalışan SurrealDB'yi kendi VDS sunucunuzda barındırarak; çizge (graph), JSON doküman, gerçek zamanlı WebSocket canlı sorguları ve vektör aramayı tek bir ultra hafif motorda birleştirin ve %80 daha az RAM ile %90'ın üzerinde net tasarruf sağlayın.
-- SurrealQL: Tek bir Rust motorunda Doküman, Çizge ve Vektör Verisi
-- 1. Kullanıcı Dokümanı Oluştur (JSON / Schemaless & Schemafull)
CREATE user:ahmet SET
name = 'Ahmet Yılmaz',
email = '[email protected]',
created_at = time::now();
CREATE product:vds_pro SET
name = 'NVMe VDS 8 Core',
price = 45.00,
tags = ['hosting', 'vds', 'cloud'];
-- 2. Çizge İlişkisi Tanımla (Graph Edge - JOIN gerekmez!)
RELATE user:ahmet->purchased->product:vds_pro SET
order_id = 'ORD-2026-991',
purchased_at = time::now();
-- 3. Çizge Gezintisi (Graph Traversal)
-- Ahmet'in satın aldığı tüm ürünlerin kategorilerini doğrudan çek
SELECT ->purchased->product.tags FROM user:ahmet;
-- 4. Canlı Gerçek Zamanlı Sorgu (Live Query / WebSocket PubSub)
-- Yeni bir satın alma olduğunda frontend'e anında push bildirim yolla!
LIVE SELECT * FROM purchased WHERE time > time::now() - 1d;
-- 5. AI Vektör Arama (HNSW Cosine Similarity)
DEFINE INDEX product_embedding_idx ON product
FIELDS embedding HNSW DIMENSION 1536 DIST COSINE;Geleneksel çizge veritabanları (özellikle Java tabanlı Neo4j), düğümler (nodes) ve ilişkiler (edges) arasındaki işaretçileri (pointers) bellekte tutmak için devasa JVM Heap boyutlarına ihtiyaç duyar. 1 milyon düğümlü orta ölçekli bir çizgede Neo4j, en az 8 - 16 GB RAM tüketir ve Garbage Collection duraklamaları nedeniyle sorgu sürelerinde öngörülemeyen sıçramalar yaşanır. Neo4j AuraDB bulut servisinde bu ölçek ayda $500 - $1.000'ın üzerinde faturalandırılır.
Kendi VDS sunucunuzda çalışan SurrealDB, saf Rust mimarisi sayesinde sıfır Garbage Collection ile çalışır. Düğümleri ve kenarları doğrudan RocksDB veya SurrealKV bloklarında tutarak aynı 1 milyon düğümlük veriyi yalnızca 250 - 450 MB RAM ile yönetir.
Ayrı bir MongoDB, ayrı bir Neo4j ve ayrı bir Redis kümesi kurmaya gerek kalmaz. Tek bir SurrealDB örneğinde hem serbest JSON belgeleri hem de yönlü çizge ilişkileri sorgulanır.
Veritabanına yeni bir kayıt eklendiğinde veya güncellendiğinde, istemcilere WebSocket üzerinden doğrudan bildirim gönderir. Harici pub/sub mesaj kuyruğu kurma ihtiyacını ortadan kaldırır.
HNSW (Hierarchical Navigable Small World) indeksleme motoruyla metin ve görsel embedding vektörlerini doğrudan çizge düğümlerine bağlar; harici vektör veritabanı masrafını sıfırlar.
SurrealDB'yi canlı ortamda çalıştırırken bellek içi (memory) mod yerine mutlaka rocksdb:/data/surreal.db depolama motoru seçilmelidir. RocksDB, LSM-Tree (Log-Structured Merge-tree) mimarisi sayesinde NVMe disklerin sıralı yazma (sequential write) yeteneğinden en üst düzeyde yararlanarak saniyede binlerce yazma işlemini minimum disk aşınmasıyla gerçekleştirir.