Ölçekleme ve Sınırlar
storh, ilişkisel bir sorgu motoru değil, dosya öncelikli depolamadır. kıyaslamalar kaynak alınarak belirlenen pratik sınırlar (50k kayıt, Apple M1 Pro):
- Dosya sistemi dosya sayısını kaldırabildiğinde ve koleksiyon UUID-kuyruk parçalamayı kullandığında tekil erişimin pratikte sınırı yoktur. Tekil bir okuma birkaç mikrosaniye sürer; kalıcı tek kayıt yazma hızı saniyede birkaç bin işlemdir ve fsync ile sınırlıdır.
- Bölümlenmiş günlük taramaları, imleç okumaları ve zaman aralığı okumaları, iş yüküne göre ayarlanmış segment boyutlarıyla yaklaşık 1M kayda kadar rahatça ölçeklenir. Toplu eklemeler saniyede on binlerce kayda ulaşır; yarım kalmış son satır kurtarma, yeniden açılışta saniyede yüz binlerce kaydı yeniden oynatır.
- Kuyruk işlemleri sıkıştırılmış olayları tek bir kalıcı günlüğe ekler; böylece kuyruğa ekleme, talep etme, tamamlama, yeniden kuyruğa alma ve temizleme işlemleri her iş için ayrı dosya oluşturan dizin hareketliliğini önler. Toplu talep ve tamamlama, kilitleme ve fsync maliyetini tüm gruba yayar.
DocStoreiçinde dosya başına alan taramaları yaklaşık 10k kaydı aşınca yavaşlar; çünkü her eşleşen tarama ayrı dosyaları dolaşmak zorundadır. Filtrelediğiniz alanlar için dizinler tanımlayın; dizinlenmiş eşitlik sorguları koleksiyon boyutundan bağımsız olarak yaklaşık bir milisaniyede yanıt verir.- storh, gelişigüzel ilişkisel sorgular, birleştirmeler, ikincil dizin ağırlıklı filtreleme veya birçok alanı kapsayan analitik taramalar için uygun değildir. Bu okuma biçimlerine ihtiyaç duyduğunuzda koleksiyonları bir SQL yansımasına aktarın; birden çok kayıt üzerinde işlem gerektiğinde asıl kayıt sistemini gerçek bir veritabanında tutun.
Tekil okumalar ağırlıklıysa DocStore, ekleme ve sıralı okumalar ağırlıklıysa SegmentedLog, basit ve kalıcı iş dağıtımı içinse Queue kullanın. Yan yana karşılaştırma için Bir motor seçin sayfasına bakın.