Я создаю систему, которая позволяет пользователям создавать контент и редактировать его, сохраняя доступ ко всем предыдущим версиям. В некотором смысле вы можете подумать о том, как StackOverflow позволяет людям публиковать вопрос, затем редактировать вопрос и по-прежнему просматривать все предыдущие версии.
Однако мои пользователи должны иметь возможность выделять текст в контенте и добавлять комментарии к этому конкретному тексту. Таким образом, вместо добавления комментария ко всему большому количеству контента (как в SO), они могут указывать на конкретное слово или фразу в контенте и прикреплять к нему комментарий.
Когда я отображаю большой контент, мне нужно показать все комментарии, которые когда-либо были добавлены в него, независимо от того, что содержит текущая версия. Поэтому, если слово или фраза, к которой был прикреплен комментарий, было удалено, мне все равно нужно показать комментарий, хотя этот комментарий может как-то указывать, что он не прикреплен в текущей версии.
Github имеет функцию, которая позволяет участникам добавлять комментарии к определенной строке исходного кода. Это довольно близкое приближение к тому, что я хочу сделать. Однако, я верю в Github, комментарий прикреплен только к конкретной версии этого файла. В следующих версиях этого файла этот комментарий не будет отображаться.
Программное обеспечение, подобное Microsoft Word, также имеет такие функции. Но моим приложением будет веб-приложение с функциями совместной работы среди пользователей, поэтому несколько пользователей могут комментировать любой данный контент.
Я рассматриваю возможность использования решения NoSQL, такого как CouchDB или MongoDB, для хранения больших двоичных объектов контента и комментариев. Другой вариант - использовать git для поддержки блобов контента и управления версиями, но я не уверен, где я буду хранить информацию комментариев.
Есть предложения о том, как лучше всего моделировать и хранить этот тип информации? Как комментарий будет ссылаться на слова или фразы в содержании? Как лучше узнать, когда комментарий добавлен в текст в текущей версии или нет?