Cassandra/Scylla 作为 JanusGraph 的图形数据库后端,API 使用 GraphQl 公开
Cassandra/Scylla as graph database backen for JanusGraph and API exposed with GraphQl
我正在寻找使用 Scylla 或 Cassandra 作为后端的图形数据库,然后将 Web api 公开为 GraphQl。
你能帮我验证一下我的堆栈是否正确吗:
- GraphQl 或 TinkerPop // Api 架构,公开 api
- JanusGraph(privious Titan) // 促进图结构的数据库层
- Cassasndra 或 Scylla
虽然只是为了帮助澄清,但您几乎说对了:
GraphQL 是一种抽象,旨在帮助 development/data 开发人员更简单地访问。您必须创建一个将 GraphQL 转换为 Gremlin 的服务。
您设想的堆栈如下所示:
GraphQL -> Gremlin/TinkerPop -> JanusGraph -> 数据存储(Cassandra、Scylla 等)。
就数据存储而言,JanusGraph 与 Apache Cassandra 和 Scylla 兼容。
我喜欢@MarcintheCloud 的回答,只是想解释一下并给出我对问题的解决方案。
GraphQL 不关心或依赖于任何特定的数据库类型、KV、Graph、Document 等,实际上将自己推销为能够从不同来源获取数据。因此,您可以创建一个 UI 来从 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 的用户关注者并获取 id、用户名和 bio 字段。有更复杂的 GraphQL 到 Gremlin 示例的示例,它非常适合我的用例。
gremlin 遍历可能如下所示
g.V().hasLabel('users').has('user_id', eq(5)).in('following').hasLabel('users').values('user_id', 'username', 'bio')
我还在 PHP 中开源了一个示例 Twitter Graph,如果您想使用它 https://github.com/The-Don-Himself/gremlin-ogm。
我正在寻找使用 Scylla 或 Cassandra 作为后端的图形数据库,然后将 Web api 公开为 GraphQl。
你能帮我验证一下我的堆栈是否正确吗:
- GraphQl 或 TinkerPop // Api 架构,公开 api
- JanusGraph(privious Titan) // 促进图结构的数据库层
- Cassasndra 或 Scylla
虽然只是为了帮助澄清,但您几乎说对了:
GraphQL 是一种抽象,旨在帮助 development/data 开发人员更简单地访问。您必须创建一个将 GraphQL 转换为 Gremlin 的服务。
您设想的堆栈如下所示:
GraphQL -> Gremlin/TinkerPop -> JanusGraph -> 数据存储(Cassandra、Scylla 等)。
就数据存储而言,JanusGraph 与 Apache Cassandra 和 Scylla 兼容。
我喜欢@MarcintheCloud 的回答,只是想解释一下并给出我对问题的解决方案。
GraphQL 不关心或依赖于任何特定的数据库类型、KV、Graph、Document 等,实际上将自己推销为能够从不同来源获取数据。因此,您可以创建一个 UI 来从 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 的用户关注者并获取 id、用户名和 bio 字段。有更复杂的 GraphQL 到 Gremlin 示例的示例,它非常适合我的用例。
gremlin 遍历可能如下所示
g.V().hasLabel('users').has('user_id', eq(5)).in('following').hasLabel('users').values('user_id', 'username', 'bio')
我还在 PHP 中开源了一个示例 Twitter Graph,如果您想使用它 https://github.com/The-Don-Himself/gremlin-ogm。