标签: neo4j

FlockDB与neo4j相比如何?

无论FlockDBNeo4j的是保持大图数据集的开源框架.有没有人熟悉这两种产品的比较?

scalability graph neo4j flockdb

22
推荐指数
1
解决办法
8463
查看次数

triplestores和图形数据库之间有什么区别?

有三个商店(语义数据库),还有通用图形数据库.

两者都基于通过关系将一个"项目"链接到另一个"项目"的类似概念.Triplestores支持RDF并由SPARQL查询,但是这些附加组件也可以(并且)在通用图形数据库的顶部实现.

什么是使您更喜欢语义db/triplestore到neo4j这样的通用图数据库的根本区别?

graph triplestore neo4j graph-databases semantics

22
推荐指数
3
解决办法
8249
查看次数

检查节点是否存在,如果不存在则创建

我试图建立一个数据库,每当一个节点不存在时,它将创建一个新的并在此节点和另一个节点之间建立关系.如果节点存在,则两个节点都会建立关系.

我的问题是,如果我尝试连接2个现有节点,将重新创建第二个节点.我尝试使用MERGE和CREATE UNIQUE,两者都没有用.

我的例子:

CREATE (test1 name:'1'})
MATCH (n)
WHERE n.name = '1'
MERGE (n)-[:know {r:'123'}]->(test3 {name:'3'})

MATCH (n)
WHERE n.name = '1'
MERGE (n)-[:know {r:'123'}]->(test2 {name:'2'})
Run Code Online (Sandbox Code Playgroud)

到这里它的工作原理,但:

MATCH (n)
WHERE n.name = '3'
MERGE (n)-[:know {r:'123'}]->(test2 {name:'2'})
Run Code Online (Sandbox Code Playgroud)

它创建一个新节点"2"而不是连接到存在的节点.

neo4j cypher

22
推荐指数
1
解决办法
1万
查看次数

Neo4j - 如何从浏览器中删除未使用的属性键?

我删除了所有节点和关系(删除neo4j 1.8中的所有节点和关系),但我看到在Neo4j浏览器中,删除之前存在的"属性键"仍然存在.

见下图:

在此输入图像描述

如何让所有"属性键"消失,所以我最终可以得到一个全新的数据库?我理解这个孤立属性键本身并不会造成问题,但它们会使浏览器体验变得混乱,并且会开始混淆新属性.

谢谢!

neo4j nosql

22
推荐指数
1
解决办法
2万
查看次数

炒作图数据库...为什么?

围绕图形数据库有一些炒作.我想知道为什么.

在今天可以使用图形数据库解决的Web环境中,可以遇到的问题是什么?图形数据库是否适用于经典应用程序,即可以用作关系数据库的替代品吗?所以实际上这是两个问题.

相关: 有没有人使用基于图形的数据库(http://neo4j.org/)?

neo4j graph-databases orientdb rexster

21
推荐指数
1
解决办法
6153
查看次数

neo4j的密码交易是否破裂?

TL; DR:我要么失去理智,要么neo4j的交易稍有破产.看起来未提交的节点在提交的事务之外可用,缺少属性 - 或者同样奇怪的东西.

我们的node.js应用程序使用neo4j.它的一部分必须生成唯一的ID.我们有以下cypher查询,用于查找最后一个:Id类型的节点并尝试使用提交新:Id节点last_uuid+1.

MATCH (i:Id) WITH i ORDER BY i.uuid DESC LIMIT 1  #with it like a sub-return, will "run" the rest with the last i at read-time
CREATE (n:Id {label:"Test"}) 
SET n.uuid = i.uuid + 1
RETURN n
Run Code Online (Sandbox Code Playgroud)

还有一个约束:

neo4j-sh (?)$ schema
Indexes
  ON :Id(uuid) ONLINE (for uniqueness constraint) 

Constraints
  ON (id:Id) ASSERT id.uuid IS UNIQUE
Run Code Online (Sandbox Code Playgroud)

并初始化DB (:Id{uuid:1})以启动这种快乐.

应用程序代码基本上会重试上述查询,直到成功为止.如果两个或多个Id创建请求同时命中,其中只有一个将通过,其余的将失败并由应用程序代码重试.

这是有效的,直到我们并行尝试.

代码在没有uuid的情况下开始返回数据.经过大量的调查,结果是查询的写入部分(CREATE ...)以某种方式从MATCH接收:Id,没有.uuid(或其他)属性.这不应该是可能的.这是在这些节点上运行的唯一代码.

最奇怪的(也许)的事情是,如果我救inodeid,以找到在数据库节点,它确实存在,并有.uuid属性.

为了隔离这种行为,我编写了一个PoC: …

transactions neo4j cypher node-neo4j

21
推荐指数
1
解决办法
1000
查看次数

Neo4j:标签与索引属性?

假设你是Twitter,并且:

  • 你有(:User)(:Tweet)节点;
  • 推文可以被标记; 和
  • 您想查询当前正在等待审核的已标记推文列表.

您可以为这些推文添加标签,例如:AwaitingModeration,添加和索引属性,例如isAwaitingModeration = true|false.

一种选择本质上比另一种更好吗?

我知道最好的答案可能是尝试加载测试两个:),但Neo4j的实现POV有什么能使一个选项更健壮或适合这种查询吗?

这取决于任何特定时刻这种状态的推文数量吗?如果它在10s与1000s之间,那会有所作为吗?

我的印象是标签更适合大量节点,而索引属性对于较小的卷(理想情况下,唯一节点)更好,但我不确定这是否真的如此.

谢谢!

neo4j cypher

21
推荐指数
1
解决办法
2757
查看次数

如何使用Neo4J的Cypher查询返回关系类型?

我试图获得一个非常简单的Cypher查询的关系类型,如下所示

MATCH (n)-[r]-(m) RETURN n, r, m;
Run Code Online (Sandbox Code Playgroud)

不幸的是,这会返回一个空对象r.这很麻烦,因为我无法区分不同类型的关系.我可以通过添加属性来修补此问题,[r:KNOWS {type:'KNOWS'}]但我想知道是否没有直接获取关系类型的方法.

我甚至按照官方的Neo4J教程(如下所述),展示了这个问题.

图表设置:

create (_0 {`age`:55, `happy`:"Yes!", `name`:"A"})
create (_1 {`name`:"B"})
create _0-[:`KNOWS`]->_1
create _0-[:`BLOCKS`]->_1
Run Code Online (Sandbox Code Playgroud)

查询:

MATCH p=(a { name: "A" })-[r]->(b)
RETURN *
Run Code Online (Sandbox Code Playgroud)

JSON RESPONSE BODY:

{
    "results": [
        {
            "columns": [
                "a",
                "b",
                "p",
                "r"
            ],
            "data": [
                {
                    "row": [
                        {
                            "name": "A",
                            "age": 55,
                            "happy": "Yes!"
                        },
                        {
                            "name": "B"
                        },
                        [
                            {
                                "name": "A",
                                "age": 55,
                                "happy": "Yes!" …
Run Code Online (Sandbox Code Playgroud)

neo4j cypher

21
推荐指数
1
解决办法
1万
查看次数

什么(in_memory)图形DB如果聚焦建模数据

我没有想法,希望得到一些有用的意见.我正在使用这个问题来压缩我的经验并分享它们,希望激励一些经销商进一步将图形数据库建模作为一流的问题/方式.

我已经验证了node.js可以使用的一些图形数据库解决方案几周.我的用例是保存不同社交用户网络帐户的交互.需要以最有效的方式使用CPU和内存.

我最重要的要求是:

  • in_memory(至少用于编制索引)
  • 开源(并免费使用)
  • 与一等公民相同的JavaScript/Node.js表现
  • 舒适的查询和建模语言

Neo4j的

我真的很喜欢密码,所以我最好的选择是Neo4j.但是关于Neo4j的主要问题是JavaScript访问是非原生的.它使用的REST-API 比直接Java访问慢大约十倍(10倍).所以我看了一下node-neo4j-embedded,但它已经处于非活动状态超过两年了.看起来它的作者根本不活跃(坏迹象).

ArangoDB

ArangoDB非常好的核心开发人员回答了关于内部的问题.最后,它意味着JavaScript是一流的公民,因为本机查询可以被推出JS.看看开源基准测试,我认为这是公平的.但我担心他们没有使用node-neo4j-embedded作为他们的基准.基准测试比较REST-API(由于@weinberger评论而编辑).我希望他们比较本机API(也许有人足够snoopy并尝试一下! - 让我们知道!).更新:正如我现在注意到的那样,OrientDB 用新的node.js驱动程序回答了基准测试(通过启动服务器使用命令高速缓存)-Dcommand.cache.enabled = true -Dcommand.cache.minExecutionTime = 3,什么是不公平的,因为它不是查询缓存基准!)

因为我喜欢使用ArangoDB作为图形数据库,所以我有3个选择(来源:FAQ):

一般来说,它像cypher一样不舒服.我不确定如何比较以及建模数据的正确方法(如Neo4J解释得很好).我很想为ArangoDB Graphs提供类似的东西.感觉ArangoDB专注于图形操作,如果你有更多的关系而不是行,Neo4J更符合使用图形的需要(使用图形而不是连接关系的原因).

MongoDB的

基于文档的MongoDB没有针对图形操作进行优化,但后来获得了实验性的内存存储引擎.还有一些项目是in_memory或图形相关,但没有什么是真正引人注目的.在本次讨论中,看起来MongoDB并不是我喜欢使用的.

OrientDB

因为有一个关于OrientDB和MongoDB的比较(来自OrientDB),我虽然即将使用这个." OrientDB有一个混合的Document-Graph引擎 …

neo4j node.js orientdb arangodb lokijs

21
推荐指数
1
解决办法
1233
查看次数

是否有任何针对Neo4J的.NET绑定?

是否有针对Neo4j的.NET版本/绑定?

它看起来正是我想要的,但我在.NET上使用C#.

谢谢

.net c# neo4j

20
推荐指数
2
解决办法
7243
查看次数