七周七数据库
如今,我们要面对和使用的数据正在变得越来越庞大和复杂。如果说数据是新的石油。那么数据库就是油田、炼油厂、钻井和油泵。作为一名现代的软件开发者,我们需要了解数据管理的新领域,既包括RDBMS,也包括NoSQL。
本书遵循《七周七语言》的写作风格和体例,带领你学习和了解当令最热门的开源数据库。在简单的介绍之后,本书分章介绍了7种数据库。这些数据库分别属于5种不同的数据库风格,但每种数据库都有自己保存数据和看待世界的方式。它们依次是PostgreSQL、Riak、Apache HBase、MongoDB、Apache CouchDB、Neo4J和Redis。本书将深入每一种数据库,介绍它们的优势和不足,以及如何选取一种最符合你的应用需求的数据库。
本书适合数据库架构师、数据库管理员,以及想要了解和学习各种 NoSQL 数据库技术的程序员阅读。本书将帮助读者了解、选择和应用这些数据库,从而更好地发挥日益增长的大数据的能力。
如果说数据是新的石油,那么数据库就是油田、炼油厂、钻井和油泵。数据存放在数据库中,如果你有兴趣利用它,那么掌握相应的现代化的工具就是好的开始。
数据库是工具,它们是到达终点的手段。每种数据库都有自己保存数据和看待世界的方式。你对它们的理解越多,就越能随心所欲,在日益增长的大数据上,就能更好地利用它们潜在的能力。
为什么是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并希望给它一个尝试的机会,我们推荐安装Cygwin1,这样更容易成功。你也可以考虑运行一个Linux虚拟机。
注释1 http://www.cygwin.com/
代码示例和惯例
本书包含各种语言的代码。部分原因是因为我们介绍的这些数据库本身使用语言不同。我们曾试着将语言局限在Ruby/JRuby和JavaScript。我们更喜欢命令行工具,而不是脚本语言,但我们会引入其他一些语言来完成工作,如PL/pgSQL(Postgres)和Gremlin/Groovy (Neo4j)。我们也会尝试使用Node.js,编写一些服务器端的JavaScript应用。
除非特别注明,代码清单都是完整的,通常可以直接执行。根据所涉及的语言规则,突出了示例和代码片段中的语法。shell命令以$开始。
-
一级建造师,二级建造师考试 VIP版
一级,二级建造师APP破解版是专门为土木工程从业者准备的手机学习软件,题库包含了考二级建造师所需的全部知识点,内容涵盖了精选题库、名师... 1080 0 25-02-06 -
无损音乐下载网站合集
网页版网站音乐搜索器(主流音乐网站都支持)以下网站都是基于“麦聪音乐搜索器”搭建的网站,支持主流音乐网站,主要为酷狗,酷我音乐!ht... 981 0 25-03-10 -
猫眼电影(后端node)
猫眼电影的前端源码中,可能包括以下组件和功能:1. 首页:展示热门电影、新上映电影等信息,通常会用到轮播图、列表布局等组件。2. 电影... 830 0 24-10-26 -
7-zip中文版 - 好用无广告的压缩软件
7-zip中文版是一款免费的文件压缩/解压软件,拥有极高的压缩率。它特有的高解压速率,是其它的压缩软件难以相比的。7-zip中文版具有高压缩... 370 0 21-07-07 -
Python3.6.4网络爬虫实战第2版
计算机技术飞速发展,人们对计算机使用技能的要求也越来越高在编写软件时,大家既希望有超高的效率,又希望这门语言简单易用。这种鱼与熊掌... 1031 0 24-05-29 -
仿映客,花椒直播的梦蝶直播系统源码
2018 仿映客,花椒直播的梦蝶直播系统源码 边看边买+私密+付费直播+互动+游戏+购物直播,系统独立的手机互动直播 app,也能在您原有平台基... 489 0 21-07-03 -
PHP生成随机字符 可做随机命名 随机卡密等
利用此函数生成随机文件名或强度较高的卡密等第一种:<?php function randStr($len = 6) { $chars = 'ABDEFGHJKLMNPQRSTVWXYabdefg... 799 0 25-04-07 -
简单清爽的confirm确认对话框
352 0 21-06-02
发表我的评论
- 这篇文章还没有收到评论,赶紧来抢沙发吧~