Я создал графическую модель для социальной сети и нуждался в конкретном совете относительно дизайна в отношении масштабирования. Прошу прощения за эти вопросы, но я не нахожу очень много ясных примеров ...Модель диаграммы Neo4j для социальной сети
ПРИМЕЧАНИЕ. Обновления статуса и узлы активности/отношения связаны списками - с новейшими элементами, постоянно размещаемыми в верхней части список.
Связанные списки позволяют для генерации подачи новостей, но могут быть сотни записей для каждого пользователя - Я полагаю, предел условие не является достаточным, даже если данные в порядке убывания по дате. Должен ли я иметь отдельный связанный список, который будет содержать только самые последние 10 обновлений статуса/активности) и постоянно заменять голову в этом списке, чтобы получить лучшую подачу фида активности, или один список будет правильно отсортирован и выполнить задание (с предельная оговорка)
Эти узлы имеют свойства (данные json с контентом, идентификаторы и т. д.) - как здесь действуют здесь «глобальные» индексы, так что я могу найти, например, пользователей, которые любят Depeche Mode, не дожидаясь ожидания продолжительность жизни для результатов? Я знаю, как добавить узел в индекс, просто интересно, не хватает ли здесь части изображения.
Безопасность - логины и пароли .. Я бы предположил, что база данных графов может их хранить, но я предположим, что это угроза безопасности на данный момент - было бы лучше сохранить это в postgres и т. д.?
Как вы бы улучшить эту модель для масштабирования? Представьте себе, что на это ушло 20 миллионов пользователей.
Представьте, что 40 миллионов пользователей - что случилось с этой моделью, когда дело доходит до масштабируемости?
Я могу оценить настроения пользователей, а не кодировать проблемы, которых у вас нет, но на самом деле хороший дизайн передней панели может действительно изменить ситуацию, когда дело доходит до плохой рекламы для вновь запущенного сайта, идущего вниз или вялого , Это может произойти в любом случае, но все же, если вы планируете заранее за счет хорошего дизайна, я думаю, вы должны это сделать. Я также чувствую, что «не дизайн для проблем, которые у вас нет», идеология - это немного похоже на разработку базы данных, но не включая функции блокировки, пока вы на самом деле их не встретите. Конечно, можно пойти * слишком * далеко и над планом, но все же ... –
Что касается паролей - я их в настоящее время хранят в СУБД и хэшах - то, что я получал, было безопасностью Neo4j в целом - если кто-то * чтобы получить доступ ко всему графику, включая хэшированные пароли, это было бы нехорошо .. Это проблема доверия - Neo4j против хорошо известного и опытного RDMBS .. –
Там «не разрабатывайте проблемы, которые у вас нет» и то есть «не разрабатывайте проблемы, которые вам не нужны в течение как минимум нескольких месяцев». Если вы разрабатываете что-то с нуля, вероятность того, что вы получите достаточное количество пользователей в одночасье для разбивки базы данных графов, невелика. Особенно, если вы новичок в графе баз данных и не знаете, что делаете. Просто создайте вещь и используйте некоторые инструменты профилирования, чтобы увидеть, какие части db на самом деле медленны (если они есть). Даже если вы получите техническую поддержку и спуститесь вниз, это не имеет значения в долгосрочной перспективе. Эти пользователи не придерживаются. – zmaril