Продолжение про графы.

Aug 04, 2010 22:45

Доклад про язык программирования Gremlin, что позволяет работать с графовыми БД.

Оттуда есть ссылка на графовую БД над гиперграфами.

За исключением того, что это всё на Джаве, это примерно то, что я хотел сделать. Да и сейчас хочу, поскольку это всё на Джаве.

базы данных, языки программирования, графы

Leave a comment

Comments 18

golosptic August 4 2010, 19:51:28 UTC
А у нас графовая БД на php + MySQL :)
Работает.

Reply

thesz August 4 2010, 20:15:20 UTC
Везука. ;)

Я думал сделать транзакционный backend на SQLite, но оказалось, что графы на SQL тормозят.

Однако, оставил этот вариант про запас. ;)

Reply

golosptic August 4 2010, 20:30:20 UTC
Ну тормозят "вообщем", а в принципе возможны тут всякие компромиссы.
Например можно жертвовать скоростью обновления графой сети ради скорости выборки (ну или наоборот).

Reply


demmonoid August 4 2010, 20:21:05 UTC
Riak довольно графовый, хоть и позиционируется как document storage.
Можно создать сколько угодно ссылок для каждого объекта, к каждой ссылке тэг добавить.
Правда, алгоритмы у него заточены все же под другие нужды, и он по скорости, чистым графовым базам, думаю, всосет.

Reply

thesz August 4 2010, 20:25:10 UTC
Я думаю, что он не рассчитан на обработку большого количества небольших значений с большим количеством связей.

Посмотрю, однако.

Reply

demmonoid August 4 2010, 20:38:37 UTC
Да, в этом случае будет точно фигово. :)
Многочисленные прыжки по кластеру за значениями, особенно, если надо пройти не по 1-2, а по десятку связей.

Я пока даже презентацию до конца не досмотрел. Они там про масштабирование расскажут ведь?

Reply

demmonoid August 4 2010, 20:39:26 UTC
Тьфу, даже первую презентацию, в смысле.

Reply


philonet August 5 2010, 06:21:35 UTC
Спасиб за полезную прошлую ссыль с презентацией. Идеология аккурат та, что я хотел реализовать в виде некого массового интернет-сервиса. Да и сейчас хочу. Заместо допустим блогов и соцсетей и форумов. Несоциальная сеть гораздо интереснее по возможностям, казалось бы.

Reply

thesz August 5 2010, 07:47:33 UTC
Массовый интернет-сервис на графах - это как?

Reply

philonet August 5 2010, 10:32:27 UTC
Да вот буквально чтоб пользовали создавали граф с произвольными типами узлов и произвольными типами связей. В интерфейсе это выглядело б как создать объект, определить его тип. Связать с другим объектом, определить тип связи. Допустим, самое распространенное - общение. Это грубо говоря создание объектов текстового типа, связанных связью типа (условно) источник-отклик. Или пост-комментарий. Определение типов объектов - это по сути то же присвоение тегов. Фишка в том, что в такой среде и общение (сообщества) будут формироваться вокруг тематических узлов-тегов, соответственно для получения релевантной аудитории есть стимул тегировать объекты детальнее. С типизацией связей еще интересней - фактически у таких объектов не будет контекста, который явно или неявно имеется в любом конкретном сервисе. И пользователи сами будут создавать этот контекст, сообразно своим текущим или долгосрочным целям ( ... )

Reply


nivanych August 5 2010, 07:15:45 UTC
Спасибо, интересно. Может быть, попробуем.
А то ж, в SQL без постоянной необходимости в компромиссах никак...

Reply

thesz August 5 2010, 07:47:58 UTC
Это вот прямо hypergraphdb попробуете?

Reply

nivanych August 5 2010, 09:03:41 UTC
Ой, не знаю. Слишком он на Java завязан.
Соответственно, с совместным использованием с Haskell и OCaml будут проблемки.

Reply


alpha_cygnus August 5 2010, 09:26:08 UTC
Чо-то я не понял, а в гремлине можно таки объявлять эти новые, вычисленные рёбра? А то запросы-то, их вычисляющие, они привели, а как создать граф, который будет эти новые рёбра содержать я не понял...
Мне как раз очень хотелось в своё время сделать такую вещь, типа чтобы при добавлении ребра в граф вычислялись/добавлялись на основе их по определённым правилам новые рёбра. Типа, если в граф классов добавляется ребру super, то автоматически вычисляется какой-нить descandant. Или если объект имеет тип какого-то класса, то он автоматом также принадлежит и всем его предкам.
И чтобы эти новые свойства были неотличимы по использованию в запросах, а хранить их, вычислять на лету или кэшить - это уже детали реализации.

Reply


Leave a comment

Up