Хранение содержимого / ссылок узлов графа на графе БД
Я создаю социальное сетевое веб-приложение. Есть ряд связанных прав, таких как издатели, пользователи, публикации, посты, комментарии; с отношениями как подписаться, как, поделиться, комментировать, друг, следовать, работа, автор. Также как обычно есть содержание некоторых сущностей, лежат содержание публикаций, постов, комментариев.
Публикации и публикации похожи и аналогичны классическим публикациям в социальных сетях с несколькими текстовыми или медиа файлами. Публикации, сообщения и комментарии будут постоянно увеличиваться и будут достигать высоких показателей.
Я планирую использовать Cayley db, возможно, зависимость от Postgresql.
Мои полные кортежи, описывающие отношения прав человека, таковы:
publisher -publish- publication
user -subscribe- publisher
user -comment- publication
user -like- publication
user -share- publication
user -post- post
user -friend- user
user -comment- post
user -like- post
user -share- post
publisher -follow- publisher
user -work- publisher
user -author- publication
Вопрос в том:
Где хранить мои посты / комментарии, которые также содержат такие материалы, как текстовые поля от одного до многих и медиа-файлы, и будут нравиться пользователям, делиться ими и комментировать?
Должен ли я хранить записи / комментарии в графической базе данных, если это так, должен ли я хранить контент или хранить только ссылку и хранить контент в другой базе данных, таблице или документе? Что касается количества этих объектов будет достигать больших количеств.
1 ответ
Наткнулся на этот открытый вопрос и подумал, что попытаюсь ответить на него для дальнейшего использования.
И, конечно, это полностью зависит от вашей реализации и требований. Комментарии вы можете хранить в Cayley, но я бы оставил изображения / видео или другие средства массовой информации вне этого. Просто сохраните URI для определенного ресурса или UUID для объекта в другом хранилище данных.
Также для комментариев; Вы можете сохранить UUID/ID для комментария в вашей GraphDB и сохранить фактический комментарий в Postgres или даже в файле на диске (просто в качестве примера).
Лично я предпочитаю, чтобы мой график был как можно меньшим, а фактический контент - в другом хранилище.