sql >> Databáze >  >> NoSQL >> MongoDB

MongoDB vztahy pro objekty

Záleží.

Záleží na tom, kolik každého z těchto typů objektů očekáváte. Dokážete je všechny vměstnat do jednoho dokumentu MongoDB pro daného uživatele? Pravděpodobně ne.

Záleží na vztazích – je uživatel-účet vztahem jeden k mnoha nebo mnoho k mnoha? Pokud je to jeden k mnoha a počet účtů je malý, můžete se rozhodnout umístit je do IList v dokumentu uživatele.

Stále můžete modelovat vztahy v MongoDB pomocí samostatných kolekcí, ALE v databázi nejsou žádná spojení, takže to musíte udělat v kódu. Načtení uživatele a následné načtení jeho účtů může být z hlediska výkonu v pořádku.

V dokumentech můžete indexovat pole INTO. Nepřemýšlejte o indexu jako o pouhém indexu na jednoduchém poli v dokumentu (jako je SQL). Můžete použít, řekněme, kolekci značek na dokumentu a indexovat do značek. (Viz http://www.mongodb.org/display/DOCS/Indexes #Indexes-Arrays )

Když načítáte nebo zapisujete data, můžete provést částečné čtení a částečný zápis jakéhokoli dokumentu. (viz http://www.mongodb.org/display /DOCS/Retrieving+a+Podmnožina+of+polí )

A konečně, když nevidíte, jak pomocí kolekcí a indexů získat to, co chcete, můžete toho dosáhnout pomocí redukce map. Chcete-li například najít všechny aktuálně používané značky seřazené podle frekvence používání, mapujte každý dokument vydávající značky, které jsou v něm použity, a pak byste snížili které nastavíte, abyste dosáhli požadovaného výsledku. Výsledek zmenšení mapy pak můžete uložit trvale a aktualizovat jej pouze v případě potřeby.

Ještě jeden problém:Zmiňujete výpočet součtů podle značek. Pokud chcete konzistenci transakcí v účetní kvalitě, MongoDB pro vás nemusí být tou správnou volbou. "Eventual-consistency" je název hry pro datová úložiště NoSQL a obecně nejsou vhodná pro finanční transakce. Například nezáleží na tom, jestli jeden uživatel uvidí blogový příspěvek se 3 komentáři, zatímco jiný vidí 4, protože narazí na různé kopie replik, které ještě nejsou synchronizované, ale u finanční zprávy na tomto druhu konzistence záleží – vaše přehled se nemusí sčítat!




  1. Seřadit dílčí dokumenty v MongoDB

  2. Nelze smazat sbírku z mongodb

  3. Jak vytvořit pole pole objektů schématu v Mongoose.js

  4. Flask-PyMongo collMod