Neo4j, FalkorDB ve Memgraph'ı, 120.000 Amazon ürün incelemesinden türetilen sentetik bir grafikte (381K düğüm, 804K kenar) benchmarkladık. Her biri 1.000 ölçüm içeren 12 sorgu şablonu çalıştırdık, 6 farklı yığın boyutunda veri yükleme (ingestion) test ettik, 32 iş parçacığına kadar 60 saniye boyunca sürekli eşzamanlı yük altında test ettik ve bellek, soğuk başlangıç, karma yük ve indeks etkisini ölçtük.
FalkorDB, 8 iş parçacığında Neo4j ve Memgraph'tan daha yüksek işlem hacmi sağladı.
Graph veritabanı benchmark sonuçları
Eşzamanlı işlem hacmi
QPS (saniyedeki sorgu sayısı), veritabanının sürekli çok iş parçacıklı yük altında saniyede kaç okuma sorgusuna yanıt verdiğini ölçer. Her çalıştırma 60 saniye sürer. Yüksek değer daha iyidir.
Sorgu gecikmesi (p50)
p50, medyan gecikmedir: tüm sorguların yarısı bu değerden daha hızlı tamamlanır. Düşük değer daha iyidir.
- Nokta araması: Tek bir düğümü ID ile getir. FalkorDB'nin Redis hash tabloları bellek içi O(1) aramaları yapar, yaklaşık 3 kat daha hızlı.
- Gezinme: Bir düğümden komşularına (1-hop) veya komşularının komşularına (2-hop) yürü. FalkorDB 2-hop işlemini 2.9 kat daha hızlı yapar.
- Toplama (Aggregation): Marka başına inceleme sayısını hesapla, ortalama yıldız puanlarını hesapla.
- Filtrele + tara: Tüm veri seti üzerinde yıldız puanına göre incelemeleri filtrele.
Veri yükleme işlem hacmi
Veri yükleme işlem hacmi, veritabanının saniyede kaç inceleme yazabildiğini ölçer. Grafikteki her nokta farklı bir yığın boyutudur: kaç incelemenin tek bir sorguda gruplandığı. Yüksek değer daha iyidir.
Yığın boyutu 1'de Memgraph liderdir (1.427/s). Yığın boyutu arttıkça FalkorDB keskin bir şekilde ölçeklenir ve yaklaşık 500. yığında Memgraph'ı geçer. Neo4j, yığın boyutundan bağımsız olarak ~10.600/s seviyesinde düzleşir. 5.000'lik yığında FalkorDB 22.784/s'ye ulaşır, bu da yığın-1 performansının 77 katıdır.
Graph veritabanı benchmark metodolojimiz hakkında daha fazla bilgi edinebilirsiniz: graph veritabanı benchmark.
Temel bulgular
FalkorDB, 8 iş parçacığında 6.693 QPS'ye ulaşıyor, Neo4j'in 6.7 katı
Redis'in bellek içi veri yapıları ve olay döngüsü, düşük gecikmeli sorguları yüksek paralellikle birleştirmesini sağlar. 8 iş parçacığından sonra işlem hacmi düzleşir çünkü Redis tek iş parçacıklı çekirdek tavan noktasıdır. Neo4j 16 iş parçacığında zirve yapar (1.010 QPS) ve 32'de düşer (927 QPS), bu da iş parçacığı çekişmesine işaret eder.
FalkorDB soğuk başlangıçta 1.1ms, Neo4j'den 82 kat daha hızlı
Neo4j, yeniden başlatıldıktan sonra ilk sorguyu kabul etmesi için 90ms sürer. İlk ısıtma sorgusu 274ms'de çalışır, ardından yaklaşık 3 sorgu 34ms'ye oturması için geçer. FalkorDB 1.1ms'de hazır hale gelir, ilk sorgu 0.4ms'dedir. Podların yukarı ve aşağı ölçeklendiği bir mikroservis veya sunucusuz kurulumda bu fark önemlidir.
İndeksler: Neo4j'de 1.700x fark, FalkorDB'de ~1x
İndeksler olmadan Neo4j'in deep_feature_products sorgusu 293ms sürdü. İndekslerle 0.17ms. Bu, 1.712 katlık bir farktır. Memgraph benzer bir hassasiyet gösterdi (sorguya bağlı olarak 160-898x). FalkorDB sonuçları, Redis hash tablolarının zaten dolaylı indeksler olarak işlev görmesi nedeniyle indekslerle veya olmadan yaklaşık olarak aynı kaldı.
Bellek: Aynı grafik için 415MB vs 2.668MB
- Memgraph: 415MB
- FalkorDB: 496MB
- Neo4j: 2.668MB (JMX heap kullanımı)
Neo4j'in JVM'i başlangıçta 4GB önceden ayırır, bu nedenle işlem seviyesindeki belleği (VmRSS) gerçek veri kullanımından bağımsız olarak her zaman ~5.2GB'dır. Anlamlı olan JMX heap metriğidir. Kapasite planlaması için kullanılması gereken sayı 2.7GB zirvesidir.
Neo4j en ağır toplamada kazandı
FalkorDB, 12 sorgudan 11'inde en düşük gecikmeye sahipti. İstisna, Neo4j'in sorgu optimizasyonunun daha iyi bir yürütme planı ürettiği agg_feature_sentiment (filtreleme ile duygu gruplandırma) idi: 131ms vs FalkorDB'nin 152ms.
Karma yük (%80 okuma, %20 yazma)
8 iş parçacığı, 60 saniye, üç veritabanında da sıfır hata:
- FalkorDB: 50.223 işlem (837 QPS)
- Neo4j: 44.256 işlem (738 QPS)
- Memgraph: 28.040 işlem (467 QPS)
Yazma işlemleri, hiçbirinde okuma performansını belirgin şekilde düşürmedi.
Bu benchmark'taki mimariler
Her veritabanı kendi yönetim arayüzünü sunar. Bu ekran görüntüleri, üçüne de yüklenen aynı veri setini (16.127 düğüm, 24.318 kenar) ve aynı COMPARED_WITH gezinme sorgusunu çalıştıranları gösterir.
FalkorDB
FalkorDB, Redis'in bellek içi anahtar-değer deposu üzerine inşa edilmiş bir graph modülüdür. Sorgular openCypher'dir, ancak altında Redis hash tabloları vardır. Bu nedenle nokta aramaları 0.044-0.048ms seviyesinde gerçekleşir.
Bu benchmark'taki diğer iki veritabanı aynı sorgularda 2-3 kat daha yüksek ölçüldü. Takas şudur: Redis'in tek iş parçacıklı çekirdeği, eşzamanlı işlem hacminin 8 iş parçacığının ötesinde ölçeklenmesini durdurur
Neo4j
Neo4j JVM üzerinde çalışır. JIT derleme, tekrarlanan sorguların zamanla daha hızlı olmasını sağlar (ısıtma: 274ms -> 34ms). GC duraklamaları kuyruk gecikmesini etkiler ancak IQR aykırı değer kaldırma tarafından yakalanır. Sorgu optimizasyonu karmaşık toplama planlarını iyi yönetir ve agg_feature_sentiment zaferi buradan gelir. Maliyet 4GB heap önceden tahsis ve GC fazlalığıdır.
Memgraph
Memgraph C++ ile yazılmıştır. JVM fazlalığı yok. Tam veri seti için 415MB, üçü arasında en düşük. Minimal sorgu başına fazlalık sayesinde bireysel eklemelerde en hızlı (1.427/s). Ancak eşzamanlı işlem hacminde geride kalır (684 QPS zirve). Bolt uyumlu, bu yüzden Neo4j sürücüsü ile çalışır.
Graph veritabanı benchmark metodolojisi
Ortam
- RunPod 8 vCPU (AMD EPYC x86_64), 32GB RAM, Ubuntu 24.04 LTS
- Yerel kurulum, Docker yok. Üç veritabanı da aynı makinede, localhost bağlantıları.
- Python 3.12.3. Tek iş parçacıklı testler için kalıcı oturumlar, çok iş parçacıklı testler için bağlantı havuzundan çağrı başına oturumlar.
Veri
- Zipf (markalar, özellikler) ve Poisson (varlıklar, ilişkiler) dağılımlarından üretilen 120.000 sentetik inceleme, sabit seed=42.
- 6 düğüm tipi: İnceleme, Ürün, İnceleyici, Marka, Özellik, Kategori
- 8 kenar tipi: ABOUT, WRITTEN_BY, IN_CATEGORY, MADE_BY, HAS_POSITIVE, HAS_NEGATIVE, MENTIONS, COMPARED_WITH
Sorgular
5 kategori arasında 12 Cypher şablonu: nokta araması (3), 1-hop gezinme (2), 2-hop gezinme (2), toplama (3), filtre (1), tam tarama (1). Her parametreli sorgu, veritabanı başına sorgu başına 1.000 ölçüm için 10 farklı parametre değeriyle, her biri 100 kez çalıştırılır.
Parametreler, Zipf ağırlıklı seçim kullanılarak tam ID uzayından örneklenir, böylece hem popüler hem de nadir öğeler test edilir.
Üç örnek:
Nokta araması: İndekslenmiş ID ile tek bir düğümü getir
2-hop gezinme: Bir markadan ürünlerine ve onların incelemelerine yürü
Toplama: Çoklu-hop birleştirme ve hesaplama ile tam graph taraması
Ölçüm
- Zamanlama:
time.perf_counter_ns(), 500 ısıtma sorgusu, sorgu başına minimum 100 çalıştırma - İstatistikler: 10.000 bootstrap örneği, %95 güven aralığı, IQR aykırı değer kaldırma (3.0x faktör). Hem ham hem de filtrelenmiş veriler raporlanır.
- Bellek: Neo4j JMX heap kullanımı üzerinden (JVM önceden tahsis ettiği için VmRSS anlamsızdır), FalkorDB Redis
used_memory_rssüzerinden, Memgraph/proc/{pid}/statusVmRSS üzerinden.
Adillik
- Üç veritabanı arasında aynı bağlantı havuzu boyutu, ısıtma sayısı, Cypher sorguları, veri ve makine.
- Eşzamanlı test: 1, 2, 4, 8, 16 ve 32 iş parçacığında sabit pool_size=32 ile 60 saniye boyunca sürekli yük. Sorgu karışımı: %40 1-hop gezinme, %30 2-hop gezinme, %20 toplama, %10 3-hop gezinme.
Test edilen veritabanları
Sınırlamalar
Tek makine, veritabanı başına tek düğüm. Dağıtılmış veya küme benchmarklaması yok. Neo4j Enterprise kümeleme ve Memgraph çoğaltma kapsam dışındadır.
Gerçek Amazon incelemelerinden türetilen dağılımlara sahip sentetik veri. Belirli üretim yük kalıplarıyla eşleşmeyebilir.
Ölçülmedi: disk kalıcılığı/kurtarma, tam metin arama, graph algoritmaları (PageRank, topluluk algılama) ve yazma ağırlıklı yükler (>%50 yazma).
Farklı sürücüler: Neo4j ve Memgraph Neo4j Python sürücüsünü kullandı, FalkorDB kendi sürücüsünü kullandı. Tek iş parçacıklı testlerde fazlalık farkı <0.5ms idi.
Sonuç
FalkorDB, 12 sorgudan 11'ini kazandı, 6.693 QPS'ye ulaştı ve soğuk başlangıçta 1.1ms sürdü. Okuma ağırlıklı graph yükleri için, bu benchmark'ta en hızlı seçenektir. Memgraph en bellek verimli seçenektir (415MB vs 2.7GB). Neo4j en geniş ekosistemi sunar: RBAC, kümeleme, izleme ve her iki alternatiften daha iyi karmaşık toplama planlarını yöneten bir sorgu optimizasyonu.
Mimari tavanı belirler. Dağıtılmış kümeler, 1M+ düğümlü graphlar ve yazma ağırlıklı yükler, bu sıralamaları değiştirebilecek testlerdir.
Bu araştırmayı kaynak gösterin
Yayınlayacağınız yere uygun formatı seçin. Bağlantılı sürümü CMS'inize yapıştırmak, geri bağlantıyı korur.
@misc{sar2026,
author = {Sarı, Ekrem},
title = {{Graph Veritabanı Benchmark: Neo4j vs FalkorDB vs Memgraph}},
year = {2026},
month = apr,
howpublished = {\url{https://aimultiple.com/graph-databases}},
note = {AIMultiple. Erişim tarihi: 15 Nisan 2026}
}


Yorum yapan ilk kişi olun
E-posta adresiniz yayınlanmayacak. Tüm alanlar gereklidir. Yorumlar orijinal dilinde bırakılır.