Obecnie pracuję nad aplikacją typu wiki za pomocą CouchDB i próbuję wdrożyć schemat wersjonowania dokumentów. Widzę to na dwa sposoby:
- Przechowuj każdą wersję jako osobny dokument
- Przechowuj starsze wersje jako załączniki do jednego dokumentu.
W tej chwili mam formę # 1 działającą. Gdy użytkownik edytuje dokument i zapisuje go, zaplecze najpierw kopiuje poprzednią wersję do nowego dokumentu, a następnie zapisuje nową wersję. Każdy dokument ma tablicę „historii”, która zawiera dane dotyczące każdej wersji (identyfikator _id starej wersji, znacznik czasu, edytor itp.).
Ponieważ ta tablica historii może być dość długa dla często aktualizowanego dokumentu, mam widok, który pobiera dokument bez historii podczas normalnego odczytu (i inny widok do pobierania historii).
Moje pytanie brzmi: czuję się zaniepokojony moim obecnym podejściem i zastanawiałem się nad przejściem na metodę „przywiązania”. Ale nie jestem pewien. Mam nadzieję, że ktoś, kto zna CouchDB lepiej niż ja (pracuję nad tym dopiero od kilku tygodni - i to jest mój pierwszy projekt z wykorzystaniem CouchDB ... i NoSQL) może mi powiedzieć, jakie są zalety i wady każdego z nich podejście. A może przeoczyłem jakiś inny schemat kontroli wersji?