图形数据库Neo4j的使用心得

本来想发博客上的,可惜博客账号密码都忘记了,发这里吧,算个总结,发现自己写这类东西比较拿手,写其他的东西真是茶壶煮饺子,有货倒不出啊。看不懂的看个目录就行了。。。。。

1调研目的:

在做资产管理的时候,设备之间是有很多关联关系的,比如物理服务器会有机房、机柜、虚拟机、服务等信息属性,而且这些都是有联系的,传统mysql在处理这些关联关系的时候多是采用外键的形式,也就是额外建表来存储这些关系。当关联关系越来多越多时,在展示和查询这些关系的时候,mysql就显得比较笨拙了,要经过多次查询聚合才能得到我们想要的结果,而图形数据库则很好的解决了这一类问题,它拥有丰富的关系展示,完整的事务支持,非常适合我们的应用场景。所以这次调研的目的就是图形数据库的基本使用以及和cmdb的结合使用问题,能够将设备之间的关系进行可视化,便于以后的故障定位。

2Neo4j图形数据库

2.1neo4j简介

Neo4j是图形数据库的一种,而图形数据库则是NoSQL数据库的一种,NoSQL数据库相信大家都听说过。它们常常可以用来处理传统的关系型数据库所难以解决的一系列问题。通常情况下,这些NoSQL数据库分为Graph,Document,ColumnFamily以及Key-ValueStore等四种。这四种类型的数据库分别使用了不同的数据结构来记录数据。因此它们所适用的场景也不尽相同。

从上图中可以看到,在需要表示多对多关系时,我们常常需要创建一个关联表来记录不同实体的多对多关系,而且这些关联表常常不用来记录信息。如果两个实体之间拥有多种关系,那么我们就需要在它们之间创建多个关联表。而在一个图形数据库中,我们只需要标明两者之间存在着不同的关系,而且从上面所展示的关系的名称上可以看出,关系是有向的。如果希望在两个结点集间建立双向关系,我们就需要为每个方向定义一个关系。也就是说,相对于关系数据库中的各种关联表,图形数据库中的关系可以通过关系能够包含属性这一功能来提供更为丰富的关系展现方式。因此相较于关系型数据库,图形数据库的用户在对事物进行抽象时将拥有一个额外的武器,那就是丰富的关系:

因此在为图形数据库定义数据展现时,我们应该以一种更为自然的方式来对这些需要展现的事物进行抽象:首先为这些事物定义其所对应的结点集,并定义该结点集所具有的各个属性。接下来辨识出它们之间的关系并创建这些关系的相应抽象。因此一个图形数据库中所承载的数据最终将有类似于下图所示的结构:

2.2Neo4j优点

1更快的数据库操作。当然,有一个前提条件,那就是数据量较大,在MySql中存储的话需要许多表,并且表之间联系较多(即有不少的操作需要join表)。

2数据更直观,相应的SQL语句也更好写(Neo4j使用Cypher语言,与传统SQL有很大不同)。

3更灵活。不管有什么新的数据需要存储,都是一律的节点和边,只需要考虑节点属性和边属性。而MySql中即意味着新的表,还要考虑和其他表的关系。

4数据库操作的速度并不会随着数据库的增大有明显的降低。这得益于Neo4j特殊的数据存储结构和专门优化的图算法。

2.3neo4j安装

2.3.1neo4j安装

1cd/tmp

wget







































北京市中科医院好不好
北京市中科医院好不好



转载请注明:http://www.xcqg58.com/pxxx/7429.html