Próbuję znaleźć odpowiednik kluczy obcych i indeksów w bazach danych NoSQL KVP lub Document. Ponieważ nie ma tabel przestawnych (do dodawania kluczy oznaczających relację między dwoma obiektami), jestem naprawdę zaskoczony, w jaki sposób można byłoby odzyskać dane w sposób, który byłby przydatny dla normalnych stron internetowych.
Powiedzmy, że mam użytkownika, który zostawia wiele komentarzy w całej witrynie. Jedynym sposobem, w jaki mogę wymyślić, aby śledzić komentarze użytkowników, jest
- Osadź je w obiekcie użytkownika (co wydaje się całkiem bezużyteczne)
- Utwórz i utrzymuj
user_id:comments
wartość zawierającą listę kluczy każdego komentarza [komentarz: 34, komentarz: 197, itd.], Abym mógł je pobrać w razie potrzeby.
Jednak biorąc pod uwagę drugi przykład, wkrótce trafisz na mur z cegły, gdy użyjesz go do śledzenia innych rzeczy, takich jak klucz o nazwie „active_comments”, który może zawierać 30 milionów identyfikatorów, co sprawia, że zapytanie każdej strony kosztuje TONĘ aktywne komentarze. Byłby również bardzo podatny na warunki wyścigowe, ponieważ wiele stron może próbować aktualizować go w tym samym czasie.
Jak mogę śledzić relacje, takie jak poniższe, w bazie danych NoSQL?
- Wszystkie komentarze użytkownika
- Wszystkie aktywne komentarze
- Wszystkie posty oznaczone [słowo kluczowe]
- Wszyscy uczniowie w klubie - lub wszystkie kluby, do których należy uczeń
A może źle o tym myślę?