失效链接处理 |
Neo4j的学习笔记 PDF 下载
本站整理下载:
提取码:g8e6
相关截图:
主要内容:
1、Neo4j的基础 Neo4j是一个用Java实现的、高性能的、NoSQL图形数据库。Neo4j 使用图(graph)相 关的概念来描述数据模型,通过图中的节点和节点的关系来建模。Neo4j完全兼容ACID的 事务性。Neo4j以“节点空间”来表达领域数据,相对于传统的关系型数据库的表、行和列 来说,节点空间可以更好地存储由节点关系和属性构成的网络,如社交网络,朋友圈等。 有社区版和企业版,企业版包含了社区版多有的功能,以及额外的企业需求,如备份、集群 和故障转移功能。 Neo4j was built to efficiently store, handle, and query highlyconnected data in your data model. 构成一张图的基本元素是节点和关系。在Neo4j中,节点和关系都可以包含属性。节点经常 被用于表示一些实体,但依赖关系也一样可以表示实体。Neo4j的四大元素: (1) 节点Nodes 节点可以拥有一或多个属性(存储为键值对),一或多个标签 。 (2) 关系 Relationships
关系连接两个节点,关系是具有方向的。可以拥有一或多个属性(存储为键值对)。节点可 以有多个相连的关系,甚至可以有一个指向自己。 (3) 属性 Properties 属性是由KeyValue键值对组成,键名是字符串。属性可以被索引和约束。可以由多个属性 创建复合索引。 (4) 标签Labels 标签用于将节点分组。一个节点可以有多个标签。为了快速查找图中节点,标签是建立了索 引的。本地标签索引针对速度进行了优化。节点可有零个,一个或多个标签,但是关系必须 设置关系类型,并且只能设置一个关系类型。 (1) 路径 路径由至少一个节点,通过各种关系连接组成,经常是作为一个查询或者遍历的结果。最短 的路径是0,只有节点。 (2) 遍历 遍历一张图就是按照一定的规则,跟随他们的关系,访问关联的的节点集合。 2、Neo4j的原理 底层存储结构介绍: https://blog.csdn.net/huaishu/article/details/11713753 2.1 为什么采用图数据库? 在真实的生活中,大多信息都是相互联系的。只有本地包含关系的数据库能够高效存储、处 理和查询关系。图数据库将模型中的关系和数据一起存储,而其他数据库在查询时通过昂贵 的join操作计算关系。 本地图数据库的节点和关系访问是高效和固定时间的操作,可以每核每秒快速地遍历数百万 个连接。 图数据库擅长于管理高度连接的数据和复杂的查询,独立于数据集的总大小。通过一个模式 和一组起始点,图数据库就可以探索这些起始点周围的临近数据--从数百万个节点和关系中 收集和聚合信息--并且不涉及搜索范围之外的任何数据。 2.2 属性图模型 属性图模型中的数据被组织为节点、关系和属性(存储在节点和关系中的数据)。 节点:图中的实体,可以包含任意数量的属性(键值对),可以用标签标记节点,用于表示 他们在域中不同的角色。节点还可以用于将元数据附加到节点,如索引和约束信息。 关系:提供了两个节点之间的定向的、命名的、语义相关的连接,如 Employee WORKS_FOR Company。关系通常拥有一个方向、类型、起始节点和结束节 点。同节点一样,关系也可以拥有多个属性。在大多数情况下,关系具有数量属性,如权 重、成本、距离、评分、时间间隔或强度。两个节点之间可以共享任意数量或类型的关系。 虽然关系存储为一定的方向,但是可以有效地在任意方向导航。
3、Neo4j的优缺点 3.1 优点 从这几个方面来说,Neo4j是一个合适的选择。Neo4j…… 自带一套易于学习的查询语言(名为Cypher) 不使用schema,因此可以满足你的任何形式的需求 与关系型数据库相比,对于高度关联的数据(图形数据)的查询快速要快上许多 它的实体与关系结构非常自然地切合人类的直观感受 支持兼容ACID的事务操作 提供了一个高可用性模型,以支持大规模数据量的查询,支持备份、数据局部性 以及冗余提供了一个可视化的查询控制台,你不会对它感到厌倦的 3.2 缺点 (1) 社区版免费开源,但是企业级项目实用性不强,嵌入式模式相对于远程连接模式效率较 高,但仅支持java和基于jvm的语言,社区版不能使用集群。 (2) 企业版闭源且费用昂贵,集群也只是HA高可用,不能进行分布式存储,想要提高性能和 容量只能加大机器的硬盘、使用更高的内存和SSD,硬件最终会达到瓶颈。 (3) 图数据结构导致写入性能差,实时性读写跟不上,大数据量导入麻烦,官方提供的load csv模式性能也不够理想,neo4j-import倒是不错,但是只能用于数据库初始化局限太大。 (4) 社区不强大,资料不丰富,碰到问题需要慢慢爬坑。 缺点和建议 1.处理超级节点乏力(合理建立模型) 2.没有分片存储机制(硬盘资源丰富) 3.国内社区不够活跃(自己摸索去呗) 4.cypher还不够完善(写服务器插件) 什么时候不应使用Neo4j? 作为一个图形NoSQL数据库,Neo4j提供了大量的功能,但没有什么解决方案是完美的。在 以下这些用例中,Neo4j就不是非常适合的选择: 记录大量基于事件的数据(例如日志条目或传感器数据) 对大规模分布式数据进行处理,类似于Hadoop 二进制数据存储 适合于保存在关系型数据库中的结构化数据
|