Мне нравится ответ @MarcintheCloud, просто хотел перефразировать и дать свое решение проблемы.
GraphQL не заботится о каком-либо конкретном типе базы данных, KV, Graph, Document и т. Д. И не зависит от него, и фактически позиционирует себя как способный извлекать данные из разных источников. Таким образом, вы можете создать пользовательский интерфейс для получения последних цен на акции из Redis, истории акций из Mongo и аналогичных акций по названию из Elasticsearch. GraphQL позволит вам абстрагировать эту сложность от вашего API (но она все еще существует в другом месте), позволяя получить все данные за один раз. Нет никакой связи между GraphQL и базами данных Graph.
Вкратце, Gremlin - это мощное средство обхода графа, сравнимое с тем, что есть в некоторых реляционных базах данных SQL.
Помимо определений, я использую их оба путем сопоставления GraphQL с Gremlin. Я попытался создать вокруг него стандарт https://github.com/The-Don-Himself/graphql2gremlin. По сути, он работает путем обмена аргументами GraphQL между вершинами и ребрами, поэтому запрос GraphQL, подобный этому
{
users(
following: {
users: {
user_id: "eq(5)"
}
}
) {
user_id
username
bio
}
}
Средство получения подписчиков пользователей для user_id 5 и получение полей идентификатора, имени пользователя и биографии. Существуют образцы гораздо более сложных примеров GraphQL to Gremlin, и они идеально подходят для моего случая использования.
Обход гремлина может выглядеть так
g.V().hasLabel('users').has('user_id', eq(5)).in('following').hasLabel('users').values('user_id', 'username', 'bio')
Я также открываю исходный код образца Twitter Graph на PHP, если вы хотите поэкспериментировать с ним https://github.com/The-Don-Himself/gremlin-ogm.
person
Don Omondi
schedule
04.01.2018