基本信息
- 原书名:Seven Databases in Seven Weeks: A Guide to Modern Databases and the NoSQL Movement
- 原出版社: Pragmatic Bookshelf
- 作者: (美)Eric Redmond Jim R. wilson
- 译者: 王海鹏 田思源 王晨
- 出版社:人民邮电出版社
- ISBN:9787115312242
- 上架时间:2013-5-30
- 出版日期:2013 年7月
- 开本:16开
- 页码:309
- 版次:1-1
- 所属分类:计算机 > 数据库 > 综合
编辑推荐
试想,周五你安装并运行了一个新的数据库。周六,你会看到在日常使用中它是什么样子。到了周日,你已经学到了一些技巧,甚至可能让专家们感到惊讶!而下一周,你又会跳到另一个数据库。Ian Dees告诉我们这样的效率是有可能的。本书言简意赅、直入主题,深入每一种数据库,介绍它们的优势和不足,以及如何选取一种最符合你的应用需求的数据库,探究当前流行和具有代表性的七种数据库技术。你准备好了吗?
内容简介
计算机书籍
如今,我们要面对和使用的数据正在变得越来越庞大和复杂。如果说数据是新的石油。那么数据库就是油田、炼油厂、钻井和油泵。作为一名现代的软件开发者,我们需要了解数据管理的新领域,既包括RDBMS,也包括NoSQL。
《七周七数据库》遵循《七周七语言》的写作风格和体例,带领你学习和了解当令最热门的开源数据库。在简单的介绍之后,《七周七数据库》分章介绍了7种数据库。这些数据库分别属于5种不同的数据库风格,但每种数据库都有自己保存数据和看待世界的方式。它们依次是PostgreSQL、Riak、Apache HBase、MongoDB、Apache CouchDB、Neo4J和Redis。《七周七数据库》将深入每一种数据库,介绍它们的优势和不足,以及如何选取一种最符合你的应用需求的数据库。
《七周七数据库》适合数据库架构师、数据库管理员,以及想要了解和学习各种NoSQL数据库技术的程序员阅读。《七周七数据库》将帮助读者了解、选择和应用这些数据库,从而更好地发挥日益增长的大数据的能力。
作译者
Jim R. Wilson从13岁就开始编程。他曾在医疗、搜索和市场营销行业的公司中担任过工程师和web专家。他从2007年开始思考NoSQL数据库,并为大规模的开源项目(如MediaWiki和HBase)贡献了代码。他和妻子Ruth及两个小孩住在马萨诸塞州的利特尔顿,经常在本地的JavaScript和NoSQL会议上演讲。
王海鹏,1994年毕业于华东师范大学。软件开发者,独立的咨询顾问、培训讲师、译者。拥有20年编程经验,已翻译二十余本软件开发书籍。目前主要感兴趣的领域是软件架构和方法学,致力于提高软件开发的品质和效率。新浪微博:@王海鹏Seal。
田思源,资深IT人士,从事软件、互联网行业多年,有多部译作面世。现居北京。新浪微博:@胡试之。
王晨,IBM中国系统与科技研发中心的软件工程师,从事硬件集成管理系统的开发测试工作。新浪微博:@wwwwwch。
目录
第1章 概述 1
1.1 从一个问题开始 1
1.2 风格 2
1.2.1 关系数据库 3
1.2.2 键-值数据库 3
1.2.3 列型数据库 4
1.2.4 文档型数据库 5
1.2.5 图数据库 5
1.2.6 混合使用多种数据库 6
1.3 前进和提升 6
第2章 PostgreSQL 7
2.1 这就是Post-greS-Q-L 7
2.2 第1天:关系、CRUD和联接 8
2.2.1 从SQL开始 10
2.2.2 使用表 10
2.2.3 使用联接的查询 13
2.2.4 外联接 15
2.2.5 使用索引快速查找 16
2.2.6 第1天总结 18
前言
数据库是工具,它们是到达终点的手段。每种数据库都有自己保存数据和看待世界的方式。你对它们的理解越多,就越能随心所欲,在日益增长的大数据上,就能更好地利用它们潜在的能力。
为什么是7种数据库
早在2010年3月,我们就想写本关于NoSQL的书。NoSQL这个术语已经聚集了人气,虽然许多人都在谈论,但关于它似乎也存在相当多的困惑。NoSQL到底意味着什么?包含哪些类型的系统?对于开发优秀的软件,它将产生怎样的影响?这些就是我们想要回答的问题,既是为我们自己,也是为别人。
在读了Bruce Tate的典范性的著作《七周七语言》后,我们知道他做得很对。他循序渐进地介绍语言的方式引起了我们的共鸣。我们觉得用同样的方式讲授数据库,将会提供一个很好的环境,回答这些棘手的NoSQL问题。
本书内容
本书针对的是有经验的开发者,他们希望全面地理解现代数据库的整体情况。本书不要求读者以前在数据库方面有经验,但有数据库经验会有助于学习本书。
在简单的介绍之后,本书分章介绍了7个数据库。这些数据库分属5种不同的数据库类型或风格,这在第1章中有介绍。它们依次是PostgreSQL、Riak、Apache HBase、MongoDB、Apache CouchDB、Neo4j和Redis。
每章都设计成一个长周末的学习量,分为三天。每天结束时都有一些练习,扩展刚刚介绍的主题和概念。每章最后都有一段总结性的讨论,总结了这种数据库的优点和缺点。你既可以学得快一点,也可以学得慢一点,但重要的是先掌握每天的概念,再继续后面的学习。我们试着设计了一些例子来探索每种数据库的独特之处。要真正理解这些数据库提供的能力,必须花些时间来使用它们,这意味着要动手实践。
虽然你可能想跳过某些章,但我们设想你是按章节顺序阅读这本书的。某些概念,如映射-归约(mapreduce),在前面的章节中深入地进行了介绍,所以在后面的章节中就略过了。本书旨在实现对现代数据库的一致理解,所以建议你完整地阅读本书。
不包含的内容
在阅读本书之前,你应该知道它不包含哪些内容。
本书不是安装指南
安装本书中提到的数据库有时候容易,有时候有些挑战,有时候非常棘手。对于某些数据库,可以使用提供的安装包;而对于另一些数据库,需要编译源代码。我们会不时提供一些有用的提示,但主要还是靠你自己。省略安装步骤让我们能安排更多有用的例子和概念讨论,这才是你真正想要的,对吗?
本书也不是管理手册
出于对安装同样的考虑,本书也不会介绍管理手册里的所有内容。每种数据库都有大量的选项、设置、开关和配置细节,绝大部分都能在Web上找到详尽的文档。我们更关心介绍有用的概念,完全深入进去,而不是仅关注日常操作。虽然数据库的一些特点会根据操作设置而改变(我们可能会讨论这些特点),但由于篇幅有限,我们不可能介绍所有可能配置的全部具体细节。
对Windows用户的说明
本书本身就讨论选择,主要是针对*nix平台上的开源软件。微软的环境作为集成环境有点困难,它限制了许多选择,只留下一个较小的、预定义的子集。因此,我们介绍的数据库是开源的,由*nix系统的用户开发(也主要为他们服务)。这不是我们的偏见,只是当前真实情况的反映。所以,我们假定教程式的例子运行在*nix的shell下。如果你运行Windows并希望给它一个尝试的机会,我们推荐安装Cygwin ,这样更容易成功。你也可以考虑运行一个Linux虚拟机。
代码示例和惯例
本书包含各种语言的代码。部分原因是因为我们介绍的这些数据库本身使用语言不同。我们曾试着将语言局限在Ruby/JRuby和JavaScript。我们更喜欢命令行工具,而不是脚本语言,但我们会引入其他一些语言来完成工作,如PL/pgSQL(Postgres)和Gremlin/Groovy(Neo4j)。我们也会尝试使用Node.js,编写一些服务器端的JavaScript应用。
序言
1994年,作为IBM在奥斯汀的数据库开发实验室工作的雇员,我的感觉非常类似。当时我刚在奥斯汀的德克萨斯大学学习了面向对象数据库,因为在关系数据库主宰了10年之后,我想面向对象数据库真的有机会深入人心。但是,接下来的10年和之前一样,出现了更多同样的关系模型。我沮丧地关注着Oracle、IBM和其他以MySQL为首的开源解决方案,它们强劲伸展着的枝叶,完全挡住了阳光,妨碍了肥沃的土壤上正在萌芽的其他解决方案。
随着时间的推移,用户界面从绿屏幕变成了客户端-服务器的方式,又变成了基于互联网的应用,但关系层的代码同样张开无情的铁幕,几十年如一日地称职而单调。所以,我们期待着一场新雪。
然后新雪终于降临了。起初,雪花甚至不足以掩盖早行者的足迹,但暴雪随后到来,覆盖大地,带来了完美的滑雪体验,这正是我们渴望的不同和品质。在过去的一年里,我醒过来时发现,数据库的世界也覆盖了一层新雪。当然,关系数据库还在,你可以从开源RDBMS软件中获得令人吃惊的丰富体验。你可以创建集群,进行全文搜索,甚至进行模糊搜索。但你不再受限于某种方式。一年里我没有创建过一个完整的关系型解决方案。在这段时间里,我使用了一个文档数据库和几种键-值数据库。
真实情况是,关系数据库在灵活性和可伸缩性方面不再处于垄断地位。对于我们要构建的各类应用,还有更多合适的模型,更简单、更快速、更可靠。作为在IBM的奥斯汀实验室待了10年,与同事和客户从事数据库工作的人,我被这种进步惊呆了。在本书中,你会看到一些例子,完美地覆盖了数据库领域最重要的进展,正是这些数据库支撑了互联网的发展。在键-值存储库中,你会看到伸缩性极好、极为可靠的Riak,还会看到Redis中漂亮的查询机制。在列型数据库社区,你将体验到HBase的威力,它是关系数据库模型的近亲。在文档数据库中,你会看到伸缩性极好的、优雅的解决方案,处理深层嵌套的文档。你还会看到Neo4j在图形数据库上的应用,支持快速地在关系上导航。
要成为更好的程序员或数据库管理员,你不必使用所有这些数据库。随着Eric Redmond和Jim Wilson引导你走过的这段神奇的旅程,每一步都会让你更聪明,所获得的深刻见解对于软件职业来说是无价的。你会知道每种平台的闪光之处和最大局限。你会看到行业的发展方向,理解行业的驱动力。
享受这段旅程吧。
Bruce Tate,《七周七语言》的作者
2012年2月
德克萨斯州奥斯汀
媒体评论
——Help Net Security
如果你需要使用或考虑使用任何一种与传统关系型数据库有所不同的数据库技术,而且你不知道应该如何 从为数众多的选项中做出选择,那么,本书将帮助你了 解这一领域,并且帮助你根据当前的需求更好地做出选 择。郑重推荐这本书!
——Matthew Helmke.net
阅读这本书,就像去迪斯尼乐园的荒野地带。有转弯,有曲折,你永远不知道下一个拐角是什么,但是非常有趣。
——Jeffrey Newman
如下的故事是完美的。周五,你会安装并运行一种新的数据库。周六,你会看到在日常使用中它是什么样子。到了周日,你已经学到了一些技巧,甚至可能让专 家感到惊讶!而下一周,你会跳到另一个数据库,并且 又是另一番乐趣。
——Ian Dees 《Using JRuby》作者
这本书针对几种关键数据库给出了很好的概览。它将大幅度地提升你对数据建模的选择能力和实践技能。如果你希望别人对你在数据库方面的能力抱以七倍的羡 慕,那么,请阅读这本书。
——Sean Copenhaver,backgroundchecks.com 首席程序员
本书是迄今为止对现代数据库最好的实质性概述。它不同于我读过的大量教程、博客文章和文档,它教给我:为什么我要使用每种类型的数据库,以及应该以何 种方式使用它们,从而更容易理解和保留信息。阅读这本书是一种乐趣。
——Loren Sands-Ramshaw,美国国防部软件工程师
这是我所见到的介绍CouchDB最好的书籍之一。
——Jan Lehnardt Apache CouchDB的开发者和作者
如果更理想的话,在这本书的封面上可以印上:“包含你想知道的关于数据库的一切知识,而且你离不 开这些知识”。说实话,这本书会卖的很好。
——Nic Williams博士,Engine Yard的技术副总裁
本书很好地介绍了现代数据库设计和实施的各个方面。无论你是新手还是专家,即便是只花一天的时间阅读一章,你也会拓展技能,受益匪浅。
——Jerry Sievert,Daily Insight Group工程总监