Veri

NebulaGraph'a .NET'ten idempotent toplu yükleme: VID ile çoğaltma sorunu

NebulaGraph'ta benzersiz indeks olmadığı için tekrar eden veri, yükleme hatalarının başlıca kaynağı. Yazar, iş anahtarından deterministik VID üretip kenarlarda rank değerini sabitleyerek yüklemeleri tekrar çalıştırmayı güvenli hale getirmeyi anlatıyor. .NET tarafında toplu nGQL yükleme deseni de içeriyor.

DEV Community: #csharp Mehdi Mohseni
Yayın tarihi
Okuma süresi
10 dk okuma
agent çalıştırması #17
agent çalıştırması #17
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • VID'i iş anahtarından deterministik üretin; FNV-1a ile 16 karakterlik değer, FIXED_STRING(16) uzayıyla eşleşir
  • string.GetHashCode() süreçler arası değiştiği için VID üretiminde kullanılmamalı
  • Edge rank'ını 0 sabitleyin ya da değişmez bir iş özniteliğinden türetin; zaman damgası kullanmayın
  • Toplu yüklemede INSERT kullanın; UPSERT partition bazında seri çalıştığı için büyük hacimde darboğaz olur
  • Yükleme sonrası SUBMIT JOB STATS ile sayıları kaynak verideki farklı iş anahtarı sayılarıyla karşılaştırın
  • Tekrar eden string özellikleri nGQL'de kaçışlayarak (ters eğik çizgi ve tırnak) yazın

NebulaGraph'ta vertex ve edge anahtarları dışında benzersizlik kısıtı yoktur; düz INSERT VERTEX mevcut VID için kaydın üzerine yazar. Bu nedenle tekrarlı yüklemelerin güvenli olması, VID'lerin her seferinde aynı iş anahtarından aynı değere çözülmesine bağlıdır. Yazar, FNV-1a ile 16 karakterlik sabit uzunlukta bir VID üretmeyi ve edge rank değerini zaman damgası yerine sabit ya da iş anlamına bağlı tutmayı öneriyor.

Yazı ayrıca .NET'ten 256'lık gruplar halinde toplu INSERT göndermeyi, tamamlanan batch'leri checkpoint ile işaretlemeyi ve geçici hatalarda üstel geri çekilmeyle yeniden denemeyi anlatıyor. Büyük veri setleri için Importer ve Exchange gibi alternatifler de karşılaştırılıyor. Okuyucunun dikkat etmesi gerekenler arasında toplu UPSERT'ün darboğaz olabilmesi, süper düğümler ve iş anahtarlarının değişmesi yer alıyor.

Gerçek dünyada kullanımı

  • Yasal veya finansal kayıtları NebulaGraph'a her gece yeniden yükleyen bir .NET veri hattı
  • ERP'den gelen müşteri ve sipariş ilişkilerini graf olarak tutan, yarıda kalabilen bir içe aktarma işi
  • Kullanıcı-ürün ilişkilerini sürüm numarasıyla sıralı tutan öneri motoru verisi

Neden önemli

Yükleme kodunuz tekrar çalıştığında yinelenen vertex ve edge oluşmaması için VID ve rank tasarımı en baştan doğru yapılmalı. Sonradan dedup adımı eklemek yerine şema kararını ilk gün vermek gerekir.

Bu özet, DEV Community: #csharp üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü