Document, key-value, wide-column, graph ve vector depoları için modelleme desenleri — ne zaman gömmek, referans vermek, denormalize etmek veya kovalara ayırmak (bucket) gerekir.
NoSQL depoları sabit şemaları ve join'leri yatay ölçekle takas eder. Her aile ilişkileri kendi yolunda modeller; bu yüzden yapıyı normal form değil erişim deseni belirler.
Referans tablosu · 28 kayıt
NoSQL Veri ModellemeExplained
28 of 28 rows
Belge (Document)
İç içe alt belgeler ayrı tablolar yerine tek bir ana belgenin içinde yaşar.
Birlikte okunan bire-az ilişkileri. Satır kalemleriyle bir sipariş. Üç adresi olan bir kullanıcı.
Veriyi değil yabancı bir id sakla. İkinci bir okuma veya $lookup ile çöz.
Büyük, paylaşılan veya bağımsız güncellenen alt varlıklar. Koleksiyonlar arası çoka-çok bağlantılar.
Ana belge kısa bir çocuk dizisi gömer; tüm küme tek belge olarak sığar ve yüklenir.
Profildeki birkaç telefon numarası veya tercih. Tek okuma hem ebeveyni hem çocukları döndürür.
Çocuklar kendi koleksiyonunda yaşar; her çocuk ana id'yi taşır ya da ana belge sınırlı bir id dizisi tutar.
Gömmeyecek kadar büyük veya bağımsız kümeler. Çocukları ana id ile sorgula.
Çocuk ana id'yi saklar; küme sınırsız olduğundan ana belge asla çocuk listelemez.
Bir makineye veya kullanıcıya bağlı olaylar, günlükler, oylar. Çocukları ana id ile filtrele, sayfala.
Farklı varlık türlerinden belgeler bir type alanıyla ayrılarak tek koleksiyonu paylaşır.
Birçok üst türe bağlanan ve hepsi tek yolla sorgulanan yorumlar veya bildirimler.
Birkaç uç varlık ortak şekilden ayrılır; boyutu veya trafiği gerisini bozamaz.
Takipçi listesi veya sayaçları normal belgeyi büyütecek ünlü hesaplar.
Her revizyon aynı id ve artan sürüm numarasıyla yeni bir belgedir; sorgu en yenisini seçer.
Eski revizyonlar sorgulanabilir kalan denetim izleri ve düzenleme geçmişi.
Türetilmiş değerler yazma anında hesaplanıp özetledikleri verinin yanında saklanır.
Aksi halde her okumada aggregation çalışacak toplamlar, puanlar ve ilk-N listeleri.
Key-value ve wide-column
DynamoDB tasarım terimi: aşırı yüklenmiş partition ve sort anahtarlarıyla birçok varlık türü tek tabloda birleştirilir.
Heterojen öğeleri join olmadan tek sorguda getirme.
Tek anahtar özniteliği USER# veya ORDER# gibi öneklerle işaretlenerek birçok varlık türüne hizmet eder.
Tek tablo tasarımları. İlgili öğeleri tek partition altında topla ve tek sorguda getir.
Partition anahtarı satırları düğümlere yayar; sort anahtarı her partition içinde sıralar.
Cassandra ve DynamoDB. Aralık taramaları, sıralı günlükler, hiyerarşik bileşik anahtarlar.
Birkaç öznitelik ayraçlı tek sort anahtarına istiflenir — country#region#city — böylece önek eşleşmesi hiyerarşide aşağı iner.
Hiyerarşiler ve çok yönlü filtreler. Tek sıralı aralık sorgusu birçok indeksli aramanın yerine geçer.
Olaylar sabit pencerelere — saat, gün, ay — özel partition veya tablolar altında gruplanır.
Metrikler, günlükler ve IoT telemetrisi. Partition boyutunu sınırlar, soğuk verinin eskimesini sağlar.
Çok okunan alanlar kayıtlar arasında çoğaltılır; sorgu ikinci bir aramanın peşine düşmez.
Nihai tutarlılığın kabul edilebilir ve depolamanın ucuz olduğu okuma ağırlıklı iş yükleri.
Yalnızca bazı öğelerin taşıdığı bir öznitelik üzerine kurulu ikincil dizin; onu taşımayan öğeler dizine hiç girmez.
Alternatif erişim yolları. Tam tarama olmadan seyrek alt kümeyi — açık siparişler, gönderilmemiş öğeler — bul.
Önce tam sorguları yaz; tablo düzeni onlardan türetilir, varlıklardan veya normal formdan değil.
Cassandra ve DynamoDB şema çalışması. Sorgu ailesi başına bir tablo; veri modeli soruyu kopyalar.
Hiçbir anahtar soruyla eşleşmediğinden sorgu birçok partition veya düğüme paralel vurmak zorunda kalır.
Hedef değil tasarlanması gereken bir koku. Tabloyu yeniden anahtarla ki yaygın sorgu tek partitiona düşsün.
Kopyalar yazma anında her okuyucunun görünümüne itilir ya da okuma anında toplanıp birleştirilir.
Akışlar ve zaman çizelgeleri. Küçük kitleler için yazma anı, dev kitleler için okuma anı fan-out.
Önceden hesaplanmış bir sorgu sonucu kendi tablosu olarak saklanır ve taban değiştikçe güncel tutulur.
Tek yazma yolu üzerinde alternatif okuma biçimleri. Taban tablonun cevaplayamayacağı sorgulara hizmet eder.
Graf (Graph)
Her kenar, kaynak düğümden hedef düğümü gösteren bir satır veya demettir.
Graf ve özellik depoları. Arkadaşının arkadaşı sorguları, yönlendirme, öneriler.
Her ilişki kendi koleksiyonunda bir belgedir; from ve to id'lerini artı bağ özniteliklerini taşır.
Belge depolarında graflar. Bağın kendisine ait öznitelikler — puan, rol, zaman damgası.
Her düğüme derinlik öncelikli gezinmeden sol ve sağ sayaçlar yazılır; bir alt ağaç ebeveyninin aralığının içinde yaşar.
Okuma ağırlıklı ağaçlar. Tek BETWEEN sorgusu bir alt ağacı döndürür; eklemeler gezinmeyi yeniden numaralandırır.
Özel bir tablo, derinliği sıfırda her düğümü de içeren tüm ata-torun çiftlerini kaydeder.
Herhangi bir derinlikte tüm dal sorguları. Basit join'ler; bedeli depolama ve bakım.
Özellik grafları düğümlere ve kenarlara anahtar-değer öznitelikleri ekler; RDF her şeyi özne-yüklem-nesne üçlüleri olarak ifade eder.
Zengin geçişler için özellik grafları (Neo4j); bağlı açık veri ve ontoloji alışverişi için RDF.
Vektör (Vector)
Yüksek boyutlu bir float dizisi metadata'nın yanında durur. Bir ANN dizini en yakın komşuları bulur.
Anlamsal arama, RAG getirimi, öneriler ve yapılandırılmamış içerik üzerinde benzerlik.
Kaynak belgeler — boyuta, örtüşmeye veya yapıya göre — bölünür; sonra her parça ayrıca gömülür.
RAG getirim kalitesi. Parça boyutu kesinlik ile hatırlama arasında denge kurar; örtüşme bölünen cümleleri korur.
Yoğun vektör benzerliği anahtar kelime eşleşmesinin yanında koşar; iki sıralı liste tek sonuca kaynaşır.
Hem kesin terimler hem anlam isteyen, üstüne metadata filtreleri eklenen sorgular.