可扩展性数据库的架构设计

  扩展性与硬件

  随着系统的膨胀,硬件的可扩展性体现在增加资源,提高性能的能力上,如添加更多的处理器、内存等。

  扩展性与软件

  扩展性要求软件能够有效地利用硬件的能力,软件的设计应该支持并行计算。对于数据库引擎,这意味着服务器组件必须支持多线程计算,允许操作系统在所有处理器核心上执行并行任务调度。不仅如此,数据库引擎必须提供有效的方法,以在多核上分解工作负荷。举个例子,如果数据库只使用四个线程,那么它在四核处理器和八核处理器上允许,并不能体现出性能差异。

  分布式设计

  数据库引擎分割工作流,以充分利用硬件的能力并非易事,不是所有的数据库管理系统都能很好地支持并行计算。不仅仅是数据库引擎,数据库和其它系统资源都必须进行分割,以解决相互依赖性关系。因此,整个系统需要一个分布式设计。

  例如,大多数数据库以B树架构存储索引。B树使得索引可以快速地定位数据,高效地插入、删除数据,但这需要保持“平衡”,即B树的树架构必须具有相同层级的叶节点。一个简单的插入或删除操作都可能打破这种平衡。这导致在多核、多线程之间B树的管理与共享非常困难。多个线程会频繁抢夺B树的根节点,这会导致性能瓶颈。

  最小化共享资源

  最小化共享资源的数量是扩展性的重要话题。最小化共享资源可以使不同的线程运行在不同的核心之上,而无需等待其它线程释放共享资源。如果线程缺乏独立性,即便增加处理器,性能也会大打折扣。

  这个概念可以通过数据库管理系统RDM予以体现。RDM对分布式数据库有非常智能的支持,允许应用在不同的硬件之上进行数据的分布式计算,并能在不同的线程、进程之间尽可能地减少竞争。

  多版本并发控制与同时访问

  对同一数据的并发读写访问非常重要,多版本并发控制(MVCC)允许对同一数据进行并发读写访问,而不必阻塞线程或进程。MVCC可以让读进程在写进程访问数据之前访问数据的镜像,通过这种方式,保证了读写进程的并行操作。

  数据复制:高效的分布式技术

  数据复制通过将主数据库复制为多个只读副本,成为了一种提高扩展性的有效途径。这样,远程服务器的处理器也可以读取和本地数据一致的副本,非常有助于降低访问主数据库的并发进程数目。

  总结

  简而言之,一个高度扩展性的分布式数据库架构应具备如下特性:

  1、轻量级服务器的进程不应占用过多的CPU时间,而应通过我们的多个处理器并行运行多个实例。

  2、客户端应用可连接多台服务器并从中提取数据。

  3、通过数据复制技术,客户端应用可以从主数据库或从数据库中检索数据。

====================================分割线================================

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-10-02 17:12:35

可扩展性数据库的架构设计的相关文章

如何实现高容量大并发数据库服务 | 数据库分布式架构设计

袋鼠学院和优云.阿里云联合举办的沙龙结束之后,总是有小伙伴们来问PPT内容,想要进一步了解Topic内容.(哦,对了对了,竟然还有小伙伴专门冲着袋鼠云去听沙龙,感动cry~~) 千呼万唤,忙成狗的袋鼠小妹终于把沙龙总结整理了出来(⊙o⊙) 本次沙龙的主题是"云时代下的运维管理实践",受邀请的演讲嘉宾,花名宏翊(经常关注袋鼠云的同学,肯定已经对这个名字很熟悉了),是袋鼠云首席数据库架构师,袋鼠学院数据库讲师. 呼应沙龙运维实践的主题,结合自己的专长领域,宏翊主要是从数据库领域来谈云时代下

阿里云数据库,破解大型网站架构设计中的数据存储难题

摘要:3月10日,2017阿里云网站行业热点问题和解决方案线下研讨会在上海举行.在本次研讨会上,阿里云数据库团队产品专家王义成(花名挚尤)针对于大型网站的数据库架构设计以及阿里云ApsaraDB所提供的服务管理和解决方案进行了深入介绍. 分享者简介:王义成(花名挚尤),阿里云数据库团队产品专家,负责阿里云NoSQL数据库的产品规划.加入阿里巴巴近5年的时间,参与过多种云数据库的产品设计工作.目前主要负责阿里云的MongoDB.Redis以及MemCache产品,旨在为广大客户提供安全可靠的数据库

数据库分布式架构巧设计,水平拆分不再难

在阿里云生态日,袋鼠云首席数据库架构师赵晓宏分享了<高容量大并发数据库服务--数据库分布式架构设计>.他从分布式需求.拆分原则.拆分难点及解决方案.数据库规范设计.运维相关五个方面进行了分享.在分享中,他主要介绍了水平拆分的原则以及解决方案,分享了DRDS的架构与实践.   以下内容根据直播视频整理而成.   分布式需求 为什么要做分布式?首先是因为高并发,分布式应用带来更大量的数据库请求:高容量,业务增长,产生大量在线数据,关系型数据库要支持业务就要支持大数据量的存储:资源向上扩展存在天花板

iOS开发入门:移动平台架构设计

低耦合企业级系统架构设计 我们往往称JavaEE或.Net 开发的产品为"系统",而移动平台(主要是:Android.iOS和Window Phone)开发的产品为"应用"."系统"比较复杂,需要架构设计,而"应用"相对比较简单,这是不是意味着我们不需要考虑架构问题呢? 我 们首先了解一下企业级系统架构设计.软件设计的原则是提高软件系统的"可复用性"和"可扩展性",系统架构设计采用层次划

iOS开发那些事-移动平台架构设计

低耦合企业级系统架构设计 我们往往称JavaEE或.Net 开发的产品为"系统",而移动平台(主要是:Android.iOS和Window Phone)开发的产品为"应用"."系统"比较复杂,需要架构设计,而"应用"相对比较简单,这是不是意味着我们不需要考虑架构问题呢?   我们首先了解一下企业级系统架构设计.软件设计的原则是提高软件系统的"可复用性"和"可扩展性",系统架构设计采用层次

阿里云数据库专家田英鹤:云数据库系统容灾架构设计和实战

8月30-31日20:00-21:30,一场别开生面的技术大会-- "蚂蚁金服&阿里云在线金融技术峰会"将在线举办.本次将聚焦数据库.应用架构.移动开发.机器学习等热门领域,帮助金融业技术开发者深入解析互联网应用的前沿应用与技术实践. 蚂蚁金服&阿里云在线金融技术峰会专题:https://yq.aliyun.com/activity/109 峰会统一报名链接:http://yq.aliyun.com/webinar/join/38 来自阿里云的技术专家田英鹤(花名:喜乐

MongoDB异地容灾多活实践(5月21日DBAplus社群上海站云数据库架构设计与实践沙龙分享PPT)

5月21号,我在上海参加DBAplus社群举办的云数据库架构设计与实践沙龙,做了<MongoDB异地容灾多活实践>的分享,本文是分享的PPT.

云数据库产品及架构设计背后的考量

摘要:8月24日,阿里云数据库技术峰会到来,本次技术峰会邀请到了阿里集团和阿里云数据库老司机们,为大家分享了一线数据库实践经验和技术干货.在本次峰会上,阿里云数据库高级产品专家萧少聪(铁庵)介绍了全体系阿里云数据库产品并对于阿里云数据库产品的实现架构进行了分享,帮助大家了解了阿里云全数据库产品体系能解决哪些实用场景的问题,同时帮助大家了解其解决的原理. 以下内容根据演讲嘉宾现场视频以及PPT整理而成. 本次分享将主要介绍阿里云是如何设计云数据库产品的架构的,以及在云数据库产品的架构设计背后的故事

《企业迁云实战》——3.3 应用架构设计

3.3 应用架构设计 上面已经介绍了用户业务上云时如何进行网络设计.运维管理环境规划,本章将重点介绍如何基于阿里云产品和服务设计应用系统架构.3.3.1 负载均衡 阿里云负载均衡(Server Load Balancer,SLB)是将访问流量根据转发策略分发到后端多台ECS的流量分发控制服务.用户可以通过负载均衡的流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性. 阿里云负载均衡主要功能: 负载均衡服务通过设置虚拟服务地址(IP),将多台云服务器ECS实例虚拟成一个高性能