Каковы наилучшие способы хранения графиков в постоянном хранилище

Мне интересно, какие лучшие способы хранения графиков в постоянном хранилище - для последующего анализа, поиска, кластеризации и т.д.

Я вижу, что neo4j является опцией, мне любопытно, есть ли другие доступные базы данных графов. Кто-нибудь знает, как большие социальные сети хранят свои данные на основе графиков (или другие сайты, требующие хранения графических моделей, например RDF).

Как насчет таких параметров, как Cassandra или MySQL?

Ответ 1

Базы данных диаграмм:

  • HyperGraphDB: универсальный, расширяемый, переносимый, распределенный, встраиваемый механизм хранения данных с открытым исходным кодом.
  • InfoGrid: база данных интернет-графики с множеством дополнительных программных компонентов, которые делают разработку веб-приложений REST-ful на основе графика легко.
  • vertexdb: высокопроизводительный сервер базы данных графов, который поддерживает автоматическую сборку мусора.

Источник: http://nosql.mypopescu.com/post/498705278/quick-review-of-existing-graph-databases

Библиотеки графиков:

  • WebGraph - это основа для изучения веб-графа. На своей странице - "Он предоставляет простые способы управления очень большими графиками, используя современные методы сжатия".
  • Dex - это высокопроизводительная библиотека для управления очень большими графиками или сетями.
  • Это сообщение в блоге - Построение глупо быстрой базы графиков - содержит некоторые рекомендации по созданию базы данных графа - техника они используют "ядро ввода-вывода с памятью, основанное на диске линейное хеширование".

Ответ 2

Отказ от ответственности. Я говорю о точке анализа графика.

Существует несколько форматов файлов для хранения данных графа: GraphML, GXL и несколько других. Но хранение обычно не является проблемой. Работа с графиками без полной загрузки их в ОЗУ - сложная часть.

Модель RDF слишком универсальна, чтобы выполнять серьезный анализ графиков. Если вы не возражаете против медленного анализа и программирования алгоритмов, перейдите к существующим базам данных графов - см. wikipedia.

Для реального анализа загрузите все данные в ОЗУ с помощью существующих библиотек анализа графиков, например SNAP или см. Этот вопрос.

Ответ 3

Здесь нет абсолютно правильного ответа; существует большое разнообразие вариантов, выбор которых серьезно зависит от ваших потребностей. При крупномасштабных поисках/обходах (например, в социальных сетях и аналогичных back-end) вы быстро столкнетесь с узким местом случайного ввода-вывода; Я считаю, что сохранение графика в ОЗУ в настоящее время является единственным практическим направлением. Меньше чувствительных к задержкам приложений имеют довольно широкий спектр опций, включая neo4j (с открытым исходным кодом с коммерческим вкусом) и Allegrograph (коммерческая версия с ограниченной бесплатной версией).

В Delver мы завершили реализацию нашей собственной модели денормализованных данных (по существу, списка смежности для представления графика) в ОЗУ поверх GigaSpaces (некоторую информацию можно найти в эту презентацию), с настраиваемым кодом уменьшения размера для запросов и анализа данных. Если вы идете по этому маршруту, Cassandra кажется жизнеспособной платформой с открытым исходным кодом, на которой можно строить.

Ответ 4

Вы можете посмотреть InfiniteGraph, который скоро будет выпущен для бета (http://www.infinitegraph.com/)

Если это для коммерческого использования, вы увидите, что оно нацелено на сайты с большими графами. Сайты социальных сетей создали собственные решения, которые в то время работали на них. Но они - внутренние решения, более ограниченные, чем использование чего-то вроде InfiniteGraph. Такие продукты, как Cassandra или MySQL, не были разработаны для этого набора проблем "многие-ко-многим". Ты можешь сделать это? Конечно, но это много рукописного кодирования, а не масштабируемого. Сообщите нам, если у вас есть настоящий проект, мы могли бы помочь вам разобраться в ваших графических требованиях. Благодаря, кроличий садок [email protected]