实用小精灵 -- 阿帕奇 TinkerPop 向导 (第 283 版)
第一章 介绍
本书是一本正在编撰中的作品。欢迎大家的反馈和留言。
本书的标题相当于是“图形数据库用户入门向导和小精灵查询语言特征提示和查询样例说明”。这对于一行的标题来说太长了,但是用这句话来描述本书的写作初衷是相当合适的。
笔者坚决反对像参考手册一样一个接一个的尽力去涵盖到 TinkerPop 的每一个特征。相反,笔者试图以合理的方式还原本人自己的学习过程,从入门到精通,循序渐进,逐步深入。
为了从本书中收益更多,推荐大家打开小精灵 Gremlin 的控制台,导入样例数据,边学边练。 笔者假定各位读者没有如下先导知识:如阿帕奇 Tinker Pop, 小精灵 Gremlin 查询语言或者其它相关工具的知识。 笔者将在本书第二章对以上先导知识一一介绍。
笔者相信接下来的内容将是有用的。本书毕竟是一本正在编攥中的作品,如果时间允许,未来的数周数月内会有更多的内容更新。笔者希望已经呈现的内容对和笔者一样学习并使用小精灵 Gremlin 查询遍历语言和相关技术的朋友有用。
本书包括了相当数量的附加资源,包括书籍的不同格式如 pdf, html,ePub 和 Mobi,当然也包括样例程序和数据。这些资料可以从项目的 GitHub 中找到,您也可以找到附录资料的列表,这些信息可以在“书籍原码、样例程序和数据一节中找到。”
1.1 这本书的由来
笔者已经忘记确切的时间,大约是 2016 年初的时候,笔者开始编写一系列的读书笔记、提示和技巧, 最开是是出于个人的利益。笔者的笔记满是在其它地方很少能找到解释的内容, 在使用图数据库,特别是使用阿岶奇 TinkerPop, 小精灵 Gremlin 查询语言和 杰纳斯图数据库 JanusGraph 时, 这些内容您会遇到。
随着时间的推移,文档的内容在不断的增加,实事上文档已经变成了一本书,只是没有书名。在一些同事的鼓励下,笔者决定发布本人的笔记,这些笔记将按照开源许可发布,这样任何对该领域感兴趣的读者都可以读到它。它的目标读者群当然是程序员、数据科学家,笔者也希望对小精灵查询遍历语言(Gremlin)感兴趣并用它来操作图形数据库的朋友都阅读本书。
笔者已将大量的程序示例和关于最佳实践的查询的样例收录到本书中,当然远不止笔者在实践中辛苦得来的经验教训,但愿您可以从中获得知识并受益。
笔者将本书称为一本“不断成长的书”因为笔者的目标是如果发现了需要更新的知识,那么笔者就有规律的更新本书,同时笔者也尽可能的保持本书内容与阿岶奇 TinkerPop 项目的最新的版本内容同步。
笔者由衷地向所有鼓励和支持我的朋友们表示感谢,感谢鼓励笔者继续进行这个著书的挑战之旅。这件事确实需要大量的工作,但是同时也乐在其中。
英文原著作者:凯文 R 劳伦斯
第一版: 2017 年 10 月 5 日
当前版本:2021 年 8 月 2 日
简体中文译者:华
2022 年 3 月 30 日
1.2 感谢并欢迎您的建议和宝贵意见
如何您在阅读本书中发现的任何错误,请告知笔者,当然您也可以将您的各类阅读体会与笔者分享。也提前感谢您对于本书提出的宝贵的改进的建议。提示:提建议的最佳方案是您在 Github 的项目库中开一个问题(issue)。本书 Github 地址如下:https://github.com/krlawrence/graph。您现在正在阅读的是本书的第 283 版的预览版。
由衷的感谢已经花时间阅读本书预览版,提出问题或者提交了 pull 请求的各位读者和程序员、工程师、数据科学家朋友们。
1.3 感谢的话
我要感谢我以前的同事:格雷厄姆·沃利斯 杰森·普鲁拉德 亚当·霍利,感谢他们帮助优化并提升了本书中所包含的一些查询。 小精灵查询语言(Gremlin)是一项团队合作的成果。我们曾花费数小时来讨论各种查询和遍历的最佳的方案。
笔者也常常疏忽,如果没有花大量时间与诸多同仁对话,这些同仁回答了谷歌小精灵用户组诸多的问题或者回复了建议。在此特别的感谢如下诸位:丹尼尔·库皮茨 马尔科·罗德里格斯 和斯蒂芬·马利特 及创建并维护阿帕奇 Tinkerpop 团队的关键成员们。
最后,我还想感谢通过邮件或者 Github 问题、pull 请求提出反馈建议的各位朋友。如同技术在不断的迭代演进一些,我们一起不断的提高和优化这本“不断成长的书”,这太棒了!非常感谢您的一如即往的帮助和支持!
1.4 这本书是关于什么的呢?
本书通过反应现实世界的典型的图数据的真实例子为您介绍阿帕奇 TinkerPop 3 小精灵图查询和遍历语言。这些数据、样例代码和样例应用及相关内容都可以从 Github 中下载。 示例中的航线图是世界飞行航线网络的一个模型,该航空网络中有 2273 个机场和 43400 条航线。您无需修改导入 air-routes.graphml 文件到小精灵控制台,上述例子就可以工作。关于如何设置环境的内容将在“下载、安装和启动控制台”一节中详述。
本书中所用到的例子已在阿帕奇 TinerPop 3.5.1 版本中测试过。当然要在本书中囊括该版本中新增的特征和功能,还有相当多的工作要做。
廷克图(TinkerGraph)是一种内存图,这意味着没什么东西会自动的存储到磁盘上。它做为阿帕奇 TinkerPop3 的一部分被下载。本入门向导的目标帮助仅有一点点或者几乎没有先导知识的朋友们,使得他们起步并迅速上手小精灵控制台和航行图。在本书的后续章节中,本人将会讨论更多技术内容:例如:杰森图(JanusGraph)、阿帕奇卡珊德拉(Apache Cassandra), 小精灵服务器( Gremlin Server )和 搜索引擎解决方案(Elasticsearch),并基于这些技术来构建可扩展的、持久化的图存储,且这些图存储可以使用小精灵查询语言来进行遍历访问。本人还会探讨使用小精灵控制台并编写独立运行的 Java 和 Groovy 应用;本人也提供了若干 Ruby 语言的例子。
在本书最开始的章节中,笔者重点聚焦于展示使用小精灵查询语言进行多种不同类型的查询。 笔者仅列举了挑选的诸多例子中部分输出结果并未展示所有的输出结果,您可以通过执行案例中的各个查询并得到全部的例子的输出。该部分内容将在本书的第四、五、六章中深入研究。
本书如何组织的呢?
第一章 --介绍
• 导入内容是一起回顾为什么大家关注图形数据库,并一起探讨图的一些优秀的使用案例。笔者同样提供样例程序和本书的一些其它的相关资料。
第二章 --启航
• 第二章中将介绍的内容是阿帕奇 TinkerPop 的一些组件,当然也会介绍航线图的文件 air-routes.graphml,该文件是本书的绝大多数例子都会用到的图。
第三章 --编写小精灵查询
• 从第三章起内容会更加有趣,更加精彩了。笔者开始讨论如何使用小精灵图遍历和查询语言并查询航线图。 笔者将会对比:如何使用传统的关系数据库建立航线图,并看看使用结构化查询语言(SQL)和小精灵(Gremlin)图查询语言的异同。本章其余部分将介绍 Gemlin 查询语言的几种关建方法,它们有时也被称为“步骤”。本章重点关注的内容是读图(而不是增加或者删除图)。
第四章 --超越基本的查询
• 第四章的内容远不止仅仅是读取或查询图,笔者将叙述如何增加节点、边或弧、属性,还有如何删除或者更新它们。笔者还展开各种最佳实践方案的讨论和研究。本章还会涉及一些更有深度的话题。
第五章 -- 复合查询和查询结果生成
• 第五章,笔者将着重于使用之前几章学习的内容来编写查询句语,从而获得更真实的感受。笔者将运行本章节的各个例子,查看它们的运行结果。笔者也会讨论如下主题:分析距离、路径分布和编写地理空间查询。
第六章 -- 超越控制台和廷克图(TinkerGraph)
•从第六章开始,本书的关注点将从小精灵控制台和迁克图移步至其它概念。笔者将开始此类内容:编写可以用到图数据库且独立运行的 Java 和 Groovy 程序。笔者也会简要介绍杰森图(JanusGraph)并详细的了解该图数据库的能力,例如对于数据库事务的支持,数据库模式和数据库索引。与此同时各种各样的后端持久化存储和索引技术也将会在本章中出现。
第七章 -- 小精灵服务器介绍
• 第七章,介绍小精灵服务器喽! 笔者将探索从小精灵控制台和程序代码去连接远程的图数据库并在其上工作。本书刚刚发布时,绝大多数”真实的“使用案例都集中在直连的图数据库或者内存图数据库。 自从阿岶奇 Tinerpop 项目出现以来,使用小精灵服务器来连接远程的图数据库变得更为常见了。
第八章 常见的图序列化格式
• 第八章中讨论的内容如下:一些常见的图序更化的文件格式,以及如何在 TinkerPop 3 支持的图数据库中使用这些序列化格式。
第九章 延伸阅读
• 本书的最后,笔者将以一些有用的链接结尾,通过这些网址,您可以找到本书中所涉及的诸多主题和技术的一些工具和文档资料。
版权声明: 本文为 InfoQ 作者【Geek_古藤模根】的原创文章。
原文链接:【http://xie.infoq.cn/article/28666d09d10e75ca040e1062f】。文章转载请联系作者。
评论