克雷格斯。穆林斯,总统&首席顾问,Mullins
by 克雷格斯。穆林斯,总统&首席顾问,Mullins Consulting,Inc。

什么是数据库可伸缩性方法?

编者注:这是一份更大的白皮书摘录 克雷格穆林斯 探索数据库缩放选项。你可以下载完整的白皮书 这里 .

传统数据库可伸缩性方法

让我们对传统方法转身在数据库系统中实现可扩展性。数据库可伸缩性通常通过群集实现。使用群集,多个服务器用于提供数据库请求。

实现数据库群集有两个主要的架构: 共享磁盘 共享 - 没有 。在高水平,这些名称做出了合理的工作来描述架构的性质,但让我们深入了解每个人。两者都是水平缩放的形式。 

共享磁盘

共享磁盘架构

图1。   共享磁盘架构。

与A. 共享磁盘 环境所有连接系统共享相同的磁盘设备。参考 图1 。每个处理器仍然有自己的私人内存,但所有处理器都可以直接解决所有磁盘。这意味着不需要将数据分开到单独的分区中,因为 全部 数据在共享磁盘实现中共享。

但是要了解只有磁盘被共享。主内存不共享;每个处理器都有独占访问它的内存。由于任何处理器都可以缓存来自磁盘的相同数据,所以在多个节点修改数据时,需要缓存一致性机制以确保一致性。还需要分布式锁管理功能来管理数据的一致性,因为它由多个网络节点被请求和修改。

共享磁盘实现提供了多种优势,包括可能更低的成本,可扩展性,可用性,负载平衡以及集中式系统的相对简单的迁移。但是,来自潜在昂贵的存储区域网络(SAN)的共享磁盘优势,可以推动成本。通常,共享 - 磁盘群集往往不会扩展以及为较小机器的共享文件。但是,通过一些优化技术,共享磁盘非常适合于更大的企业处理,因此在大型机环境中完成。

IBM大型机系列的并行Sysplex功能的专业技术和软件使共享磁盘群集可用于DB2(和IMS)数据库。特别地,耦合设施和DB2的鲁棒优化技术有助于实现有效的共享磁盘群集。大型机已经是非常大的处理器,能够加工巨大的工作。只有少数集群大型机可以获得很大的好处 - 而许多工作站处理器需要聚集以实现类似的好处。

共享磁盘通常是可行的,适用于需要适度的共享数据的应用程序和服务,以及难以分区的应用程序或工作负载。

实现群集共享磁盘方法的数据库系统的示例包括z / OS(带有数据共享)的DB2,LUW的DB2(具有PureScale)和Oracle RAC。


共享 - 没有

没有共享的架构

图2。   共享无线的架构。

在一个 共享 - 没有 环境,每个系统都有自己的私人内存和一个或多个磁盘。参考 Figure 2。聚类处理器通过通过互连计算机的网络传递消息进行通信。此外,客户端的请求会自动路由到拥有资源的系统。只有一个群集系统可以“拥有”并一次访问特定资源。当然,在发生故障时,资源所有权可以动态转移到群集中的另一个系统。
 

共享无线架构的主要优点是提高可扩展性。

共享无线架构的主要优势得到改善 可扩展性 。从理论上讲,共享除了多处理器可以扩展到数千个处理器,因为它们不会彼此干扰 - 没有共享。但是,在实践中,在较少较少的节点上实现了数据库系统的共享除垢。共享除非集群的可扩展性使其成为数据仓库典型的读取密集分析处理的理想选择。

共享的缺点是必须设计分区方案来分配数据数据库节点的数据。数据通常由行水平分区。这需要识别要用于将表拆分为多个表的列(或一组列),每个表都具有初始表中的不同行的不同子集。该方案可能很简单,就像数据与业务的一段匹配时一样。例如,分区1存储关于西部地区和分区2的数据存储了东部区域数据。或者该方案可能更复杂(例如基于哈希键),尤其是当没有以业务相关方式分离数据的简单方法时。自动分区被称为 分片 (它是在讨论的  数据库分片 本文的一部分)。

请记住,数据不共享,因此它必须驻留在(至少)单个节点,并且DBMS必须知道如何根据分区方案分区和访问数据。垂直分区,或将表分成列的子集也是一种可能性。

共享除非是基于将数据切换到较小的子集中,因为未分区的较大单图像数据库可以更加困难且昂贵地管理和查询。此外,在一个地方创建和维护一个非常大的数据库可能需要高端,昂贵的计算机,而可以使用多个便宜的分布式商品服务器容纳分区。

但分区几乎总是涉及权衡。一个分区方案可能适用于某些应用程序,但另一个方案对其他人更好。对优化所有应用程序使用的数据没有普遍的方式。随着使用模式的变化和进化和数据量大,您可能需要重新解决分区方案以更好地满足数据库中的数据。重新分配是一种非琐碎的运动,不利于24/7处理,因为它需要DBA和程序员努力以及数据库停机时间,导致应用中断。

共享的缺点是必须设计分区方案来分配数据数据库节点的数据。

每当必须在多个分区访问或修改数据时都会出现另一个挑战。当仅对单个分区执行访问和修改时,共享 - 没有运行,但只要需要多个分区的数据,都会出现复杂性并且酸合规可以分解。

根据所使用的DBMS的功能,分区方案可以冗余地分配数据,以多于一个节点(用于故障转移和可用性要求)。

实现共享除了群集方法的数据库系统的示例包括Teradata,MySQL和许多NoSQL和NewsQL产品。共享除非集群对于NoSQL数据库可能特别有效。这是由于几个原因。例如,许多NoSQL数据库系统不支持酸,而是依赖于最终的一致性,这更易于实现,而是可以导致读取过时数据的应用程序和用户。此外,NoSQL Systems通常在商品硬件上工作,没有内置的高可用性,如SAN,从而使仲裁复制可用于将数据复制到所有相关节点。


数据库分片

分片通常与自动分区和管理的共享方法一起使用。 “碎片”这个词意味着整体的一小部分。因此,数据库分片是一种对分区数据库的技术,它将大量数据分为较小,更容易被称为碎片的托管。

除了缩放,分散数据而不是缩放,以允许缩放。分片类似于水平分区,因为它逐行拆分表,但数据在模式的多个实例上划分。分片的主要好处是,对大型分区表的处理工作负载可以跨多个服务器传播。

分叉有缺点。例如,在分片后,而不是具有单个数据库来管理,现在有多个数据库,每个数据库都有自己的服务器,CPU和内存要求。此外,分片可能会对容差产生负面影响。当一个碎片下降时,该碎片上的数据无法访问。这就是为什么分级的常常伴随着复制,以便在发生故障时准备好用于使用的重复数据集 ( 复制 ).

需要确定如何碎片的预定方法;也就是说,在其中应基于数据和分配给特定碎片或分区的数据和分区的算法放置每个特定行的碎片。

分叉数据后,每个碎片都在完全独立的逻辑架构实例中生存。这可以是物理数据库服务器,多个数据中心,甚至跨多个大洲。没有持续需要将共享访问(从碎片之间的分布)留到其他碎片中的其他未分区表中。

实现自动分片的数据库系统的示例包括Apache HBase,CouchBase和Informix。
 

复制

在许多情况下,支持带分片的共享无线的数据库系统也支持冗余的数据复制到Bolster容错。复制涉及在不同节点上设置一个单独的数据副本。

当然,如果这是你所做的一切,那么随着原始数据被处理时,数据将很快变得陈旧。要删除此问题,数据库系统提供了复制引擎。当数据在数据的主要副本上更改数据时,复制引擎可确保将更改复制到其他副本。复制的确切方法将与系统不同,并且可能需要读取数据库日志和重试修改,直到它们在所有副本中取得成功。

跨多个服务器的复制可以易于设置,但将需要正在进行的管理和管理。当然,复制需要额外的存储(每个副本),以及其他I / O和CPU使用率,以支持数据复制过程。

下周在TechBlog上,Craig将探索一个新的架构,这些架构结合了上面两个架构的许多好处。

---

 克雷格穆林斯 克雷格是总统&主要顾问 Mullins Consulting,Inc。, a consultant for  datavail. ,以及出版商/编辑  数据库网站 。他的经验跨越多个行业(银行,公用事业,软件开发,研究和咨询)。

Craig为许多计算机/ IT出版物写作,为受欢迎的文章提供了流行的IT和数据库期刊和网站,包括 数据库趋势和应用, TDAN. Techtarget.   和别的。