Подтвердить что ты не робот

Графически структурированные базы данных и Php

Я хочу использовать базу данных графа, используя php. Можете ли вы указать некоторые ресурсы на то, с чего начать? Есть ли какой-нибудь пример кода/учебника? Или существуют ли какие-либо другие способы хранения данных, которые связаны друг с другом в абсолютно случайных/абстрактных ситуациях?

-

Очень абстрактный пример необходимых отношений: Джон относится к Мэри, оба относятся к Школе, Джон - Талл, Мэри короткая, у Джона есть голубые глаза, у Мэри есть Зеленые глаза, запрос, который я хочу, это люди, связанные с "Коротким люди, которые имеют" Зеленые глаза "и ходят в школу" → ответить Джон

-

Другой пример:

    TrackA -> ArtistA
           -> ArtistB

           -> AlbumA -----> [ label ]
           -> AlbumB -----> [   A   ]

           -> TrackA:Remix
           -> Genre:House

           -> [ Album ] -----> [ label ]
   TrackB  -> [   C   ]        [   B   ]

Пример запросов:

В каком жанре находится TrackB ближе? ответ: House - потому что это связано с альбомом C, который связан с TrackA и связан с жанром: House

Получить все Жанр: альбомы, связанные с домом Label A: результат: AlbumA, AlbumB - потому что у них обоих есть TrackA, который связан с жанром: House

-

Это возможно в MySQL, но для этого требуется фиксированный набор атрибутов/столбцов для каждого элемента и сложный негибкий запрос, вместо этого мне нужно, чтобы каждый атрибут являлся элементом отдельно и вместо того, чтобы "принадлежать" чему-либо, быть связанными с чем-то.

4b9b3361

Ответ 1

Там будет какая-то работа, чтобы сделать графическую базу данных Neo4j доступной из PHP, см. эта страница wiki для получения дополнительной информации! Что касается того, как моделировать ваш домен в виде графика, список рассылки пользователей имеет тенденцию быть довольно устрашающим.

Обновление: теперь есть короткий начало сообщения в блоге для клиента PHP neo4j REST.

Ответ 2

Звучит для меня немного как типичная проблема Prolog... это совсем другой язык программирования, чем PHP, Но, возможно, вы могли бы работать с popen.

Или вы определяете таблицу SQL со столбцами [id, predicate, atom1, atom2], чтобы сохранить истинность "Мэри имеет зеленые глаза": предикат = "имеет", atom1 = "Mary", atom2 = "Зеленые глаза" ".

Теперь вы можете присоединиться и фильтровать предикаты и атрибуты с помощью SQL по вашему выбору.

Ответ 4

Похоже, вы должны подойти так:

1) Назовите объект графа, который позволит вам запрашивать ваши данные так, как вы хотите.

2) Запишите слой сохранения для вашего объекта

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

Ответ 5

Мое предложение - выбрать DB на основе Java, например OrientDB или neo4j, а затем использовать его с помощью PHP/Java bridge. В ближайшем будущем neo4j (и в какой-то момент OrientDB также) должен получить встроенную поддержку php, и вы можете заменить мост собственным доступом.

Ответ 6

Хорошо, учитывая этот вопрос, один год, может быть интересно отметить, что вы можете делать такой запрос с каждым хранилищем данных rdf, поддерживающим sparql или сопоставимые языки.

Ответ 8

Вы также можете найти клиента Rexster для php: https://github.com/PommeVerte/rexpro-php

В качестве дополнительной информации. Rexster может загружать графики из других графических dbs, таких как Neo4j и OrientDb среди других.