新書推薦:
《
民法典1000问
》
售價:NT$
454.0
《
国术健身 易筋经
》
售價:NT$
152.0
《
古罗马800年
》
售價:NT$
857.0
《
权力与相互依赖(第四版)(中译本修订版)
》
售價:NT$
658.0
《
写出心灵深处的故事:踏上疗愈之旅(修订版)(创意写作书系)
》
售價:NT$
301.0
《
控制权视角下的家族企业管理与传承
》
售價:NT$
398.0
《
冯友兰和青年谈心系列
》
售價:NT$
762.0
《
利他主义的生意:偏爱“非理性”的市场(英国《金融时报》推荐读物!)
》
售價:NT$
352.0
|
編輯推薦: |
CockroachDB是为支撑现代数据驱动云应用而构建的分布式SQL数据库,本书可以帮助你了解CockroachDB的研发信息。通过阅读本书,软件开发人员、架构师和DevOps/SRE团队成员将学到如何使用CockroachDB创建可扩展的应用,并在为最终用户提供无缝交付能力的同时保障系统具备“坚不可摧”的特性。你还将学会如何将现有应用迁移到CockroachDB的高性能云原生数据架构上。如果你熟悉分布式系统,就会很了解数据库提供强大的数据正确性和一致性保障能力的好处,以及为全球分布式终端用户提供可优化的超低延迟能力的优势。通过阅读本书,你将学到:? 基于分布式基础设施设计和构建应用,包括数据建模和模式设计。? 向CockroachDB迁移数据。? 在分布式基础设施上运行具备ACID特性的事务并实现读写数据。? 规划具备跨单区域和多区域集群弹性扩展能力的CockroachDB系统。? 保障安全、实现监控并优化你的CockroachDB系统。
|
內容簡介: |
本书介绍如何使用CockroachDB创建可扩展的应用,并在为最终用户提供无缝交付能力的同时保障系统性能。全书共15章,分为三部分:第一部分(第1~4章)介绍CockroachDB的历史背景,包括数据库的演进和分布式云数据库的出现,内容涵盖分布式SQL的核心概念、CockroachDB的架构和功能、CockroachDB适用场景下的用例;第二部分(第5~8章)介绍CockroachDB中模式设计的基本原理,涵盖应用的设计和实现,以及与其他数据库的集成;第三部分(第9~15章)涵盖单区域和多区域部署的规划和执行,核心内容包括备份和灾难恢复、安全、可观测性、管理和故障排除以及集群优化。
|
關於作者: |
Guy Harrison是ProvenDB的首席技术官,在数据库设计、开发、管理和优化方面拥有20多年的从业经验。他著有《Next Generation Databases》(Apress)、《(MongoDB Performance Tuning》(Apress)、《Oracle Performance Survival Guide》(Prentice Hall)、《MySQL Stored Procedure Programming》(OReilly)等书籍,并发表了许多关于数据库技术的文章。
Jesse Seldess是蟑螂实验室的教育副总裁,他领导着文档编制和培训团队。他在技术文档方面有近20年的经验,并在蟑螂实验室和AppNexus(现在的Xandr)建立了团队。
Ben Darnell是Cockroach Labs的联合创始人和首席架构师,他在那里构建了分布式共识协议,支撑了CockroachDB的事务模型。他在谷歌开始了他的职业生涯,然后进入了一系列创业公司,在那里他亲眼看到了对更好的可扩展存储系统的需求。
|
目錄:
|
目录
前言1
第一部分 CockroachDB基础11
第1章 CockroachDB简介13
1.1 数据库简史13
1.2 CockroachDB横空出世22
1.3 CockroachDB上线25
1.4 总结26
第2章 CockroachDB架构设计28
2.1 CockroachDB集群架构28
2.2 CockroachDB软件栈31
2.3 CockroachDB SQL层31
2.4 从SQL到键值对33
2.5 CockroachDB事务层37
2.6 CockroachDB分布式管理层45
2.7 CockroachDB复制层48
2.8 CockroachDB存储层50
2.9 总结53
第3章 使用入门55
3.1 安装55
3.2 使用GUI客户端69
3.3 CockroachDB功能探索69
3.4 使用编程语言74
3.5 总结80
第4章 CockroachDB SQL81
4.1 SQL的兼容性81
4.2 通过SELECT查询数据82
4.3 创建表和索引94
4.4 插入数据105
4.5 UPDATE107
4.6 UPSERT108
4.7 DELETE109
4.8 TRUNCATE109
4.9 IMPORT/IMPORT INTO109
4.10 事务语句110
4.11 其他数据定义语言目标113
4.12 管控命令114
4.13 信息模式115
4.14 总结115
第二部分 开发CockroachDB应用117
第5章 CockroachDB模式设计119
5.1 逻辑数据建模119
5.2 物理设计123
5.3 反范式化131
5.4 JSON文档模型135
5.5 索引140
5.6 总结151
第6章 应用设计和实现152
6.1 CockroachDB编程152
6.2 管理事务169
6.3 使用ORM框架180
6.4 总结184
第7章 应用迁移和集成185
7.1 数据加载185
7.2 从其他数据库迁移数据190
7.3 导出CockroachDB中的数据204
7.4 变更数据捕获206
7.5 总结220
第8章 SQL调优221
8.1 找到执行缓慢的SQL221
8.2 通过EXPLAIN命令解释并追踪SQL语句223
8.3 变更SQL执行234
8.4 优化器性能调优260
8.5 总结263
第三部分 CockroachDB的部署与管理265
第9章 规划部署267
9.1 理解你的需求267
9.2 部署方式选项对比268
9.3 无服务器部署271
9.4 单区域专属集群部署273
9.5 配置自托管高可用集群280
9.6 总结284
第10章 单个区域部署285
10.1 专属集群部署或云部署285
10.2 在Kubernetes上部署299
10.3 总结305
第11章 多区域部署306
11.1 多区域的概念306
11.2 多区域部署311
11.3 总结319
第12章 备份和灾难恢复320
12.1 备份321
12.2 恢复数据330
12.3 导出数据333
12.4 灾难恢复最佳实践333
12.5 总结335
第13章 安全保障336
13.1 防火墙配置336
13.2 加密和服务器证书344
13.3 静态加密345
13.4 身份验证机制348
13.5 授权349
13.6 日志记录和审计353
13.7 安全保障最佳实践356
13.8 总结356
第14章 管理和故障定位358
14.1 监控358
14.2 日志配置365
14.3 集群管理373
14.4 故障排查378
14.5 总结383
第15章 集群优化384
15.1 调优与灭火384
15.2 工作负载优化386
15.3 集群平衡394
15.4 网络405
15.5 内存优化406
15.6 键值对缓存407
15.7 磁盘I/O409
15.8 横向扩容411
15.9 总结412
|
內容試閱:
|
译者序
就凭“蟑螂数据库”这个中文名字,就足以让CockroachDB从一众同类数据库中脱颖而出。以具有顽强生命力但却会让很多人心中发毛的小昆虫“蟑螂”来命名一款面向云原生环境构建的现代分布式数据库系统,这个创意别具一格!
现代社会中,我们已经在遍布全球的信息网络基础架构之上构建了种类繁多的应用和服务系统,这些系统无时无刻不在为我们生产、生活的方方面面提供数据支持,且作用愈加关键。因此,这些系统对稳定性、性能和容灾能力的要求越来越高。Cockroach Labs精准地抓住了这个市场需求关键点,其研发的CockroachDB在同类SQL数据库的全球化跨区域集群部署,分布式一致性数据保障,大规模可扩展性和节点、区域、地域容灾方面做到了领先水平。在应对规模化部署和支撑海量负载伴生的运维复杂度方面,CockroachDB提供了Serverless的云原生能力来有效地解决此问题。可以说CockroachDB是一款真正面向当前和未来基于云原生环境构建的互联网应用痛点问题而设计研发的新型数据库系统。
CockroachDB设计继承了经历过大规模实际生产环境应用检验的Google 高一致性分布式数据库Spanner项目的部分技术,设计理念受其启发且青出于蓝。目前,CockroachDB的开源社区非常活跃,产品版本演进速度也很快,不管遇到什么技术问题,你几乎都能够在社区上很方便地获得必要的技术支持。
无论你是在创业公司研发互联网应用的工程师,还是已经有一定规模存量客户并正在考虑升级扩容现有数据库系统架构的架构师,又或者是正在践行DevOps并规划公司新型云原生化信息系统战略的决策者,都值得打开本书,仔细端详一下这只突然闯入数据库圈子,并迅速聚集大量人气的“蟑螂”。相信通过阅读本书,你能够改变对这只打不死且行动敏捷的数据库“蟑螂”的最初看法,并逐渐喜欢上这只名字貌似小巧,但在数字空间可以近乎无限扩展,变得异常庞大的“小家伙”!
前言
为什么是 CockroachDB
首先,欢迎阅读本书!在本书中,我们希望帮助你学会使用为云环境设计的分布式 SQL 数据库 CockroachDB 来部署应用程序。
很多人问的第一个问题是:为什么叫“蟑螂数据库”(CockroachDB)?
工程设计中一个不可避免的问题是系统会出现故障。在考虑足够大的范围的前提下,系 统总是在出现各种各样的故障。在一台机器上可能一年发生一次的故障,在运行数百 个分片时就会变成每天都会发生的故障。处理大规模数据的系统必须将容错作为核心职 责。这也是 Google 的 MapReduce 框架的关键设计原则之一。通过要求所有的计算都符 合一个相对严格的框架,系统可以在发生故障后自动重新运行必要的任务。
我们认为分布式系统就应该是这样设计的:高可用性复制应该是数据库的默认状态,而 不是辛苦配置的结果。展望第 2 天(或第 200 天),数据库必须能够随着应用程序的演进 而同步扩展,这样,巨大的成功才值得庆祝。
当从头开始构建关系数据库时,我们希望为现代云应用程序带来数据一致性保障能力、 原生弹性扩展能力、数据本地域保持能力和大规模部署能力。我们的愿景是系统能够将 你提供给它的任何资源都以公有云方式支撑,然后不断地优化演进系统自身的能力。数 据库需要能够充分利用可用存储空间,并能够在一组协同工作的全球分布式部署节点之 间达到性能平衡,这样它不仅可以融合新的资源,而且在一台机器或数据中心甚至整个 区域出现故障时,也能轻松地实现剩余可用资源的平衡。
我们的目标是建立一个能够在全球范围内普遍部署且生命力顽强的数据库,就像本书封 面的褐斑大蠊(periplaneta brunnea,蟑螂的一种)一样。于是 CockroachDB 诞生了。
构建 CockroachDB
CockroachDB 的起源是一个关于“必要性”的故事:Spencer Kimball 、Peter Mattis 和 我—Ben Darnell 开始着手建立自己需要的关系数据库。
在到 Google 一起工作后,我们三个人有一段时间各自忙着不同方向的工作。最终,我 们和 Spencer 的哥哥 Andy (Andy 是微软 SQL Server 的资深员工) 一起在一 家名为 Viewfinder 的初创公司开发了一个照片管理和社交分享的应用程序。当然,我们希望它 能成功,所以我们想要扩大规模。毕竟,正如 Spencer 所说:“我们知道有时候有些状况 会发生。而且,在系统规模扩展问题上,某些状况总是在发生。”
事实证明,考虑到这个项目的历史,我们在判断是否需要大规模的可扩展性方面做得 还不够好,但我们想从一开始就为这项能力做好规划。我们也不想故步自封在一个 类似分片 MySQL 这样的数据库中。我们曾经走过这条路,知道它不会把我们带到我 们想去的地方。这个判断也让我们把 NoSQL 数据库定为最佳选择,最终我们选择了 DynamoDB。
DynamoDB 满足了很多条件:它是可扩展的、高性能的,也是可预测的。它与 Bigtable 非常相似,当我在 Google 时,曾使用Bigtable 作为 Google Reader 的后端。所以,至少 在理论上,我们真的很喜欢这个模型。但是随着经验的积累,我们意识到 NoSQL 方案 有几个基本的问题待解决。
最大的一
|
|