是否有任何实现,api或OrientDB和C#的例子.我正在研究OrientDB的原因是因为它是我发现的唯一一个Graph和Document的组合.
关于我应该怎么做的任何建议.
我的下一个选择是RavenDB,但我不确定它是否支持连接或链接文档?
有什么想法吗...
我是图表的新手,非常有趣.这个问题可能是noob one,但请提供一些好材料.
我正在尝试创建一个小型社交网络,其中每个用户都是一个节点,并且与他的朋友有无向连接.
它工作正常但现在我想将它存储在数据库中.
如何存储数据?如何存储节点的所有连接节点(指针).
它是更好地删除用户后的存储注销,当他在登录或登录应该在和退出shouldnot有节点上的任何影响,从数据库中读取吗?
我知道它的理论.任何参考都会非常有用.
我正在做Neo4j图数据库的研究工作.我使用Neo4j的主要目的是为了搜索目的.现在我正在研究它的社区版本,我已经读过(有疑问)它允许大约1亿个节点.我有一个概念,直到现在它对我有用,但现在我很困惑.
我的模块: - 前 - 这就像用户提出的问题一样,会有问题的标签和问题的级别.节点将创建问题,标签和级别,并与它们之间的关系互连.还将有一些其他模块.因此,图表的大小每天都会增加.
我的问题: -
目前,根据编码部分我使用neo4j-jdbc驱动程序与cypher queries.as建议我只有SO的知名用户. QUERY - - 是否可以在默认数据库上工作,或者我必须在db的特定大小之后创建一个新数据库?
我想表示Neo4j图中节点之间关系的变化强度.
对于静态图,可以通过在关系上设置"strength"属性来轻松完成:
A --knows--> B
|
strength
|
3
Run Code Online (Sandbox Code Playgroud)
但是,对于需要随时间更新的图形,存在一个问题,因为增加属性的值不能通过原子方式(通过REST接口)完成,因为需要先写入读取.如果响应于传入的流数据更新图形,则必须递增(而不仅仅是更新).
我需要确保只有一个REST客户端一次读写(外部同步),或者只关注嵌入式API,因此我可以使用内置事务.这可能是可行的但似乎很尴尬.
另一种解决方案可能是记录多个关系,没有任何属性,因此"强度"实际上是关系的数量,即
A knows B
A knows B
A knows B
Run Code Online (Sandbox Code Playgroud)
意味着力量的关系3.
有没有人尝试过这种方法,是否有可能遇到性能问题,特别是在阅读时?
有没有更好的方法来模拟这个?
当我接近这个时,我试图对这两种技术进行比较,我想知道你们是否已经有过处理任何一种或两种技术的经验?在处理类似的用例时,我主要对性能数字感兴趣.
我正在使用带有webadmin界面的Neo4j.
当我运行查询时,我以图形方式显示节点和关系.但是,每当我移动节点时,连接到它的其他节点也会移动.我怎样才能阻止这种" 力吸引 "效应呢?
非常感谢你
使用Match和Where可以按ID删除关系.
Match ()-[r]-() Where ID(r)=1 Delete r
Run Code Online (Sandbox Code Playgroud)
有更简单的方法吗?
我的目标是在cypher查询中访问和改变节点的属性,其中要访问和变异的属性的名称是未知的字符串值.
例如,考虑一个命令:
查找包含两个属性的所有节点,以使第一个属性的名称为小写,后者的名称为前者的大写表示. 然后,使用小写字符串名称将属性的值传播到具有大写名称的属性的值.
特殊情况很简单:
MATCH ( node )
WHERE has(node.age) AND has(node.AGE) AND node.age <> node.AGE
SET node.AGE = node.age
RETURN node;
Run Code Online (Sandbox Code Playgroud)
但我似乎无法找到在单个请求中实现一般情况的方法.
具体来说,我无法:
为了清楚起见,我将包括我处理一般情况的尝试.在我未能修改节点属性的情况下,我能够生成一个命令的密码,如果它在后续事务中执行,它将完成我的最终目标.
MERGE ( justToMakeSureOneExists { age: 14, AGE : 140 } ) WITH justToMakeSureOneExists
MATCH (node)
WHERE ANY ( kx IN keys(node) WHERE kx = LOWER(kx) AND ANY ( ky in keys(node) WHERE ky = UPPER(kx) ) )
REMOVE node.name_conflicts // make sure results are current
FOREACH(kx …Run Code Online (Sandbox Code Playgroud) 我正在努力将数据从postgres手动迁移到Graph Database.
我写了下面的脚本:
import psycopg2
from py2neo import authenticate, Graph
authenticate("localhost:7474", "neo4j", "password")
n4j_graph = Graph("http://localhost:7474/db/data/")
try:
conn=psycopg2.connect("dbname='db_name' user='user' password='password'")
except:
print "good bye"
cur = conn.cursor()
try:
cur.execute("""SELECT * from table_name""")
except:
print "not found"
rows = cur.fetchall()
for row in rows:
username = row[4]
email = row[7]
s = '''MERGE (u:User { username: "%(username)s"}) MERGE (e:Email { email: "%(email)s"}) CREATE UNIQUE (u)-[:BELONGS_TO]->(e)''' %{"username": username, "email": email}
print s
n4j_graph.cypher.execute(s)
Run Code Online (Sandbox Code Playgroud)
错误:
AttributeError:'Graph'对象没有属性'cypher'
这个问题我通过将py2neo更新到版本2.0.8来解决.
pip uninstall py2neo
pip install py2neo==2.0.8 …Run Code Online (Sandbox Code Playgroud) 我正在为我正在构建的应用程序建模图形,我有n个用户连接到n个用户,我也有n个帖子可以被n个用户喜欢.所以对于给定的用户,结构看起来像这样,

如果用户喜欢数百个Post节点,它将为节点生成100条边(realtionships),当post为n时,边也将为n.因此,一个用户将连接到n个用户和n个帖子以及n个未来的节点类型.
因此,使用中间节点从而减少给定节点的边缘,这看起来像这样,
如果用户有一个名为Collection的中间节点,它将连接到like,因为这是一个属性图,我可以向中间节点添加一个属性,使其行为类似于来自用户的连接(类似于Likes. username = User.username)
这将类似于这个问题(图形数据库建模:我应该使用一个集合节点来避免许多依赖于节点)
我的想法是
这种中间连接节点的方式可以将垃圾与主节点隔离,从而可以加速自定义算法.
我的问题,
graph-databases ×10
neo4j ×8
cypher ×3
nosql ×3
database ×2
orientdb ×2
architecture ×1
c# ×1
graph ×1
indexing ×1
java ×1
nodes ×1
py2neo ×1
python ×1
ravendb ×1
reflection ×1
relationship ×1
titan ×1