分布式数据库

1. 分布式数据库领域CAP理论

Consistency(一致性), 数据一致更新,所有数据变动都是同步的
Availability(可用性), 好的响应性能
Partition tolerance(分区容错性) 可靠性,A single piece of data is stored in 3 nodes, 1 node failed, the other 2 nodes can still work. This is implemented via Replication or Duplication. 也就是没有单点失败

定理:任何分布式系统只可同时满足二点,没法三者兼顾。
忠告:架构师不要将精力浪费在如何设计能满足三者的完美分布式系统,而是应该进行取舍。

2. 为什么Partition Tolerance is mandatory?

串行系统 VS 并行系统(Partition Tolerance)的可用性对比。

  • 对于应用服务器,并行意味着多台相同的应用服务器cluster,通常在cluster前端配置有load balance,这个cluster在eBay中叫pool
  • 对于数据库服务器,并行意味着热备份的多台数据库服务器(Replication),一般至少有两台(master,failover server)

一个大系统一般都有超过 30 个环节(串行):如果每个环节都做到 99% 的准确率,最终系统的准确率是 74%; 如果每个环节都做到98%的准确率,最终系统的准确率 54%。

如果是并行系统,准确率如下面formula:

P(any failure) = 1 – P(individual
node not failing)number of nodes

如系统中每个模块的准确率是70%,那么3个模块并行,整体准确率=1-0.3^3=97.3%,如果是4个并行,准确率=1-0.3^4=99.19%,我在想这就是负载均衡靠谱的数学原理

5个9或6个9的QoS一定是指数思维的结果,线性思维等于送死
Reference: http://blog.sina.com.cn/s/blog_5459f60d01016ntb.html


3. 为什么在PT是必须的前提下,Consistency and Availability 二者只能选其一?

You cannot, however, choose both consistency and availability in a distributed system.

As a thought experiment, imagine a distributed system which keeps track of a single piece of data using three nodes—AB,
and C—and
which claims to be both consistent and available in the face of network partitions. Misfortune strikes, and that system is partitioned into two components: {A,B} and {C}.
In this state, a write request arrives at node C to
update the single piece of data.

That node only has two options:

  1. Accept the write, knowing that neither A nor B will
    know about this new data until the partition heals.
  2. Refuse the write, knowing that the client might not be able to contact A or B until
    the partition heals.

You either choose availability (Door #1) or you choose consistency (Door #2). You cannot choose both.

Refrence: http://codahale.com/you-cant-sacrifice-partition-tolerance/

4.分布式数据库的优缺点

优点:

  • 提高系统的可靠性、可用性当某一场地出现故障时,系统可以对另一场地上的相同副本进行操作,不会因一处故障而造成整个系统的瘫痪。
  • 提高系统性能系统可以根据距离选择离用户最近的数据副本进行操作,减少通信代价,改善整个系统的性能。
  • 易于扩展,如果服务器软件支持透明的水平扩展,那么就可以增加多个服务器来进一步分布数据和分担处理任务。(关于水平扩展可以参考http://xuezhongfeicn.blog.163.com/blog/static/22460141201201153456711/
    eBay的数据库存储就是水平扩展的)

缺点:

  • 事务管理的性能比在集中式数据库花费更高,很难保证高度一致性
  • 系统开销大,主要花在通信部分。
  • 复杂的存取结构,原来在集中式系统中有效存取数据的技术
时间: 2024-09-19 09:39:46

分布式数据库的相关文章

传统应用层逻辑分库DB迁移阿里云DRDS+RDS分布式数据库

随着互联网快速发展,我们的结构化关系数据库在高并发.海量数据的情况下面临单机扩展性问题,首先是单机数据库容量瓶颈,单机数据库在业务高速增长的情况下依赖硬件升级也会到达天花板,并且使用成本变得非常高,而且扩展性的复杂性也是比较高,传统数据库扩容往往意味着服务中断,很难做到业务无感知或者少感知.     通过数据水平切换来现实分库可以帮助提升数据库整体性能.横向扩展性,切分后有效的降低了单台机器的访问负载,同时最大限度的降低了数据库服务节点宕机后的损失.      传统应用业务层逻辑或组件分库实现方

分布式数据库——从线性扩展谈分布式JOIN

在首届阿里巴巴中间件峰会上,来自阿里巴巴DRDS团队的梦实分享了<分布式数据库--从线性扩展谈分布式JOIN>.他主要从OLTP数据库的线性扩展.水平扩容.IN查询.分布式JOIN四个方面进行了分享.在分享中,他主要通过买家与订单场景.家庭与孩子场景介绍了IN查询,通过同维度的JOIN.广播表的JOIN.Nested Loop Join详细介绍了分布式JOIN的坑与填坑.   以下内容根据直播视频整理而成.   在数据库的使用过程中,我们难免会问到这样的问题,为什么分库分表?答案是为了达到线性

利用C#实现分布式数据库查询

分布式|数据|数据库 随着传统的数据库.计算机网络和数字通信技术的飞速发展,以数据分布存储和分布处理为主要特征的分布式数据库系统的研究和开发越来越受到人们的关注.但由于其开发较为复杂,在一定程度上制约了它的发展.基于此,本文提出了在.Net环境下使用一种新的开发语言C#结合ADO.Net数据访问模型来开发分布式数据库系统,大大简化了开发过程. 1 分布式数据库系统 就其本质而言,分布式数据库系统的数据在逻辑上是统一的,而在物理上却是分散的.与集中式数据库相比它有如下主要优点: · 解决组织机构分

.NET Remoting 实现分布式数据库查询

分布式|数据|数据库 前段时间,高级数据库原理课程结课,老师布置了一个大作业--实现一个分布式数据库查询系统,因为鄙人一直学习.net,故想使用这个平台实现,以进一步提高自身的水平.开始热情致高,吾在网上搜了N天,也没有什么好的资料,只找到一篇题目为<利用C#实现分布式数据库查询>的文章,此篇文章在多个site上都有雷同,作者不详--      摸索了几天,找到了实现的方案--.NET Remoting 技术可以实现远程对象,而ADO.NET则提供了强大的数据存取接口.我对ADO.NET比较熟

如何构建Informix分布式数据库访问

分布式数据库是在集中式数据库系统成熟技术的基础上发展起来的,它使物理分布的数据构成了一个逻辑整体.对用户来说,一个分布式数据库系统逻辑上就如同一个集中式数据库,用户可以在任何一个场地执行全局应用.Informix是一个具有跨平台.全功能的关系型数据库,它可在Online 7.1以上版本中将I-star等网络产品进行集成,并使其不但支持本地数据库,而且支持分布式数据库. 当前,银行.保险等金融行业均存在多业务处理系统,比如银行的综合业务.代理业务,保险的出单业务等,各业务系统常驻留于不同的主机上.

分布式数据库的主要特点

分布式数据库的主要特点 (1).数据独立性与位置透明性.数据独立性是数据库方法追求的主要目标之一,分布透明性指用户不必关心数据的逻辑分区,不必关心数据物理位置分布的细节,也不必关心重复副本(冗余数据)的一致性问题,同时也不必关心局部场地上数据库支持哪种数据模型.分布透明性的优点是很明显的.有了分布透明性,用户的应用程序书写起来就如同数据没有分布一样.当数据从一个场地移到另一个场地时不必改写应用程序.当增加某些数据的重复副本时也不必改写应用程序.数据分布的信息由系统存储在数据字典中.用户对非本地数

云时代的分布式数据库:阿里分布式数据库服务DRDS

摘要:伴随着系统性能.成本及扩展性的新时代需要,以HBase.MongoDB为代表的NoSQL数据库和以阿里DRDS.VoltDB.ScaleBase为代表的分布式NewSQL数据库如雨后春笋般不断涌现出来.本文详细介绍了阿里分布式数据库服务DRDS. 随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估.我们的系统所需要支持的用户数,很可能在短短的一个月内突然爆发式地增长几千倍,数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB.如果在这爆

云时代的分布式数据库:阿里分布式数据库服务 DRDS

随着互联网时代的到来,计算机要管理的数据量呈指数级别地飞速上涨,而我们却完全无法对用户数做出准确预估.我们的系统所需要支持的用户数,很可能在短短 的一个月内突然爆发式地增长几千倍,数据也很可能快速地从原来的几百GB飞速上涨到了几百个TB.如果在这爆发的关键时刻,系统不稳定或无法访问,那么对 于业务将会是毁灭性的打击. 伴随着这种对于系统性能.成本以及扩展性的新需要,以HBase.MongoDB为代表的NoSQL数据库和以阿里DRDS.VoltDB.ScaleBase为代表的分布式NewSQL数据

基于Sql Server 2008的分布式数据库的实践(四)

原文 基于Sql Server 2008的分布式数据库的实践(四) 数据库设计 1.E-R图 2.数据库创建 Win 7 1 create database V3 Win 2003 1 create database V3 3.数据表设计 Win7 创建数据表student_7 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 create table student_7 (     sid int not null,     sex nvarchar(1) not nul

基于Sql Server 2008的分布式数据库的实践(二)

原文 基于Sql Server 2008的分布式数据库的实践(二) 从Win7连接Win2003的Sql Server 2008 1.新建链接服务器链接到Win2003的Sql Server 2008 2.查看Win2003上面的IP地址,配置"新建链接服务器"中的"常项"   3.配置"新建链接服务器"中的"安全项",本地登录为"sa",远程用户也为"sa" 4.链接成功 Win7启动