欢迎光临
免费的PDF电子书下载网站

Neo4j实战 PDF下载

编辑推荐

Neo4j实战 PDF下载 ;

内容简介

本书以实例为依托,详细地对实例做建模分析,并给出经过测试的源代码,读者可以按照书的介绍一步一步地实现每一个实例,这是一种学习建模和编程的极为便捷的方法。本书也是一本对使用Neo4j对图形数据进行设计、建模和查询的综合指导书。书中探索了处理和查询图形数据的各种工具及其强大功能,包括图形遍历的概念及其使用方法,也讨论了Neo4j的图形查询语言Cypher和如何使用SpringDataNeo4j将Neo4j集成到应用程序中,以及如何使用服务器模式和嵌入式模式等内容。

作者简介

作?者?简?介?About the AuthorAleksa Vukotic之前在Open Credo担任数据管理实践领导者,现任Noble Group的开发平台部主管。他是一个软件架构师和开发者、敏捷编程的倡导者、作者和培训师,并且是许多Neo4j项目的开发者,如用图形数据模型解决复杂的访问控制列表和推荐引擎问题。 Nicki Watt是Open Credo的首席顾问。她务实、心灵手巧,是一个问题解决专家,乐于使用“正确的工具完成工作”。Nicki一直使用Neo4j等开源工具以及框架参与各种项目,包括对基于引擎问题的探究和推荐。她也是Spring Data Neo4j项目的贡献者之一。 Tareq Abedrabbo是Open Credo的首席技术官(CTO)。他对编程语言有着强烈的兴趣,从Scala和Python到Google Go。他在几个NoSQL技术领域(包括Neo4j、MongoDB和Redis)有着非常丰富的知识,并在很早以前就开始积极从事Spring项目,是Spring Web Service项目的核心成员。 Dominic Fox是Open Credo的顾问,尤其喜欢把对编程语言理论的见解进行实践并讲解给他人。他作为专业开发者涉足了多种领域的工作,包括文档管理、电信和金融,也包括Neo4j的培训。他一直期望创建优秀的工具和库,能使每天的编程工作更加直观、可靠。 Jonas Partner是Open Credo的首席执行官(CEO),该公司是Neo Technology的服务合作伙伴,是解决复杂数据问题的专业公司。他还是《Spring Integration in Action》的合作作者。

Neo4j实战 PDF下载

目录

Contents?目  录译者序序 言前 言作者简介第一部分 Neo4j概述第1章 Neo4j数据库的一个应用案例 31.1 为什么要有Neo4j 41.2 关系数据库中的图形数据 41.3 Neo4j中的图形数据 81.4 大数据下的SQL联接操作与Neo4j图形遍历的对比 101.5 图形 131.6 Neo4j在NoSQL领域的地位 131.6.1 主键值存储 141.6.2 列族存储 141.6.3 面向文档的数据库 151.6.4 图形数据库 151.6.5 与NoSQL类数据库的比较 151.7 Neo4j具有与ACID兼容的数据格式 161.8 本章小结 17第2章 Neo4j的数据模型 182.1 Neo4j中数据模型的类型 182.1.1 图表建模的一个简单实例 192.1.2 图表建模的一个复杂实例 202.2 领域建模 222.3 更多实例 262.3.1 地铁车站实例 262.3.2 乐队成员实例 272.4 本章小结 29第3章 Neo4j开发入门 303.1 图形数据结构建模 303.2 使用Neo4j API 343.2.1 创建节点 343.2.2 创建关系 363.2.3 为节点添加属性 383.2.4 节点类型策略 403.2.5 为关系添加属性 413.3 节点标签 433.4 本章小结 46第4章 强大的图形遍历功能 474.1 使用Neo4j核心Java API进行遍历 474.1.1 寻找起始节点 484.1.2 遍历直接关系 494.1.3 遍历深度为2的关系 514.1.4 内存使用注意事项 534.2 使用Neo4j的遍历API进行遍历 554.2.1 使用Neo4j的内置遍历结构 554.2.2 实现一个自定义评估函数 564.3 本章小结 59第5章 数据索引 605.1 创建索引项 605.2 通过邮箱地址查找用户 625.3 对多个匹配结果的处理 645.4 对索引过的数据进行修改的处理 655.5 自动索引 665.5.1 模式索引 665.5.2 自动索引 695.6 索引的成本/效益权衡 705.6.1 索引查询的性能优势 715.6.2 当更新和插入数据时索引对性能的影响 725.6.3 索引的存储 735.7 本章小结 73第二部分 Neo4j应用开发第6章 Neo4j的查询语言Cypher 776.1 Cypher简介 776.1.1 Cypher入门 786.1.2 执行Cypher查询 796.2 Cypher的基本句法 856.2.1 模式匹配 856.2.2 查找起始节点 896.2.3 过滤数据 926.2.4 获得结果 936.3 用Cypher更新图形数据 966.3.1 创建新图形实体 976.3.2 删除数据 996.3.3 更新节点和关系属性 996.4 高级Cypher 1006.4.1 聚合 1006.4.2 函数 1016.4.3 with语句的管道功能 1036.4.4 Cypher的兼容性 1046.5 本章小结 104第7章 事务 1057.1 事务的基础知识 1057.1.1 添加事务 1077.1.2 打好基础,循序渐进 1087.2 事务的高级功能 1097.2.1 事务的语义 1097.2.2 事务中的读取与显式读锁 1117.2.3 事务中的写入与显式写锁 1127.2.4 无效锁的危害 1147.3 与其他事务管理系统的集成 1147.4 事务事件 1167.5 本章小结 117第8章 深度遍历 1188.1 遍历的顺序 1188.1.1 深度优先 1198.1.2 广度优先 1218.1.3 深度优先与广度优先顺序的比较 1228.2 扩展关系 1248.2.1 标准扩展器 1248.2.2 用于扩展的顺序关系 1268.2.3 自定义扩展器 1278.3 管理唯一性 1308.3.1 NODE_GLOBAL唯一性 1308.3.2 NODE_PATH唯一性 1328.3.3 其他唯一性类型 1338.4 双向遍历 1348.5 本章小结 137第9章 Spring Data Neo4j 1389.1 SDN适合做什么 1389.1.1 什么是Spring以及Spring与SDN是怎样关联的 1409.1.2 SDN适合做什么(及不适合做什么) 1409.1.3 从哪里获得SDN 1419.1.4 从哪里获得更多的信息 1419.2 用SDN建模 1419.2.1 原始POJO域建模 1429.2.2 注释域模型 1449.2.3 建模节点实体 1459.2.4 建模关系实体 1489.2.5 建模节点实体之间的关系 1509.3 访问和持久化实体 1529.3.1 支持Spring的配置 1529.3.2 Neo4jTemplate类 1539.3.3 资源库 1549.3.4 其他选项 1579.4 对象图形映射选项 1589.4.1 简单映射 1589.4.2 基于AspectJ的高级映射 1619.4.3 对象映射总结 1649.5 执行查询和遍历 1649.5.1 注释查询 1649.5.2 动态派生查询 1669.5.3 遍历 1689.6 本章小结 168第三部分 Neo4j应用实例第10章 Neo4j的嵌入式模式与服务器模式 17110.1 使用模式概述 17110.2 嵌入式模式 17310.2.1 核心Java集成 17310.2.2 其他基于JVM的集成 17610.3 服务器模式 17710.3.1 Neo4j服务器概述 17810.3.2 使用细粒度Neo4j服务器模式的REST API 17910.3.3 使用Cypher Neo4j服务器模式REST API端点 18110.3.4 使用远程客户端库帮助访问Neo4j服务器 18210.3.5 服务器插件和非托管扩展 18410.4 权衡选项 18410.4.1 对架构的考虑 18510.4.2 对性能的考虑 18710.4.3 其他需要考虑的事项 19010.5 充分利用服务器模式 19010.5.1 避免细粒度操作 19110.5.2 使用Cypher 19210.5.3 服务器插件 19410.5.4 非托管扩展 19610.5.5 流REST API 19810.6 本章小结 199第11章 Neo4j的架构与应用 20011.1 高层Neo4j架构 20011.1.1 设置场景 20211.1.2 硬盘 20211.1.3 存储文件 20311.1.4 Neo4j缓存 20511.1.5 事务日志及可恢复性 21011.1.6 编程API 21111.2 Neo4j的高可用性 21211.2.1 Neo4j集群概述 21311.2.2 设置Neo4j集群 21611.2.3 复制——读和写的策略 21811.2.4 缓存分区 22211.2.5 HA小结 22411.3 备份 22511.3.1 离线备份 22511.3.2 在线备份 22711.3.3 从备份中还原数据 22911.4 本书可能没有涵盖但你可能会关注的问题 22911.4.1 安全 22911.4.2 监控 22911.5 本章小结 23011.6 最后的设想 230附录A 安装Neo4j服务器 231附录B 设置和运行示例程序 236附录C 设置使用SDN的项目环境 241附录D 获得更多的帮助 247

前沿

前  言?Preface从很早以前开始,图形问题就是计算机编程中一些最普遍的问题。回想那时,尤其是在编程时,需要建立层次结构树、访问控制列表和映射表。当要存储图形的时候,程序员将图形转换成表格并使用关系数据库作为低层存储。我们不得不做大量的探究来保存最基本的图形数据,直到有了以Neo4j为代表的图形数据库,才有了其他的选择。 十多年前,Neo4j就开始了它的生涯,2010年正式发布了1.0版本,2.0版本是在2013年12月发布的。我们当中的大多数人一直在积极使用Neo4j,并且见证了它的发展及在不同项目上的应用。图形数据库,尤其是Neo4j,获得了越来越高的关注度,越来越多的人和公司认识到,对于复杂的、具有挑战性的相互连接的数据,Neo4j是图形数据库中唯一的健壮和坚实的解决方案。 我们非常高兴能够浓缩我们的真实工作经历及知识编写成这本实践性很强的书。本书将为你打下一个坚实的基础并创建一些帮助你尽快运行Neo4j的项目。 关于本书Neo4j作为一个图形数据库在过去的大约十年间发生了很大的变化。从一个纯粹在基于Java领域内操作的图形数据库开始,它已经发展成为适应许多语言和框架的图形数据库。 当我们开始着手写这本书的时候,最新版本是1.9。Neo4j 2.0版本是真正的规则颠覆者,引进了新的特性,包括非常期待的(内置)节点标签的概念。因此本书尽管还有一些与1.x相关的内容,但是已经更新到涵盖了2.0的特色,所有相关的样例代码和例子都已经专门经过了2.0版本的验证。到本书出版时无疑还会有新的版本,然而,本书所采取的深思熟虑的一步一步的方法,应该为你提供了学习、起步和运行任意的核心Neo4j 2.0 版本的基础知识和技能,当然,除了没有预见的巨大变化。 由于Java是促使Neo4j诞生的语言,因此我们决定使用Java作为主要的语言以演示本书的各种技术和方法。此外,这在以前也是唯一一种可用语言,语言的选择也使我们能够包括一些章节详细讨论如何明确地利用本机核心Neo4j API的优点来做某些工作。这当然对基于Java的客户端是具有很大好处的。然而,如果我们重新从头开始,我们可能会花更多时间来讲Cypher,因为Cypher与图形数据库交互更加容易,且是跨平台的,包括Java、Shell等其他所有平台。然而,我们将这个留作可能的第2版,因为我们仍然相信本书中有许多核心基本概念和方法需要首先传达。本书假设使用的是最新版本的JDK 7。另外,本书附带的样例代码使用Maven作为我们创建依赖工具的选择。对于那些不熟悉Maven的用户,附录B中提供了一个快速入门帮助你起步与进入正常运行。 应当指出的是,这并不意味着本书只是一本参考书。如果是那样的话,本书的篇幅将会长很多。本书的目标是给你足够的知识并理解每一个希望精通的领域,然后再继续向前。如果你想进一步探索特定的领域,书中提供了相关内容的链接,在那里你可以得到更多的相关信息。 本书章节编排本书分为三部分。第一部分介绍并且涵盖数据模型、Neo4j入门和强大的遍历功能。第二部分讨论应用程序的开发并且涵盖Cypher和Spring。第三部分讨论产品实例。 第1章介绍图形数据库的通用概念,包括浏览Neo4j的一些重要方面和最适合的应用场景。该章介绍Neo4j在NoSQL领域中能解决的一些问题,包括与传统关系数据库的对比。 第2章考察如何及为什么在Neo4j中建模数据,包括在图形数据库中数据建模场景的通用方法。给出了来自不同领域的例子,让你了解在Neo4j中建模的灵活性。 从第3章我们真正开始动手了。该章介绍Neo4j核心Java API,通过创建一个表示用户社交网络和他们喜欢的电影的图形的所有步骤来加深理解。该章涵盖创建和连接节点以及获取这些节点的附加信息。该章也探讨区分不同类型节点的策略,包括标签的使用。 第4章建立这个社交网络的域,更深入地探讨核心API,尤其是重点探讨遍历功能(这里讲的是Neo4j遍历API),这是一个查询图形数据库的强大方法。 第5章介绍Neo4j中可用的索引策略。创建和遍历图形数据是非常棒的,但是你需要一个找到起始点或多个起始点的策略,起始点是图形中开始遍历的点。在查看从Neo4j 2.0版本往后可用的内置索引选项前,你将从查看手动(传统)索引开始。 第6章介绍Cypher,即Neo4j中人能读懂的查询语言。这一章介绍Cypher的性质,演示对图形操作的基本句法,也涵盖在Neo4j数据库的日常开发和维护中会用到的高级特性。 第7章重点讨论在NoSQL空间中Neo4j的独特亮点之一——完全支持ACID事务,提供一些不同应用的例子以及在某些方面更深入的探究。 虽然从第4章开始接触遍历功能,但编写高效的遍历是成功查询图形数据的关键。在第8章,我们更深入地挖掘遍历API的内部方法,因此你可以学习到如何以一个有效的方式用本机API解决最复杂的图形问题。 第9章讨论面向图形对象的库Spring Data Neo4j(SDN)。尽管SDN不是Neo4j官方提供的,但是该章通过介绍SDN来重点演示Neo4j开源框架如何作为一个库去提供丰富的对象图形模型和Neo4j支持的数据之间进行可靠的、无缝的映射。该章再一次使用我们信任的用户及其所爱电影的社交网络来演示这些要点。 第10章探讨在Neo4j中使用的两种主要模式,即嵌入式模式和服务器模式,本书主要讲解嵌入式模式的核心概念。该章也介绍了服务器模式,服务器模式可以被任何的客户端使用,并稍微深入地探讨每一种模式,比较各自的优缺点,包括如果你选择的是服务器模式的话,如何充分利用服务器。 第11章介绍高级Neo4j架构。以该知识为框架,该章探讨当你准备将Neo4j投入到产品中时应该考虑哪些因素,包括扩展和其他使Neo4j高可用性的需求,以及当需要时如何备份和还原你的数据库。 四个附录指导你完成安装、设置和运行Neo4j,还包括Maven和SDN以及提供寻求更多帮助的信息。 代码约定和下载本书的所有源代码以代码体形式给出。在许多程序中,以注释的形式指出关键的概念,在文本中有时用编号给出有关代码的附加信息。 书中给出的大部分代码能够在随带的样例源代码中以多种形式找到。样例源代码可以从华章网站(www.hzbook.com)上免费下载。 样例源代码以一组JUnit样式的测试结构给出,其目的是强调或演示讨论中的特定代码。附录B给出了如何运行这些样例源代码的说明。 致谢本书的编写经历了相当长的一段时间,因此,首先和最应该感谢的是我们所有的家人和朋友,他们不知疲倦地与我们在一起、忍受着我们,并且在深夜给我们准备咖啡以便我们能保持旺盛的精力。谢谢你们! 首先,我们要感谢Open Credo,这是我们在写本书时工作的公司,给我们提供了能够在本书中分享经验的机会——大都是利用工作之余的时间,但是,也占用到非常宝贵的工作时间。这是非常令人感激的! 特别要感谢Neo4j的朋友们,英国的Jim Webber和Ian Robinson、德国的Michael Hunger和整个朋友圈,他们不断地为Neo4j工作,但最重要的是他们的有价值评论和反馈帮助我们深入细致恰当地修改本书。非常感谢英国的朋友在我们遇到一些“有趣”的挑战时提供的指导。 感谢我们的编辑Karen Miller,感谢她这段时间的耐心和理解,加上整个Manning团队的积极工作,使我们最终完成本书。这是一项艰苦的工作,非常感谢他们的支持和指导,使本书顺利出版。 感谢我们的读者,他们在作者的在线论坛发布了修正和评论。感谢下面的相关人员,他们在开发期间阅读了我们的手稿并提供了宝贵的意见:Adam Frankl、Bill LaPrise、Brian Gyss、Christoph Jasinski、Frank Uzzolino、Fred Patton、Janeen Johnson、John D. Lewis、Joshua White、Mark Watson、Philippe Lamote、Pouria Amirian、Rikke Willer、Robert Gimbel、Rod Hilton和Stephen Kitt。 还要感谢Jim Webber和Ian Robinson,他们为本书写了序言。还有Craig Taverner,是他作为技术顾问在出版前又阅读了一遍本书的手稿和例子的代码。 还有其他许多以不同的方式做出贡献的人。我们无法通过名字提及每一个人,因为那样意味着这个致谢的篇幅将非常长,但是我们想要深挚地感谢曾经给过我们帮助使得本书得以出版的每一个人。

Neo4j实战 pdf下载声明

本pdf资料下载仅供个人学习和研究使用,不能用于商业用途,请在下载后24小时内删除。如果喜欢,请购买正版

pdf下载地址

版权归出版社和作者所有,下载链接已删除。如果喜欢,请购买正版!

链接地址:Neo4j实战