<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>图数据库 on BIT &amp; 42</title><link>https://CoderAmedal.github.io/tags/%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93/</link><description>Recent content in 图数据库 on BIT &amp; 42</description><generator>Hugo -- 0.160.1</generator><language>zh-CN</language><copyright>2025 Bit &amp;amp; 42. 这是生命、宇宙以及一切的终极版权声明</copyright><lastBuildDate>Mon, 24 Jun 2024 00:00:00 +0000</lastBuildDate><atom:link href="https://CoderAmedal.github.io/tags/%E5%9B%BE%E6%95%B0%E6%8D%AE%E5%BA%93/index.xml" rel="self" type="application/rss+xml"/><item><title>Neo4j图数据库的使用和常用场景分析</title><link>https://CoderAmedal.github.io/posts/neo4j-usage-scenarios/</link><pubDate>Mon, 24 Jun 2024 00:00:00 +0000</pubDate><guid>https://CoderAmedal.github.io/posts/neo4j-usage-scenarios/</guid><description>&lt;h1 id="neo4j图数据库的使用和常用场景分析"&gt;Neo4j图数据库的使用和常用场景分析&lt;/h1&gt;
&lt;h2 id="图数据库解决了什么关系型数据库做不好的事"&gt;图数据库解决了什么关系型数据库做不好的事&lt;/h2&gt;
&lt;p&gt;关系型数据库用外键和 JOIN 来表达实体间的关系，这在关系层级较浅（一两层）时工作得很好。但当关系深度达到三四层甚至更多时，SQL 的 JOIN 会急剧膨胀，性能断崖式下降。&lt;/p&gt;
&lt;p&gt;举个例子：&lt;strong&gt;查找&amp;quot;和用户 A 有共同好友的所有用户&amp;quot;&lt;/strong&gt;——在 SQL 中需要自连接好友表两次，而在 Neo4j 中，这只是一行自然表达的 Cypher 语句。&lt;/p&gt;
&lt;p&gt;图数据库的核心优势：&lt;strong&gt;关系是一等公民，遍历关系的成本是 O(1)&lt;/strong&gt;，而不是 JOIN 的 O(n)。&lt;/p&gt;
&lt;h2 id="典型使用场景"&gt;典型使用场景&lt;/h2&gt;
&lt;h3 id="1-社交网络与推荐系统"&gt;1. 社交网络与推荐系统&lt;/h3&gt;
&lt;p&gt;最经典的场景。用户-好友-帖子-点赞-评论构成了一个天然的图。Neo4j 可以轻松查询：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;二度/三度人脉&lt;/li&gt;
&lt;li&gt;共同好友推荐&lt;/li&gt;
&lt;li&gt;基于&amp;quot;购买了 A 的人也购买了 B&amp;quot;的协同过滤&lt;/li&gt;
&lt;li&gt;内容传播路径追踪&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="2-反欺诈与风控"&gt;2. 反欺诈与风控&lt;/h3&gt;
&lt;p&gt;欺诈行为往往是&lt;strong&gt;团伙作案&lt;/strong&gt;：一群虚假账户共享相似的设备、IP、银行卡。在关系型数据库中检测这种环形关联非常困难，但 Neo4j 可以用路径查询快速发现：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;资金环形流转检测&lt;/li&gt;
&lt;li&gt;关联人/关联账户网络分析&lt;/li&gt;
&lt;li&gt;多跳关联风险传播&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="3-知识图谱"&gt;3. 知识图谱&lt;/h3&gt;
&lt;p&gt;知识图谱本质就是实体-关系-实体的三元组。Neo4j 天然适合：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;企业知识管理（文档-知识点-部门-项目关联）&lt;/li&gt;
&lt;li&gt;智能问答的后端存储&lt;/li&gt;
&lt;li&gt;供应链追踪&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="4-权限与组织架构"&gt;4. 权限与组织架构&lt;/h3&gt;
&lt;p&gt;公司组织架构是天然的树/图结构。Neo4j 在处理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;汇报链查询&lt;/li&gt;
&lt;li&gt;权限继承&lt;/li&gt;
&lt;li&gt;RBAC 角色层级&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;等场景时比递归 SQL 简洁得多。&lt;/p&gt;
&lt;h3 id="5-网络与基础设施拓扑"&gt;5. 网络与基础设施拓扑&lt;/h3&gt;
&lt;p&gt;CMDB、微服务依赖图、网络拓扑、路由分析——这些都是图结构的天然应用场景。用 Neo4j 存储后，可以通过路径查询快速回答&amp;quot;服务 A 宕机会影响哪些下游&amp;quot;这类问题。&lt;/p&gt;
&lt;h2 id="cypher-基础语法感受"&gt;Cypher 基础语法感受&lt;/h2&gt;
&lt;p&gt;Cypher 是 Neo4j 的查询语言，风格上有点像 SQL 但专门为图设计。几个基础操作：&lt;/p&gt;</description></item></channel></rss>