Database 主从数据库体系结构?

Database 主从数据库体系结构?,database,Database,我听说过两种数据库体系结构 大师 主从式 master不是更适合今天的web吗?因为它就像Git一样,每个单元都有完整的数据集,如果其中一个单元出现故障,那也没什么大不了的 主从让我想起了SVN(我不喜欢),它有一个中央单元来处理事情 问题: 每种方法的优缺点是什么 如果你想在你的手机上有一个像iPhone一样的本地数据库,哪一个更合适 >P>这些因素中的一个选择是要彻底考虑的吗? 我们正在权衡可用性、一致性和复杂性。首先回答最后一个问题:这有关系吗?是的,非常喜欢!关于如何管理数据的选择是

我听说过两种数据库体系结构

  • 大师

  • 主从式

master不是更适合今天的web吗?因为它就像Git一样,每个单元都有完整的数据集,如果其中一个单元出现故障,那也没什么大不了的

主从让我想起了SVN(我不喜欢),它有一个中央单元来处理事情

问题:

  • 每种方法的优缺点是什么

  • 如果你想在你的手机上有一个像iPhone一样的本地数据库,哪一个更合适

  • >P>这些因素中的一个选择是要彻底考虑的吗?


    我们正在权衡可用性、一致性和复杂性。首先回答最后一个问题:这有关系吗?是的,非常喜欢!关于如何管理数据的选择是绝对重要的,没有任何“最佳实践”可以回避这些决定。你需要了解你的特殊要求

    有一种基本的紧张关系:

    一个副本:一致性是很容易的,但若它发生了,每个人都离开了水,若人们是远程的,那个么可能会付出可怕的通信成本。将可能需要断开连接操作的便携式设备带到图片中,一份拷贝不会剪切图片

    主从:一致性并不太难,因为每段数据都有一个拥有主数据的数据。但是,如果你看不见那位大师,你会怎么做呢?需要一些延期的工作

    大师:如果你能让它工作,那么它似乎提供了一切,没有单一的失败点,每个人都可以一直工作。这样做的问题是很难保持绝对的一致性。有关更多信息,请参阅

    维基百科似乎有一个很好的优点和缺点的总结

    优势

    • 如果一台主机出现故障,其他主机将继续更新主机 数据库

    • 主设备可以位于多个物理站点,即。 分布在网络上

    缺点

    • 大多数多主机复制系统只是松散一致的, i、 e.懒惰和异步,违反ACID属性

    • 即时复制系统非常复杂,会引入一些 通信延迟

    • 解决冲突等问题可能会变得棘手 所涉及的节点数量增加,所需的延迟减少


    同时研究了各种数据库体系结构。我收集了一些信息,这些信息可能与将来其他人的研究有关。我偶然发现

  • 主从复制
  • 主复制
  • MySQL集群
  • 我已经决定在我的用例中使用MySQL集群。不过,请看下面我所汇编的各种利弊

    1。主从复制

    专业人士

    • 分析应用程序可以在不影响主应用程序的情况下读取从应用程序
    • 整个数据库的备份对主机相对没有影响
    • 从属设备可以脱机并同步回主设备,而无需停机
    缺点

    • 在失败的情况下,必须将一个从机提升为主机以取代其位置。无自动故障切换
    • 主设备发生故障时的停机时间和可能的数据丢失
    • 在主从式设计中,所有写入也必须对主设备进行
    • 由于必须读取二进制日志并将数据复制到每个从机,因此每个附加的从机都会向主机添加一些负载

    • 应用程序可能必须重新启动
    2。主机复制

    专业人士

    • 应用程序可以从两个主程序读取
    • 在两个主节点之间分配写负载
    • 简单、自动和快速的故障切换
    缺点

    • 松散一致
    • 配置和部署不像主从式那么简单
    3。MySQL集群

    基于MySQL集群设计的《新城里的孩子》。MySQL cluster的开发考虑到了高可用性和可扩展性,是用于不需要停机、高可用性和水平可扩展性的环境的理想解决方案

    有关更多信息,请参阅

    专业人士

    • (高可用性)无单点故障
    • 非常高的吞吐量
    • 99.99%正常运行时间
    • 自动切分
    • 实时响应
    • 联机操作(模式更改等)
    • 分布式写入
    缺点


    您可以访问我的完整分解图,包括进一步详细介绍上述3种体系结构的体系结构图。

    CouchDB使用MVCC。这种方法是否能解决多个主机面临的一致性问题?当我将其中一个主机重新联机时,版本控制系统会处理一致性,并且此主机将获得正确的更新数据。但是,当两个用户做了一些矛盾的事时会发生什么情况?例如,两个用户试图购买最后一个库存商品?想象一个场景,我们有两个主机,每个用户碰到不同的主机,然后我们会遇到一些通信故障-最终会出现完整性受损或可用性降低-一个用户被告知“对不起,伙计,我真的不知道发生了什么事,直到我和另一个主机交谈”,或者,当通信恢复时,我们会遇到一场严重的冲突,而这些冲突会变得非常复杂。金融交易或股票市场用什么?他们会一直碰到这个问题?如果你需要一个单一的、更新的“真理”(如在金融系统中),你就需要主/从,或者仅仅是主。在这里,您可以稍后修补真相(想想在修订控制系统中合并冲突)