zoukankan      html  css  js  c++  java
  • NEO4j简单入门

    Neo4j是:

    1. 一个开源
    2. 无Schema
    3. 没有SQL
    4. 图形数据库

    图形数据库也称为图形数据库管理系统或GDBMS。
    Neo4j的官方网站:http://www.neo4j.org

    Neo4j的优点

    1. 它很容易表示连接的数据
    2. 检索/遍历/导航更多的连接数据是非常容易和快速的
    3. 它非常容易地表示半结构化数据
    4. Neo4j CQL查询语言命令是人性化的可读格式,非常容易学习
    5. 它使用简单而强大的数据模型
    6. 它不需要复杂的连接来检索连接的/相关的数据,因为它很容易检索它的相邻节点或关系细节没有连接或索引

    图形数据库

    1. 定义:图形数据库是以图形结构的形式存储数据的数据库。 它以节点,关系和属 的形式存储应用程序的数据。 正如RDBMS以表的“行,列”的形式存储数据,GDBMS以“图形”的形式存储数据。

    2. 简单地说,我们可以说图数据库主要用于存储更多的连接数据。

    如果我们使用RDBMS数据库来存储更多连接的数据,那么它们不能提供用于遍历大量数据的适当性能。 在这些情况下,Graph Database提高了应用程序性能。

    如今,大多数社交网络应用程序(如Facebook,Google +,LinkedIn,Twitter,Yammer等)和视频托管应用程序(如Google YouTube,Flickr,Yahoo Video等)都在使用更多连接的数据。

    图数据库基本数据结构

    1. 节点(Node)是图数据库中的一个基本元素,用以表示一个实体记录,就像关系数据库中的一条记录一样。在Neo4j中节点可以包含多个属性(Property)和多个标签(Label)。
    2. 关系(Relationship)同样是图数据库中的基本元素。当数据库中已经存在节点后,需要将节点连接起来构成图。关系就是用来连接两个节点,关系也称为图论的边(Edge),其始端和末端都必须是节点,关系不能指向空也不能从空发起。关系和节点一样可以包含多个属性,但关系只能有一个类型(Type)。
    3. 当使用节点和关系创建了一个图后,在此图中任意两个节点间都是可能存在路径的。路径也有长度的概念,也就是路径中关系的条数。

    Neo4j - CQL简介

    CQL代表Cypher查询语言。 像Oracle数据库具有查询语言SQL,Neo4j具有CQL作为查询语言。

    Neo4j CQL -

    1. 它是Neo4j图形数据库的查询语言。
    2. 它是一种声明性模式匹配语言
    3. 它遵循SQL语法。
    4. 它的语法是非常简单且人性化、可读的格式。
    5. Neo4j CQL 已命令来执行数据库操作。
    6. Neo4j CQL 支持多个子句像在哪里,顺序等,以非常简单的方式编写非常复杂的查询。
    7. NNeo4j CQL 支持一些功能,如字符串,Aggregation.In 加入他们,它还支持一些关系功能。

    语法

    1. 一对圆括号来表示节点。如:(), (foo)。

    2. 一对短横线(即“--”)表示:一个无方向关系。有方向的关系在其中一段加上一个箭头(即“<--”或“-->”)。

    3. 方括号表达式[…]可用于添加详情。里面可以包含变量、属性和或者类型信息。

    4. 当需要引用模式(pattern)或者查询的某一部分的时候,可以对其进行命名。针对不同部分的这些命名被称为变量。

    5. Neo4j图由节点和关系构成。节点可能还有标签和属性,关系可能还有类型和属性。节点和关系都是简单的低层次的构建块。单个节点或者关系只能编码很少的信息,但模式可以将很多节点和关系编码为任意复杂的想法。

    6. CREATE语句用于创建图元素:节点和关系、索引。

       CREATE (n:Person:Admin)
      

    上面这条CREATE语句创建了一个节点,这个节点有两个标签Person和Admin

    CREATE (a)-[r:RELTYPE]->(b)
    

    上面这条CREATE语句创建了一个关系,由节点(a)指向节点(b),这个关系有一个type:RELTYPE

    1. MATCH语句用指定的模式检索数据库。

      MATCH (movie:Movie)
      RETURN movie.title 
      

    返回数据库中的所有电影的title。
    非常重要的一点是match不能单独使用,必须要配合return 或者 update 一起使用,否则直接error

    1. WHERE在MATCH或者OPTINAL MATCH语句中添加约束,或者与WITH一起使用来过滤结果。

       MATCH (n)
       WHERE n:Movie and n.released > 1990
       RETURN n 
      

    将返回released > 1990的’Movie节点。

    1. OPTINAL MATCH语句用于搜索模式中描述的匹配项,对于找不到的项用null代替。

       MATCH (a:Movie { title: 'The Matrix' })
       OPTIONAL MATCH (a)-->(x)
       RETURN x 
      

    如果这个节点没有外向关系,返回null。

  • 相关阅读:
    uva11235 FrequentValues (ST表)
    hdu5449 Robot Dog (树形dp+倍增lca)
    [BZOJ1637][Usaco2007 Mar]Balanced Lineup
    [BZOJ1688][Usaco2005 Open]Disease Manangement 疾病管理
    Luogu1119灾后重建
    [APIO2012]派遣
    [HNOI2004]宠物收养场
    [USACO14DEC] 驮运Piggy Back
    [USACO14JAN]滑雪等级Ski Course Rating
    [CODEVS3366] 矿石
  • 原文地址:https://www.cnblogs.com/gzyc/p/10674758.html
Copyright © 2011-2022 走看看