分布式数据库的性能和安全麻烦

简介: 【6月更文挑战第6天】该文探讨了分布式系统中节点交互的两种方式,并对比mysql和oracle两个数据库的CAP平衡模式。

1 简介

要做出的另一个设计决策涉及决定节点在其群集中的交互方式。两个选项是同构和异构节点,都用于现代系统。
mandala曼德罗符号.png

同构节点:集群中的每个节点都可以执行同一组任务(尽管可能不同的数据分区),很好地适合共享的无体系结构。

这使得预配和故障转移“更容易”。失败的任务将分配给可用节点。

异构节点:节点被分配了特定的任务,因此必须在节点之间进行通信执行给定的任务。

可以允许单个物理节点托管多个“虚拟”节点类型,用于专用任务。

可以独立地从一个节点扩展到另一个节点分布式系统必须跨多个资源(包括磁盘、节点、处理器)对数据库进行分区。

这个过程有时在NoSQL系统中称为分片。

2 MYSQL处理平衡

当 数据库管理系统 收到查询时,它首先分析查询计划需要访问的数据。

数据库管理系统 可能会发送对不同节点的查询计划,然后合并结果以生成单个答案。

分区方案的目标是最大化单节点事务或仅访问的事务一个分区中包含的数据。

这允许数据库管理系统不需要协调并发的行为在其他节点上运行的事务。

另一方面,分布式事务访问数据一次或更多分区。这需要昂贵、困难的协调,将在下一节中讨论。

对于逻辑分区节点,特定节点负责从共享访问特定元组磁盘。对于物理分区节点,每个无共享节点读取并更新其包含在其上拥有本地磁盘。

  • 实现

对表进行分区的最简单方法是朴素的数据分区。

每个节点存储一个表,假设足够给定节点的存储空间。这是每个要实现的查询只是路由到特定分区。
这可能很糟糕,因为它不可扩展。如果一个分区的资源是经常查询,未使用所有可用节点。

更常用的是水平分区,它将表的元组拆分为不相交的子集。

选择在大小、负载或使用情况方面平均划分数据库的列,称为分区键。

数据库管理系统 可以通过哈希分区对数据库物理(不共享)或逻辑(共享磁盘)进行分区或范围分区。

分布式数据库本质上就是将数据存储到不同位置,数据分布的本质是,将原数据集划分为多个数据子集,以存储到不同的地方,在一定程度上体现了数据的可用性和可靠性。

分布式存储系统的三个要素:顾客、导购和货架。

其中,导购实现了分布式数据存储系统中数据索引的功能,包括存储数据时确定存储位置,以及获取数据时确定数据所在位置。那么,在分布式系统中,具体是如何实现数据索引或数据分布的呢

  • 数据分布方法,哈希,一致性哈希。

在实际情况下,仅考虑数据分片,其实是无法真正应用到生产环境的。

因为,故障导致数据丢失和不可用是很常见的情况。

因此,在进行分布式数据存储设计时,通常会考虑对数据进行备份,以提高数据的可用性和可靠性,而实现数据备份的关键技术就是“数据复制技术”。

数据复制技术实际就是指,如何让主备数据库保持数据一致的技术。

多数的分布式存储系统可以通过配置来选择不同的数据复制技术。
比如上面讲过的 MySQL 数据库集群,就支持全同步复制、异步复制和半同步复制三种模式,

3 Oracle 数据库处理平衡:

  • 最大保护模式

对于写请求,要求主数据库必须完成至少一个备数据库的数据同步才可成功返回给客户端,采用的是半同步复制技术中的第一种方式。

  • 最大性能模式

对于写请求,只要主数据库执行成功即可返回给客户端,采用的是异步复制技术。这种方式极大地提高了系统的可用性,但一致性难以保证。

  • 最大可用性模式

    介于最大保护模式和最大性能模式两者之间。

    这种模式是指,系统在通常情况下采用最大保护模式,但当主备之间出现网络故障时,切换为最大性能模式,等到网络恢复后,备数据库再进行数据同步。

    这种方式在系统的一致性和可用性之间做了一个权衡。

4 CAP理论:不可同时满足

分布式系统处理的关键对象是数据,而数据其实是与用户息息相关的。

CAP 理论指导分布式系统的设计,以保证系统的可用性、数据一致性等特征。

比如电商系统中,保证用户可查询商品数据、保证不同地区访问不同服务器查询的数据是一致的等。

何为 CAP?

如果你之前没有听说过 CAP 理论的话,看到这三个字母第一反应或许是“帽子”吧。

那么,在分布式领域中,CAP 这顶“帽子”到底是什么呢?先来看看这三个字母分别指的是什么吧。

结合电商的例子,一起理解 CAP 的含义。

假设某电商,在三个城市建立了仓库,同时建立了对应的服务器{A, B, C}用于存储商品信息。

比如,某电吹风在北京仓库有 20 个,在杭州仓库有 10 个,在上海仓库有 30 个。那么,CAP 这三个字母在这个例子中分别代表什么呢?

首先,来看一下 C。C 代表 Consistency,一致性,是指所有节点在同一时刻的数据是相同的,即更新操作执行结束并响应用户完成后,所有节点存储的数据会保持相同。

在电商系统中,A、B、C 中存储的该电吹风的数量应该是 20+10+30=60。
假设,现在有一个北京用户买走一个电吹风,服务器 A 会更新数据为 60-1=59,与此同时要求 B 和 C 也更新为 59,以保证在同一时刻,无论访问 A、B、C 中的哪个服务器,得到的数据均是 59。

然后,看一下 A。A 代表 Availability,可用性,是指系统提供的服务一直处于可用状态,对于用户的请求可即时响应。

在电商系统中,用户在任一时刻向 A、B、C 中的任一服务器发出请求时,均可得到即时响应,比如查询商品信息等。

最后,看一下 P。P 代表 Partition Tolerance,分区容错性,是指在分布式系统遇到网络分区的情况下,仍然可以响应用户的请求。
网络分区是指因为网络故障导致网络不连通,不同节点分布在不同的子网络中,各个子网络内网络正常。

在电商系统中,假设 C 与 A 和 B 的网络都不通了,A 和 B 是相通的。
也就是说,形成了两个分区{A, B}和{C},在这种情况下,系统仍能响应用户请求。

5 小结

一致性、可用性和分区容错性,就是分布式系统的三个特征。那么 CAP 理论又是什么呢?

CAP理论就是,分布式系统中C,A,P三个特征无法同时满足,最多两个满足。

一致性,可用性,分区容错性,三个特征在分布式存储中一样有该属性。

目录
相关文章
|
3月前
|
缓存 关系型数据库 BI
使用MYSQL Report分析数据库性能(下)
使用MYSQL Report分析数据库性能
164 3
|
7月前
|
负载均衡 算法 关系型数据库
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
本文聚焦 MySQL 集群架构中的负载均衡算法,阐述其重要性。详细介绍轮询、加权轮询、最少连接、加权最少连接、随机、源地址哈希等常用算法,分析各自优缺点及适用场景。并提供 Java 语言代码实现示例,助力直观理解。文章结构清晰,语言通俗易懂,对理解和应用负载均衡算法具有实用价值和参考价值。
大数据大厂之MySQL数据库课程设计:揭秘MySQL集群架构负载均衡核心算法:从理论到Java代码实战,让你的数据库性能飙升!
|
3月前
|
Java 关系型数据库 数据库
怎么保障数据库在凭据变更过程中的安全与稳定?
本文介绍了在Spring应用中实现RDS数据源账密运行时轮转的方案,通过集成KMS与Nacos,实现数据库凭据的加密托管、动态更新与无缝切换,保障应用在凭据变更过程中的安全与稳定。适用于使用Java语言开发的Spring Boot或Spring Cloud应用,支持多种数据库类型,如MySQL、SQL Server、PostgreSQL等。
|
3月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(上)
最终建议:当前系统是完美的读密集型负载模型,优化重点应放在减少行读取量和提高数据定位效率。通过索引优化、分区策略和内存缓存,预期可降低30%的CPU负载,同时保持100%的缓冲池命中率。建议每百万次查询后刷新统计信息以持续优化
247 6
|
3月前
|
缓存 监控 关系型数据库
使用MYSQL Report分析数据库性能(中)
使用MYSQL Report分析数据库性能
170 1
|
3月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
3月前
|
安全 关系型数据库 MySQL
MySQL安全最佳实践:保护你的数据库
本文深入探讨了MySQL数据库的安全防护体系,涵盖认证安全、访问控制、网络安全、数据加密、审计监控、备份恢复、操作系统安全、应急响应等多个方面。通过具体配置示例,为企业提供了一套全面的安全实践方案,帮助强化数据库安全,防止数据泄露和未授权访问,保障企业数据资产安全。
|
5月前
|
SQL 人工智能 安全
深度复盘MCP安全风暴:一个工单如何演变成数据库“特洛伊木马”危机?
近期,安全公司 General Analysis 披露的MCP安全漏洞在技术圈引发了巨大震动。这个"特洛伊木马"式的安全漏洞暴露了一个现实:AI时代,传统的数据库访问方式已经无法满足安全需求。阿里云数据管理DMS新推出的DMS MCP Server,正是为AI时代的数据库安全访问而生,它不仅完美解决了传统MCP的安全隐患,更为企业提供了一个安全、智能、高效的数据访问新范式。
523 5
|
5月前
|
存储 监控 分布式数据库
ClickHouse分布式数据库动态伸缩(弹性扩缩容)的实现
实现ClickHouse数据库的动态伸缩需要持续的维护和精细的操作。从集群配置到数据迁移,再到监控和自动化,每一步都要仔细管理以确保服务的可靠性和性能。这些活动可以显著提高应用的响应性和成本效率,帮助业务根据实际需求灵活调整资源分配。
349 10
|
4月前
|
缓存 关系型数据库 MySQL
MySQL数据库性能调优:实用技术与策略
通过秉持以上的策略实施具体的优化措施,可以确保MySQL数据库的高效稳定运行。务必结合具体情况,动态调整优化策略,才能充分发挥数据库的性能潜力。
213 0