内容简介
世界上的大部分领域实际上都可以建模成图,而软件开发人员或是数据库管理人员却在辛辛苦苦地将这些图转化成关系型数据库中的表。想象一下,假如你再也不用去做这样的转化,假如数据库的迁移可以变得轻松简单,你愿意去接受一个全新的数据库吗?图数据库就是这样一个完全不同于关系型数据库的新型数据库,它处理的是大规模的数据和不断变化的需求,并且拥抱它们。 《图数据库》系统地介绍了图数据库的历史由来、建模方法、工作原理和一些真实的用户用例,详细地说明了图数据解决的是什么样的问题,并以Neon4j数据库和Cypher查询语言为例,阐述了图数据库的建模方法和领域用例,最后还介绍了图数据库的工作原理以及一些实用的图论算法。 《图数据库》的三位作者均为Neo4j Technology公司的技术高手,分别为工程师、CTO和CEO。他们对图数据库及其解决方案有丰富的经验,其中一位甚至还是Neo4j图数据库的共同创始人。 《图数据库》适合开发人员和数据库管理人员了解和学习图数据库,作为一门新的知识和独特的数据库领域来拓宽视野。也适合提供解决方案的负责人来了解行业动向和新的解决问题的方式。通过阅读本书,读者可以对图数据库这一领域有一个透彻的了解。
作者简介
Ian Robinson,致力于研发Neo4j图数据库的未来版本,他曾任Neo Technology的客户成功总监,和客户并肩设计和开发图数据库解决方案。他是《REST实战》(O'Reilly)一书的共同作者,还是《REST: From Research to Practice》(Springer)和《Service Design Patterns》(Addison-Wesley)的撰稿人。他的博客是http://iansrobinson.com,推特账号是@iansrobinson。
Jim Webber博士,是Neo Technology的首席科学家,他研究最新的图数据库并开发开源软件。在这之前,Jim研究像Web这样大规模的图来建造分布式系统,这也使得他成为《REST实战》(O'Reilly)的作者之一。Jim在开发社区很活跃,定期出现在世界各地。他的博客是http://jimwebber.org,常用的推特账号是@jimwebber。
Emil Eifrem,在2000年去孟买的飞机上勾画出了属性图模型的框架。现在他是Neo Technology的CEO,同时也是Neo4j项目的共同创始人,专注于建设和传播图数据库。致力于可持续开源软件,Emil指引Neo在提供免费软件和商业效益之间走向平衡。他想用图拯救世界,还想在十年内拥有拉里·埃里森那样的游艇。Emil的推特是@emileifrem。
刘璐,软件开发工程师,就职于ThoughtWorks,专注于软件开发领域,对数据存储领域有浓厚兴趣。
梁越,前端工程师,就职于ThoughtWorks,对前后端开发都有涉猎,有在大型项目中应用图数据库的开发经验。
内页插图
目录
第1章简介1.1图是什么1.2图领域概览1.2.1图数据库1.2.2图计算引擎1.3图数据库的威力1.3.1性能1.3.2灵活性1.3.3敏捷性1.4小结
第2章关联数据的存储选择2.1关系型数据库缺少联系2.2NoSQL数据库也缺少联系2.3图数据库拥抱联系2.4小结
第3章使用图进行数据建模3.1模型和目标3.2属性图模型3.3查询图:Cypher简介3.3.1Cypher的理念3.3.2START3.3.3MATCH3.3.4RETURN3.3.5其他Cypher语句3.4关系建模和图建模对比3.4.1系统管理领域中的关系建模3.4.2系统管理领域中的图建模3.4.3测试模型3.5跨域模型3.5.1创建莎士比亚图3.5.2开始查询3.5.3声明查找的信息模式3.5.4约束匹配3.5.5处理结果3.5.6查询链3.6建模时常见的陷阱3.6.1电子邮件起源问题域3.6.2敏感的第一个迭代3.6.3第二次的魅力3.6.4发展中的领域3.7避免反模式3.8小结
第4章构建基于图数据库的应用4.1数据建模4.1.1用应用程序所需的术语描述模型4.1.2用节点表示事物,用联系表示结构4.1.3细粒度联系与通用联系4.1.4将事实建模为节点4.1.5将复杂的值类型表示为节点4.1.6时间4.1.7迭代开发和增量开发4.2应用程序架构4.2.1嵌入式与服务器4.2.3集群4.2.4负载均衡4.3测试4.3.1数据模型的测试驱动开发4.3.2性能测试4.4容量规划4.4.1优化条件4.4.2性能4.4.3冗余4.4.4负载4.5小结
第5章现实世界中的图5.1为什么选择图5.2常见用例5.2.1社交5.2.2推荐5.2.3地理空间5.2.4主数据管理5.2.5网络和数据中心管理5.2.6授权和访问控制(通信)5.3实际示例5.3.1社交推荐(专业社交网络)5.3.2授权和访问控制5.3.3地理空间(物流)5.4小结
第6章图数据库的内部结构6.1原生图处理6.2原生图存储6.3用于编程的API6.3.1内核API6.3.2核心(或“Beans”)API6.3.3遍历API6.4非功能型特性6.4.1事务6.4.2可恢复性6.4.3可用性6.4.4可扩展性6.5小结
第7章使用图论预分析7.1深度优先搜索和广度优先搜索7.2使用Dijkstra算法寻找路径7.3A*算法7.4图论和预测建模7.4.1三元闭包7.4.2结构平衡7.5局部桥7.6小结附录NoSQL概览
前言/序言
《信息织网:超越结构化与非结构化边界的知识探索》 在信息爆炸的时代,我们常常感到被淹没在海量的数据洪流之中。然而,真正有价值的并非原始数据本身,而是数据之间蕴含的联系,以及这些联系所构建出的意义网络。我们身处一个日益互联的世界,无论是人与人之间的社交关系,企业内部的组织架构,生物基因的复杂网络,还是城市交通的动态流转,其本质都体现着“关系”的力量。传统的关系型数据库以表格的形式存储信息,擅长处理结构化数据,但当数据的维度和复杂性急剧增加,当“关系”成为信息的核心要素时,它们便显得力不从心。《信息织网》这本书,并非简单地介绍一种新的数据库技术,而是带领读者踏上一场深入理解“关系”本质,并学会如何构建、管理和利用这些“关系”的知识之旅。 本书的核心论点在于:理解和运用事物之间的联系,是解锁深度洞察和驱动创新的关键。我们不再局限于对数据的孤立分析,而是着眼于数据之间的连接,如同蜘蛛网一般,将分散的点连接成一个有机的整体。这种“网状”的思维方式,让我们能够从全新的视角审视数据,发现隐藏的模式,预测未来的趋势,并做出更明智的决策。 第一部分:思维的范式转变——从“表”到“网” 在这一部分,我们将首先对传统数据存储和分析模式进行一次彻底的审视。为什么我们习惯于将数据放入表格?表格的优势和局限性在哪里?本书将深入剖析关系型数据库的基石——行、列、表、键,以及它们在处理结构化数据方面的卓越表现。我们将通过生动的案例,展示在面对复杂查询、多对多关系、以及需要快速遍历连接路径时,传统关系型数据库所面临的挑战。 接着,我们将引出“关系”作为信息核心要素的重要性。我们会探讨生活中无处不在的“关系”:朋友之间的社交联系,项目团队成员的协作关系,供应链上的供应商与客户关系,甚至是大脑神经元之间的信号传递。这些关系并非简单的数据点,而是构成了事物的动态本质。本书将通过哲学和认知科学的视角,阐述人类大脑本身就是一个强大的“关系处理”系统,而我们对世界的理解,很大程度上也依赖于对事物之间联系的把握。 在此基础上,《信息织网》将正式引入“网络化思维”的概念。这是一种看待世界的全新方式,将一切视为由相互连接的节点组成的复杂网络。我们将学习如何识别网络中的关键节点(“中心节点”),如何理解信息的传播路径,以及如何分析网络结构的特性(如“社区发现”、“路径分析”)来获得有价值的洞察。这一部分的重点在于,培养读者用“关系”的视角去观察和思考问题,为后续的技术探讨打下坚实的理论基础。 第二部分:构建知识的血管——信息网络的构建与管理 理解了“关系”的重要性,接下来我们将聚焦于如何实际地构建和管理信息网络。本书将系统地介绍构建高效信息网络的理论框架和技术方法。 首先,我们将深入探讨“节点”和“关系”(或称“边”、“连接”)的设计原则。什么样的信息单元可以被视为一个节点?不同类型的关系应该如何定义和表示?我们将学习如何设计清晰、灵活的节点属性和关系类型,以最大程度地捕捉信息的丰富内涵。例如,在社交网络中,一个人可以是一个节点,而“朋友”、“同事”、“家人”则是不同类型的关系。在产品知识图中,一个产品可以是一个节点,而“包含的组件”、“兼容的配件”、“推荐的替代品”则是不同的关系。 接着,我们将详细讲解构建信息网络的关键技术。本书不会局限于某一种具体的数据库技术,而是会从通用性的角度,介绍构建网络化数据存储的几种主流思路。我们会讨论如何利用图模型来表示节点和关系,以及这些模型与传统关系模型的根本区别。我们会探讨如何有效地存储和索引大量的节点和关系,以支持快速的查询和遍历。 此外,本书还将深入讲解“知识图谱”的概念。知识图谱不仅仅是数据的集合,更是一个结构化的、可理解的知识表示,它能够捕捉现实世界中的实体及其之间的复杂关系。我们将学习知识图谱的构建过程,包括实体识别、关系抽取、以及如何利用自然语言处理(NLP)和机器学习技术来自动化这些过程。我们会通过实际的案例,展示如何构建一个企业内部的知识图谱,以整合分散的业务数据,提升决策效率;或者如何构建一个面向用户的知识图谱,以提供个性化的推荐和智能问答服务。 本书还将覆盖信息网络的可视化技术。一个复杂的网络,如果不能以直观的方式呈现,其价值将大打折扣。我们将介绍各种网络可视化技术,以及如何利用它们来探索网络的结构、发现模式、识别异常。从简单的节点-关系图,到复杂的动态网络可视化,本书将帮助读者找到最适合展示其信息网络的方法。 第三部分:解锁信息的力量——知识网络的分析与应用 信息网络构建完成之后,真正的价值在于如何从中提取有用的知识和洞察。第三部分将是本书的重点,我们将深入探讨信息网络的分析方法及其在各个领域的广泛应用。 我们将介绍一系列强大的图分析算法。这些算法能够帮助我们挖掘网络中隐藏的模式和规律。例如: 中心性分析(Centrality Analysis): 识别网络中的关键节点,例如在社交网络中识别有影响力的人物,在供应链中识别关键的供应商。 路径分析(Path Analysis): 查找节点之间的最短路径、最长路径,以及特定类型的路径。这在物流配送、网络路由、甚至疾病传播路径分析中都至关重要。 社区发现(Community Detection): 识别网络中紧密连接的节点群体,例如在社交网络中发现兴趣小组,在基因网络中发现相互作用的基因簇。 相似性搜索(Similarity Search): 查找与给定节点相似的其他节点,这在推荐系统、欺诈检测等领域有广泛应用。 链接预测(Link Prediction): 预测未来可能形成的连接,例如在社交网络中预测潜在的朋友关系,在产品推荐中预测用户可能喜欢的商品。 除了理论算法,本书还将通过大量的实际案例,展示信息网络分析在不同行业中的应用。我们将探讨: 社交网络分析: 理解用户行为、社交影响力、信息传播趋势。 推荐系统: 基于用户行为和物品关系的个性化推荐,提升用户体验和转化率。 欺诈检测: 识别异常的交易模式和关联关系,发现隐藏的欺诈行为。 生物信息学: 分析基因、蛋白质之间的相互作用网络,探索疾病机理。 金融风险管理: 识别金融机构之间的关联风险,构建更稳健的金融体系。 城市规划与交通管理: 分析交通流量、道路连接,优化城市基础设施。 企业知识管理: 整合企业内部知识,打破信息孤岛,支持创新和决策。 本书的最终目标,是让读者能够掌握构建和分析信息网络的能力,从而在自己的领域中发现新的机会,解决复杂的问题,并最终拥抱一个更加互联互通、充满洞察的知识世界。 《信息织网》不仅仅是一本书,它是一种思维方式的启蒙,一种驾驭复杂信息时代的强大工具,它将引导您穿越数据的迷雾,看见信息背后真正闪耀的智慧之光。