在AWS Neptune文档中,它表示它与Apache TinkerPop Gremlin兼容,但它仅涉及在线事务处理(OLTP)类型的图遍历查询.我还没有看到任何关于长期运行的在线分析处理(OLAP)GraphComputer查询.
是否可以对存储在AWS Neptune图数据库服务中的图形执行OLAP查询?
我目前正在将 Aws Appsync、Aws Lambda 和 Aws Neptune 用于应用程序。我的 Lambda 函数使用 NodeJS 12。现在我的问题是当我进行突变并最终进行查询(我想确保突变是先工作)。例如:
当我运行此测试查询以添加帖子时,出现以下数据为空的错误:addPost测试查询和结果
在 gremlin 中添加顶点是否返回数据/对象?如果是这样,我如何为我的 appsync graphql api 获取适当的 JSON 格式?我一直在阅读实用小精灵并在网上搜索,但没有运气。先感谢您。
amazon-web-services aws-lambda graphql aws-appsync amazon-neptune
我正在尝试使用 gremlin npm 模块并连接到 Neptune 数据库。在测试期间,我尝试让 gremlin 连接到非活动端点和无效 url,以使系统更具弹性。我预计会抛出某种错误。但是,对于无效/不活动的 url,图形遍历不会在没有消息传递的情况下解决。
const traversal = gremlin.process.AnonymousTraversalSource.traversal;
const DriverRemoteConnection = gremlin.driver.DriverRemoteConnection;
const dc = new DriverRemoteConnection('wss://localhost:80');
const g = traversal().withRemote(dc);
const data = await g.V().limit(1).toList();
console.log(data);
Run Code Online (Sandbox Code Playgroud)
我希望g.V().limit(1).toList()
在使用无效的远程连接时抛出错误。同样,promise 永远不会解决,console.log(data)
下一行的 永远不会运行。
对此的任何帮助将不胜感激!我需要某种系统来检测数据库连接是否有效,如果无效则记录错误。
使用 TinkerPop/JanusGraph 时,我可以定义 VertexLabels 和属性键,然后可以使用它们来创建复合索引。我在 Neptune 文档的某处读到索引不是必需的(或支持的)。
我的问题是,在将数据加载到数据库时如何防止重复?我在 AWS 文档中找到的唯一示例涉及加载已为每条记录提供唯一 ID 的数据,对我来说,这似乎需要首先从 RDBMS 中提取数据,以便在我之前获得所有 ID 及其关系。可以加载它。
我的理解是否正确,如果不正确我该如何解决这个问题?
我正在为嵌套评论系统设计一个数据模型。就像 Reddit 一样。
我在互联网上阅读了很多博客,我找到的所有解决方案都是尝试使用邻接列表、路径枚举、闭包表或嵌套集等设计在关系数据库中构建分层数据结构。由于缺乏 SQL 支持,所有这些解决方案都有不同的优点和缺点。MongoDB 似乎是另一个很好的 NoSQL 解决方案,具有 100 个嵌套级别和 16MB 大小限制。
我正在寻找的解决方案需要快速读取(50 RPS)。慢速插入和删除还可以。我期望通过排名来过滤和排序评论。
我可以使用 Neo4j、AWS Neptune 等图形数据库来满足此要求吗?它适合还是过度设计?
已经有一些关于这个主题的话题了..特别是这个
但是除了批处理之外,还有什么推荐的解决方案可以删除大图吗?我尝试增加超时时间但不起作用
下面是例子..
gremlin> gV().count()
==>5230885
gremlin> gV().drop().iterate()
{“requestId”:“77c64369-45fa-462f-91d7-5712e3308497”,“detailedMessage”:“评估[RequestMessage{期间脚本内发生超时,requestId = 77c64369-45fa-462f-91d7-5712e3308497,op =' eval',processor='',args={gremlin=gV().drop().iterate(),bindings={},batchSize=64}}] - 考虑增加超时","code":"TimeLimitExceededException"输入 ':help' 或 ':h' 获取帮助。显示堆栈跟踪?[yN]N
gremlin> gE().count()
==>83330550
gremlin> :远程配置超时无
==>远程超时已禁用
gremlin> gE().drop().iterate()
{“requestId”:“d418fa03-72ce-4154-86d8-42225e4b9eca”,“detailedMessage”:“评估[RequestMessage{期间脚本内发生超时,requestId = d418fa03-72ce-4154-86d8-42225e4b9eca,op =' eval',processor='',args={gremlin=gE().drop().iterate(),bindings={},batchSize=64}}] - 考虑增加超时","code":"TimeLimitExceededException"输入 ':help' 或 ':h' 获取帮助。显示堆栈跟踪?[yN]N
我是海王星的新手。在 Neptune 数据库中支持多租户的最佳方式是什么?
要求:
1. 支持数据库中的数千个租户(一个集群)
2. 通过租户过滤避免查询变得过于复杂
3. 良好的性能(如果有一种方法可以使用数据分区来加快查询时间)
4. 安全 -很难犯错误,从而导致跨租户访问。
假设我想从数据库中获取一些顶点:
g.V(1, 2, 3)
Run Code Online (Sandbox Code Playgroud)
然后我有另一组顶点:
g.V(4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
想象一下,这不仅仅是g.V()
,而是一些更复杂的遍历来获取我的顶点。但遍历必须从 开始V()
,因为我想从所有节点中进行选择。
我们还假设我想多次这样做。所以我可能想合并 7 个不同的结果集。每一种方法都可以采用完全不同的方式来获得结果。
现在我想将这两个结果合并到一个结果集中。我的第一个想法是:
g.V(1, 2, 3).fold().as('x').V(4, 5, 6).fold().as('x').select(all, 'x').unfold()
Run Code Online (Sandbox Code Playgroud)
但这行不通。第二次调用fold
将清除我的“局部变量”,因为这是一个障碍步骤。
我目前的尝试是这样的:
g.V(1, 2, 3).fold().union(identity(), V(4, 5, 6).fold()).unfold()
Run Code Online (Sandbox Code Playgroud)
这可行,但看起来有点太复杂了。如果我想重复 7 次,这将是一个非常复杂的查询。
有没有更好的方法来完成两个不同查询结果的简单合并?
非常感谢您提前的帮助
我尝试按照https://docs.aws.amazon.com/neptune/latest/userguide/get-started.html中的说明设置我的 AWS Neptune 环境。设置似乎很好,我可以使用 Neptune Notebook 安装来检查状态。状态消息为:
{
"status": "healthy",
"startTime": "Tue May 12 04:24:52 UTC 2020",
"dbEngineVersion": "1.0.2.2.R2",
"role": "writer",
"gremlin": {
"version": "tinkerpop-3.4.3"
},
"sparql": {
"version": "sparql-1.1"
},
"labMode": {
"ObjectIndex": "disabled",
"ReadWriteConflictDetection": "enabled"
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我无法通过 EC2 客户端实例中的 Gremlin 控制台连接到它,我收到 403 禁止错误,如下所示:
\,,,/
(o o)
-----oOOo-(3)-oOOo-----
plugin activated: tinkerpop.server
plugin activated: tinkerpop.utilities
plugin activated: tinkerpop.tinkergraph
gremlin> :remote connect tinkerpop.server conf/neptune-remote.yaml
WARN org.apache.tinkerpop.gremlin.driver.Cluster - Using deprecated SSL trustCertChainFile support
ERROR org.apache.tinkerpop.gremlin.driver.Handler$GremlinResponseHandler - Could not …
Run Code Online (Sandbox Code Playgroud) amazon-web-services gremlin amazon-iam gremlin-server amazon-neptune
我已阅读有关匿名遍历的文档。我知道它们可以开始使用__
,并且可以在步进调制器内使用。虽然我从概念上不理解它。为什么我们不能使用从步骤调制器内的图遍历源生成的正常遍历?例如,在下面的 gremlin 代码中创建一条边
this.g
.V(fromId) // get vertex of id given for the source
.as("fromVertex") // label as fromVertex to be accessed later
.V(toId) // get vertex of id given for destination
.coalesce( // evaluates the provided traversals in order and returns the first traversal that emits at least one element
inE(label) // check incoming edge of label given
.where( // conditional check to check if edge exists
outV() // get destination vertex of the edge to check …
Run Code Online (Sandbox Code Playgroud) amazon-neptune ×10
gremlin ×7
tinkerpop3 ×3
tinkerpop ×2
amazon-iam ×1
aws-appsync ×1
aws-lambda ×1
graph ×1
graphql ×1
janusgraph ×1
neo4j ×1
olap ×1