2015-02-25 3 views
3

Я новичок в построении графиков баз данных и задаю вопрос, который может быть легко ответить для вас, ребята.База данных графиков социальных сетей и профилей

Если я решаю использовать базу данных графа (например, Neo4j) для приложения в социальной сети, например, сохранить данные профиля и сообщения в этой базе данных или мне нужна вторая база данных, такая как MySQL?

Все примеры, которые я нашел, сохраняют только несколько свойств в базе данных графа (например, имя и отношение). Поэтому мой вопрос.

Большое спасибо

ответ

1

Вы можете хранить эту информацию непосредственно в базе данных графа. Это возможно не только, но даже рекомендуется, так как эта информация может повлиять на различные запросы обхода, которые вы хотите выполнить против базы данных.

В любой момент времени вы можете создать отдельный слой для пользователей, которые много взаимодействуют (через сообщения). Будет полезно иметь эту информацию в базе данных графа.

То же самое касается информации о профиле. Возможно, вы захотите запустить обход только по определенному типу профиля (одиночные мужчины и т. Д.), Тогда вам нужно будет иметь эту информацию под рукой в ​​вашей базе данных графа.

Я бы сказал: если у вас нет конкретной причины использовать MYSQL вместе с вашим графиком db, вероятно, вы должны сделать все в базе данных графа.

Некоторые вещи, чтобы иметь в виду:

  • Индексирование может быть сложным в зависимости от ваших потребностей. Обычно вам нужно немного подумать о своей модели данных, а не вскакивать в нее вслепую.
  • Следите за максимальным количеством элементов, которые может обрабатывать график db по вашему выбору.
  • Некоторое содержимое, такое как капли изображения и т. Д., Возможно, не подходит для хранения в db. Я никогда не рассматривал это, хотя я мог ошибаться.

Дополнительные проблемы:

Так что я должен создать узел для каждого профиля, содержащий свойства профиля и отношения к сообщению узлов?

Это немного сложно, ответ да, но в зависимости от количества сообщений, сделанных пользователем, этот пользовательский узел (вершина) потенциально может стать супернодом. «Суперном» является вершиной с непропорционально большим числом краев инцидентов. Это может привести к проблемам с производительностью. Чтобы противостоять этому, вы захотите убедиться, что ваш график db может правильно обрабатывать эти экземпляры; как правило, путем внедрения индексных ориентированных индексов. Некоторое время я не проверял, но в прошлый раз, когда Neo4j не поддерживал их. OrientDb и Titan (среди прочих). Кто-то может исправить меня, если Neo4j теперь имеет некоторую поддержку.

Это будет зависеть от того, как вы решаете пересечь график, сколько исходящих краев вы считаете, что вам придется сканировать в вашем обходе и т. Д. И т. Д. В общем, вам нужно начать процесс, выяснив, что запросы, которые вы собираетесь сделать, а затем смоделируйте график соответствующим образом.

В чем разница между ограничениями между Neo4j и OrientDb?

Ограничения Neo4j, по-видимому, теоретически определены. Из дополнительных комментариев здесь кажется, что они планируют увеличить их в ближайшее время. OrientDb и Titan считаются базами данных для значительно больших графиков, поэтому их лимиты на данный момент выше. В действительности, даже если эти ограничения довольно далеко, реальный вопрос заключается в том, «вы собираетесь ударить их». Я ответил «да» этому в прошлом, и именно поэтому сегодня я использую Titan. Но ограничения Neo4j обычно достаточно высоки, что они могут удовлетворить потребности большинства людей.

+0

Благодарим вас за немедленный ответ. Поэтому я должен создать узел для каждого профиля, содержащий свойства профиля и отношения к пост-узлам (который тогда будет содержать свойства post)? – Vincenzo

+0

Ваш намек на то, чтобы следить за максимальным количеством элементов, привело меня к этой странице http://neo4j.com/docs/stable/capabilities-capacity.html#capabilities-data-size, но числа, показанные там, меня пугали, потому что они кажутся довольно маленькими по сравнению с данными OrientDB https://github.com/orientechnologies/orientdb/wiki/Limits, почему они настолько массово отличаются друг от друга? Я что-то неправильно понимаю? – Vincenzo

+0

Эй, это всего лишь голова, чтобы вы знали, что я буду решать ваши проблемы и вопросы, как только у меня будет доступ к ноутбуку! Я не уверен, какая правильная процедура SO, но я уверен, что смогу изменить свой ответ. –

Смежные вопросы