Myślę, że obecnie cała idea magazynów danych NoSQL i koncepcja baz danych dokumentów jest tak nowa i różni się od ustalonych pomysłów, które napędzają relacyjną pamięć masową, że obecnie istnieje bardzo niewiele (jeśli w ogóle) najlepszych praktyk.
W tym momencie wiemy, że zasady przechowywania danych w, powiedzmy, CouchDB (lub jakiejkolwiek innej bazie danych dokumentów) są raczej inne niż w przypadku relacyjnej bazy danych. Na przykład faktem jest, że normalizacja i dążenie do 3NF nie jest czymś, do czego należy dążyć. Jednym z typowych przykładów byłby prosty blog.
W sklepie relacyjnym będziesz mieć tabelę dla „postów”, „komentarzy” i „autorów”. Każdy autor miałby wiele postów, a każdy post miałby wiele komentarzy. Jest to model, który działa wystarczająco dobrze i dobrze odwzorowuje każdą relacyjną bazę danych. Jednak przechowywanie tych samych danych w bazie danych docDB najprawdopodobniej wyglądałoby inaczej. Prawdopodobnie miałbyś coś w rodzaju kolekcji dokumentów Post, z których każdy miałby własnego autora i osadzone w nim komentarze. Oczywiście prawdopodobnie nie jest to jedyny sposób, w jaki możesz to zrobić, i jest to swego rodzaju kompromis (teraz zapytanie o pojedynczy post jest szybkie - wykonujesz tylko jedną operację i otrzymujesz wszystko z powrotem), ale nie masz możliwości utrzymania relacji między autorami a postami (ponieważ wszystko staje się częścią dokumentu postu).
Ja też widziałem przykłady wykorzystujące atrybut „type” (w przykładzie CouchDB). Jasne, to brzmi jak realne podejście. Czy to najlepszy? Nie mam pojęcia. Z pewnością w MongoDB użyjesz oddzielnych kolekcji w bazie danych, co sprawia, że atrybut type jest całkowity nonsensem. Jednak w CouchDB... być może jest Najlepsza. Inne alternatywy? Oddzielne bazy danych dla każdego rodzaju dokumentu? Wydaje się to nieco zapętlone, więc sam skłaniałbym się ku rozwiązaniu typu „typ”. Ale to tylko ja. Być może jest coś lepszego.
Zdaję sobie sprawę, że sporo tu gadałem i powiedziałem bardzo mało, najprawdopodobniej nic, o czym jeszcze nie wiedziałeś. Chodzi mi o to – myślę, że to do nas należy eksperymentowanie z dostępnymi narzędziami i danymi, z którymi pracujemy, a z czasem dobre pomysły będą rozpowszechniane i stają się najlepsze praktyki. Myślę, że pytasz trochę za wcześnie w grze.