《解读NoSQL》——2.6 通过数据库分片获得水平扩展能力

2.6 通过数据库分片获得水平扩展能力

随着一个组织存储的数据量增加,可能在某个时候,业务运行所需的数据量超过了当前环境所能运行的最大值,这时候,一些将数据分成合理的数据块的机制是必要的。组织和系统可以将数据库自动分片(将一个数据库划分为一些块,这些块称作数据库分片,它们遍布在一些分布式服务器上)作为持续存储数据并且最小化宕机时间的手段。在稍早的系统上手动配置数据库并将数据从旧系统复制到新系统时,这个操作可能会耗费系统数小时,然而NoSQL系统会自动进行这个操作。数据库的成长性和自动分区数据的容错性对于NoSQL系统来说很重要。对于大数据系统和容错系统,分片操作已经成为高度自动化的过程。接下来让我们来看看分片如何工作以及它面临的挑战。

假设你创建了一个网站,它允许用户登录和创建自己的私人空间并与朋友们分享。他们会上传文件、发送信息并发表一些他们对喜欢的(或不喜欢的)事物的看法。你搭建起网站,将这些信息保存到运行在单个CPU之上的MySQL数据库中。人们如果喜欢它,就会登录网站,创建主页,邀请朋友,不知不觉间你的磁盘空间已经所剩无几。接下来该怎么办?如果你使用的是典型的RDBMS,那么答案是购买新的系统并将一半用户迁移到新系统中。哎,你以前的系统可能需要宕机一段时间,这样你才能重写应用让它知道从哪个数据库中得到所需的信息。图2-9显示了一个数据分片的典型示例。

图2-9 当单个处理器不能很好地胜任系统的吞吐量需求时,就需要执行分片操作。当发生分片时,你会希望数据被移动到两个系统中,而每个系统负责原来一半的工作。许多NoSQL系统内建了自动分片功能,你只需将一台服务器添加至工作节点资源池里,数据库管理系统会自动将数据移动至新节点。大多数RDBMS不支持自动分片

有多种方式可以完成从单个数据库迁移至多个数据库的过程。

(1)可以将用户名以A~N开头的用户保留在原有的系统中,而将用户名以O~Z开头的用户迁移至新系统。

(2)可以将美国用户保留在原有系统中,而将欧洲用户迁移至新系统。

(3)可以随机将一半用户迁移至新系统中。

每一种方式都有其优势和劣势。例如,第一种方案,如果某个用户修改了用户名,那么是否应该将它自动迁移到新系统?第二种方案,如果某个用户搬家到一个新的国家,那么他的数据是否也该被迁移?如果用户都喜欢与周围的人分享链接,那么将这些用户放在同一系统中是否有性能上优势?如果美国的用户都习惯在晚上同一时间活跃又会怎么样?其中一个数据库会承受巨大压力而另一个空闲吗?如果你的网站规模再次翻倍又会如何?你会每次硬着头皮不断地重写代码来应付吗?你会让你的系统宕机一周等你升级软件吗?

随着服务器数量的增长,你会发现每一台服务器宕机的概率是均等的,所以每当你增加一台服务器,那么某一部分不工作的概率会增加。你或许会认为你将数据库切分到两个系统的过程也可以用来复制数据到备份系统或者镜像系统以防系统故障,但是这会带来新的问题。如果主节点被修改了,那么必须保证备份数据同步更新,这就需要有一个数据复制方案。同步这些数据库耗费时间的同时也会降低系统性能。现在你需要维护更多服务器了!

欢迎来到数据库分片、复制和分布式计算的世界。可以看到当数据库不断成长,你需要考虑和权衡许多问题。NoSQL系统已经有很多方法允许用户在扩大数据库规模的同时不用关闭服务器。当存储节点或网络出现故障时仍维持数据库运行叫作被称为分区容错性——一个在NoSQL社区出现的而传统数据库管理者努力追求的新概念。

理解事务完整性和自动分片对于考虑搭建分布式系统时面临的权衡问题是很重要的。尽管数据库性能、事务完整性以及如何利用内存和自动分片特性很重要,但有些时候,你必须确认并专注于系统最重要的方面,而使其他方面变得灵活。在下一节中,我们将通过一个标准的流程来了解在选择过程中需要做出的权衡,这样有助你专注于对组织最重要的事物。

时间: 2024-09-15 09:58:14

《解读NoSQL》——2.6 通过数据库分片获得水平扩展能力的相关文章

详解SQLServer 2008 R2数据库SSAS建模及扩展能力_mssql2008

SQLServer 2008 R2数据库中提供的SSAS建模工具包括包括SQL Server Management Studio 和Business Intelligence Development Studio,那么建模的过程是怎样的呢?本文我们就来介绍这些,接下来就让我们来一起了解一下SQLServer 2008 R2数据库的建模工具和关键过程以及数据挖掘.权限和访问接口等的知识吧. 建模工具和关键过程 SSAS的建模的目的是设计多维数据库对象,建模的工具包括SQL Server Manag

《解读NoSQL》导读

前言 解读NoSQL有时候,现实迫使我们重新审视我们认为已经了解的事物.在花费了大量的工作时间专注于以行式数据结构存储数据的数据建模任务之后,我们发现,其实建模环节并不是非做不可的.但是这些信息并不意味着我们现有的知识体系是无效的,它迫使我们去审视应该如何解决企业的技术难题.有了新的知识.技术和解决问题方式的武装之后,我们的思路才能得以扩展. 2006年,在一个涉及房地产交易的项目中,我们花了好几个月的时间设计XML的语言模式和形式以存储层次结构复杂的数据.根据我的一个朋友 Kurt Cagle

《解读NoSQL》——2.5 比较ACID和BASE——两种可靠的数据库事务方法

2.5 比较ACID和BASE--两种可靠的数据库事务方法 兼顾性能和一致性的事务控制在分布式计算环境下是很重要的.通常会在两种事务控制模型中选择其一使用:ACID用于RDBMS,BASE用在很多NoSQL系统.即使数据库事务只有很少一部分需要事务完整性,但了解RDBMS和NoSQL系统能够采用这些事务控制策略也是很重要的.这两种模型的区别在于应用开发人员所付出的努力和事务控制所发生的位置(层级). 让我们从一个简单的银行业务案例来展现一个可靠的事务.如今,许多人都有两个银行账户:储蓄账户和支票

深度解读 | 阿里云新一代关系型数据库 PolarDB

本文通过描述关系型数据库发展的背景以及云计算的时代特征,分享了数据库计算力的螺旋式上升的进化理念,另外结合阿里云 RDS 产品的发展路径,阐述了自主研发的新一代云托管关系型数据库 PolarDB 的产品整体设计思想,对一些关键技术点进行了解读. 关系型数据库 谈到关系型数据库,在这个知识日新月异的 TMT 时代,听起来有些"古董",这个起源于半个世纪以前的 IT 技术,事实上一直处于现代社会科技的核心,支撑着当今世界绝大多数的商业科技文明.CPU.操作系统.数据库这三大核心领域,基本上

《解读NoSQL》——第2章 NoSQL概念

第2章 NoSQL概念 解读NoSQL本章主要内容 NoSQL 概念对于可靠的数据库事务的ACID 和 BASE最小化由于数据库分区所造成的宕机时间Brewer 的 CAP 定理少即是多. --Ludwig Mies van der Rohe 在本章,我们将介绍一些NoSQL系统的核心概念.阅读完本章之后,你将有能力识别和定义NoSQL的概念和术语,了解NoSQL厂商的产品及其特性并且能够决定这些特性是否适合你的NoSQL系统.接下来,我们将讨论如何在应用开发过程中利用简单的组件来降低复杂性和促

《解读NoSQL》——第1章 NoSQL:明智的选择

第1章 NoSQL:明智的选择 解读NoSQL**本章主要内容**什么是NoSQLNoSQL的商业驱动NoSQL的案例研究**最小部件所耗费的复杂度约每两年增长一倍.当然,如果这个增长速度不再增长的话,短期内这样的增长速度仍然会继续. --Gordon Moore(戈登·摩尔,Intel创始人之一),1965 --你最好开始游泳,否则你将沉入水底--因为时代在变革. --Bob Dylan** 我们编写本书有两个初衷:第一,介绍NoSQL数据库:第二,展示如何使用NoSQL系统作为独立的解决方案

针对SaaS应用程序的基于Hibernate框架的数据库分片

针对 SaaS 应用程序的基于 Hibernate 框架的数据库分片 SaaS 正在改变设计.构建.部署和操作应用程序的方式.开发一个 SaaS 应用程序与开发一个通用企业应用程序之间的关键区别在于,SaaS 应用程序必须是多租户的.其他关键 SaaS 需求,比如安全性.定制.面向服务的架构(SOA)和集成,也影响 SaaS 应用程序架构. 多租户是指应用程序在单一代码库内寄存多个承租者并共享数据库等架构的能力.有多种设计选项可启用多租户数据架构 - 每个承租者的专用数据库.每个承租者的共享数据

《解读NoSQL》——2.7 基于Brewer的CAP定理进行权衡

2.7 基于Brewer的CAP定理进行权衡 为了能在系统故障时做出最好的决策,你需要考虑基于不可靠的网络的分布式系统的一致性和可用性属性. Eric Brewer在2000年首次提出CAP定理.CAP定理表明了任何分布式数据库系统最多只能满足以下3个期望属性中的2个. 一致性--对于所有客户端,具有唯一的.最新的.可读的版本的数据.这和前面讨论的ACID的一致性不太一样.这里的一致性主要关注的是多个客户端从多个复制分区读取相同的内容并得到一致的结果.高可用性--我们知道分布式数据库总是允许数据

《解读NoSQL》——1.1 什么是NoSQL

1.1 什么是NoSQL 准确定义NoSQL本身就具有挑战性.NoSQL这个术语其实是有待商榷的,因为它并没有真正意义上揭示NoSQL运动的核心主题.这个术语来源于一群定期在湾区开会并讨论一些共同关注的可扩展的开源数据库的人们,它就这样出现了.不管它形不形象,它似乎出现在所有地方:行业期刊.产品说明和各种会议.在本书,我们将用NoSQL区别于传统的关系型数据库管理系统(RDBMS). 按照我们的目标,我们将从以下几个方面定义NoSQL. NoSQL是关于快速而高效地处理数据,专注于性能.可靠性和