Что мне нужно знать для реализации базы данных графа доказательства концепции? - PullRequest
1 голос
/ 26 июня 2011

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

  • График может быть только направленным.
  • База данных должна быть встроена в работающий процесс, и поэтому она будет храниться в памяти.
  • База данных будет выполнять только следующие операции:
    • Чтение с узла.
    • Запись в узел (создание / обновление)
    • Удаление узла
    • перенаправление ребер (операция, при которой узел, у которого ребро указывало на один узел, теперь будет указывать на другой)
    • алгоритм поиска графа, который не относится к этому вопросу.
  • База данных графа должна содержать и обрабатывать только три типа узлов.

Что мне нужно знать, чтобы написать это как доказательство концепции? Сколько времени потребуется, чтобы написать это?
Подойдет ли функционально-ориентированный подход (я знаю, что он лучше обрабатывает рекурсию) лучше, чем объектно-ориентированный подход?
Мои ограничения облегчают реализацию?

Ответы [ 2 ]

1 голос
/ 23 января 2012

База данных должна быть встроена в работающий процесс, и, следовательно, она будет храниться в памяти.

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

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

1 голос
/ 27 июня 2011

Если вы используете какое-то другое хранилище данных в качестве бэкэнда, вы могли бы быстро написать подтверждение концепции, просто добавив API-интерфейс graphdb сверху. Относительно размера проекта: посмотрите вокруг на такие места, как SourceForge и GitHub, и вы сможете найти небольшие реализации graphdb. Затем вы можете взглянуть на строки исходного кода и функции и получить представление о вашем проекте. Вы не упоминаете такие вещи, как транзакции и восстановление после сбоев - если вы хотите, это потребует гораздо больше усилий.

...