Neo4j入门教程_1

Neo4j 数据库 是一种图形数据库(不知道这么翻译准不准,暂且这么称呼吧),这种数据库与传统的关系型数据库有很大的差别。为了更好地帮助大家理解我这里就将关系型数据库与图形数据库作个比较。 
关系型数据库: 
我们常用的像 MySQL Oracle 等都是关系型数据库,在关系型数据库里面对数据的处理是这样子的:对每个对象都创建一个表,对象的属性对应表里面的列 
图1  
如图所示。在数据库里有条数据表示两个对象:tim,lili。在现实生活中我们会发现任何对象都是有某种联系的,那么关系型数据库里是怎样来表示这种关系呢?就比如tim和lili是好朋友,那么在数据库里怎样来表示他们的关系呢?关系型数据库里面是 这样处理的——新建一个叫relationship的表,表里面有两个字段id,friendid。 图2  
2 1 
如图所示。如果我们要查找tim的朋友那么我们可以遍历relationship表就可以了。 
这种数据模型会有什么问题呢?其实我们可以对这个数据模型提个问题——tim的朋友的朋友的朋友的朋友是谁?好,关系型数据会这样回答你的问题:首先在relationship表里面找到所有id为1(tim的id)的数据,然后拿到对应的friendid,接着逐个根据friendid再进行遍历找到对应的friendid,如此反复地遍历查询。。。。 
也许10分钟也许一小时,也许它永远都无法回答你的问题。 
其实,这种关系只要超过5级关系型数据库就无法解决问题,这就是为什么需要图形数据库的出现了。 
图形数据库: 
在图形数据库里面对数据的处理是这样子的:每个对象都表示成为一个节点(node),每个节点之间的联系表示成关系(rrelationship),节点与节点之间用关系关联在一起。我们可以看图更好理解一点。 
图3  
如图所示,有三个节点(node)它们都通过FRIEND关系(relationship)关联起来。Tim的朋友是lili,lili跟jack互为朋友,同时jack认识tim。在图形数据库里要回答像“tim的朋友的朋友的朋友”的问题非常简单,数据库只需要找到tim的关系(relationship)所对应的节点然后找到对应节点的关系(relationship),只需遍历几次,这样就可以很容易回答了上面的问题了。 
用统计如图: 
图4  
同样的问题如果关联的深度超过5那么关系型数据库基本上是无法解决的。由此可见关系型数据库不仅性能上不如图形数据库,它在业务实现上其实也是有瓶颈的。这就是为什么需要研究图形数据库的原因。
### Neo4j 入门教程 #### 基本概念 Neo4j 是一种图数据库(Graph Database),它通过节点(Node)和关系(Relationship)来存储数据。每个节点可以拥有多个属性(Property),而每种关系也可以携带额外的信息。这种结构非常适合用于处理高度关联的数据集。 #### 安装步骤 对于不同操作系统,Neo4j 的安装方式有所不同: - **Mac 或 Linux** 在 Mac 和 Linux 中,完成 JDK 安装后,可以直接解压下载好的 Neo4j 包并运行以下命令启动服务[^1]: ```bash bin/neo4j start ``` - **Windows** Windows 用户需先安装 JDK 1.8.0 及以上版本,随后可以通过以下命令启动 Neo4j[^1]: ```cmd neo4j.bat console ``` - **Docker 环境下的安装** 使用 Docker 容器化技术部署 Neo4j 更加便捷。以下是基于 Linux 系统的 Docker 安装命令[^2]: ```bash docker run -d -p 7474:7474 -p 7687:7687 --name neo4j \ -e "NEO4J_AUTH=neo4j/123456" \ -v /usr/local/soft/neo4j/data:/data \ -v /usr/local/soft/neo4j/logs:/logs \ -v /usr/local/soft/neo4j/conf:/var/lib/neo4j/conf \ -v /usr/local/soft/neo4j/import:/var/lib/neo4j/import \ neo4j:3.5.22-community ``` - **Neo4j Desktop 客户端** 对于初学者来说,推荐使用 Neo4j 提供的桌面客户端工具——Neo4j Desktop 进行学习和开发工作。 #### 配置说明 默认情况下,Neo4j 启动后会监听 `http://localhost:7474` 地址作为其浏览器界面入口。首次访问时需要设置管理员密码以增强安全性。 #### Cypher 查询语言基础 CypherNeo4j使用的查询语言,类似于 SQL,但更贴近图形化的思维方式。下面是一些简单的操作示例: - **创建节点** 下面的例子展示了如何创建一个名为 Person 的节点,并为其分配 name 和 born 属性[^3]: ```cypher CREATE (n:Person {name:"Alice", born:1985}) RETURN n; ``` - **建立关系** 要定义两个实体之间的联系,可利用 `-[:RELATIONSHIP_TYPE]->()` 表达形式。例如,构建电影《黑客帝国》中的角色扮演者及其导演信息[^3]: ```cypher CREATE (Keanu:Actor {name:'Keanu Reeves'}), (TheMatrix:Movie {title:'The Matrix', released:1999}), (Keanu)-[:ACTED_IN {roles:['Neo']}]-(TheMatrix); ``` - **查询数据** 若要检索特定条件满足的结果集合,则可通过 MATCH 子句实现匹配逻辑。比如获取所有参与过某部影片演出的人选列表: ```cypher MATCH (actor:Actor)-[r:ACTED_IN]->(movie:Movie) WHERE movie.title = 'The Matrix' RETURN actor.name, r.roles; ``` #### 示例总结 上述内容涵盖了从安装到初步应用的一系列流程指导,帮助开发者快速掌握 Neo4j数据库的核心功能与实际运用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值