6月4日数据库学习笔记

一、分布式数据库架构模式
(一)主从复制架构
架构特点
读写分离:主节点负责处理写操作,从节点负责处理读操作,通过复制机制将主节点的数据同步到从节点。
高可用性:当主节点发生故障时,可以从节点进行故障转移,继续提供服务。
数据一致性:通过同步机制确保从节点的数据与主节点保持一致,但可能存在 slight delay。
应用场景
适用于需要高可用性和读写分离的场景,如 Web 应用、内容管理系统等。
示例(MySQL 主从复制)
主节点配置 :在主节点的配置文件(my.cnf)中添加以下内容:
properties

server-id = 1
log_bin = mysql_bin
binlog_do_db = mydatabase
然后重启 MySQL 服务,并创建一个用于复制的用户:
sql

CREATE USER 'replication_user'@'%' IDENTIFIED BY 'password';
GRANT REPLICATION SLAVE ON . TO 'replication_user'@'%';
查看主节点的状态:
sql

SHOW MASTER STATUS;
从节点配置 :在从节点的配置文件(my.cnf)中添加以下内容:
properties

server-id = 2
然后重启 MySQL 服务,配置从节点连接主节点:
sql

CHANGE MASTER TO
MASTER_HOST='master_host',
MASTER_USER='replication_user',
MASTER_PASSWORD='password',
MASTER_LOG_FILE='mysql_bin.000001',
MASTER_LOG_POS=456;
START SLAVE;
检查从节点的状态:
sql

SHOW SLAVE STATUS\G
(二)分片集群架构
架构特点
数据分片:将数据分散存储在多个节点上,每个节点存储数据的不同部分。
高扩展性:通过增加节点可以轻松扩展系统的存储容量和处理能力。
负载均衡:查询和更新操作可以并行执行,提高系统性能。
应用场景
适用于大数据量、高并发的场景,如电商、社交媒体、物联网等。
示例(MongoDB 分片集群)
配置分片集群 :首先启动配置服务器(config server)、分片节点(shard)和查询路由器(mongos)。
添加分片 :通过 mongos 添加分片:
JavaScript

sh.addShard("mongodb://shard1:27017");
sh.addShard("mongodb://shard2:27017");
启用分片 :启用数据库和集合的分片:
JavaScript

sh.enableSharding("mydatabase");
sh.shardCollection("mydatabase.mycollection", { "shard_key": 1 });
二、分布式事务处理
(一)两阶段提交(2PC)
工作原理
准备阶段:事务协调器向所有参与者发送准备请求,参与者进行必要的操作(如锁定资源、写前影像等),并回复准备状态。
提交阶段:如果所有参与者都准备成功,协调器向所有参与者发送提交请求,参与者完成事务提交;如果任何一个参与者准备失败,协调器向所有参与者发送回滚请求,参与者撤销事务。
优缺点
优点:确保事务的原子性,所有参与者要么都提交,要么都回滚。
缺点:性能瓶颈,协调器成为单点故障;在参与者数量较多时,效率较低。
(二)三阶段提交(3PC)
工作原理
CanCommit 阶段:协调器向所有参与者发送 CanCommit 请求,参与者回复是否可以提交。
PreCommit 阶段:如果所有参与者都回复可以提交,协调器向所有参与者发送 PreCommit 请求,参与者进行预提交操作。
DoCommit 阶段:协调器向所有参与者发送 DoCommit 请求,参与者完成事务提交。
优缺点
优点:相比 2PC,3PC 减少了阻塞时间,提高了性能。
缺点:实现复杂度高,需要额外的协调机制。
(三)补偿事务(Saga 模式)
工作原理
将一个长事务拆分为多个短事务,每个短事务对应一个补偿操作。如果某个短事务失败,执行其补偿操作来撤销之前的操作。
优缺点
优点:避免了长时间的事务锁定,提高了系统的可用性。
缺点:需要设计补偿操作,实现复杂度较高。
三、云数据库服务
(一)云数据库的特点
按需付费:用户可以根据实际使用量支付费用,无需一次性购买昂贵的硬件设备。
弹性扩展:可以根据业务需求快速扩展或缩减数据库资源,适应业务的波动。
高可用性:云服务提供商通常提供多副本存储、自动故障转移等机制,确保数据库的高可用性。
自动备份与恢复:云数据库服务通常提供自动备份和恢复功能,减少数据丢失的风险。
(二)常见云数据库服务
Amazon RDS
特点:支持多种数据库引擎(如 MySQL、PostgreSQL、Oracle 等),提供自动备份、多可用区部署等功能。
应用场景:适用于各种规模的应用,从小型 Web 应用到大型企业系统。
Google Cloud SQL
特点:与 Google Cloud Platform 深度集成,提供高可用性、自动备份和灾难恢复功能。
应用场景:适用于在 Google Cloud 上构建的应用,提供无缝的集成体验。
Microsoft Azure SQL Database
特点:提供智能数据库功能,如自动调优、威胁检测等,支持与 Azure 其他服务的集成。
应用场景:适用于在 Azure 上构建的 Windows 和 .NET 应用。
四、数据仓库与数据湖
(一)数据仓库
定义
数据仓库是一个集中的数据存储库,用于存储来自多个数据源的结构化数据,支持复杂的数据分析和报表生成。
特点
面向主题:数据按主题进行组织,便于用户理解和查询。
集成性:整合来自多个数据源的数据,消除数据孤岛。
时变性:数据通常具有时间维度,支持历史数据分析。
示例(Amazon Redshift)
创建数据仓库 :通过 Amazon Redshift 控制台或 API 创建数据仓库集群,指定节点数量和类型。
加载数据 :使用 COPY 命令将数据从 S3 或其他数据源加载到数据仓库。
sql

COPY mytable
FROM 's3://mybucket/mydata'
IAM_ROLE 'arn:aws:iam::account-id:role/myRedshiftRole'
FORMAT AS CSV;
(二)数据湖
定义
数据湖是一个存储库,用于存储大量原始数据,支持多种数据类型(结构化、半结构化、非结构化)。
特点
存储灵活性:支持多种数据格式,如 CSV、JSON、Parquet 等。
可扩展性:可以存储海量数据,支持弹性扩展。
成本效益:存储成本相对较低,适合存储大量原始数据。
示例(Amazon S3 数据湖)
存储数据 :将数据存储在 Amazon S3 中,组织成不同的存储桶和文件夹。
数据处理 :使用 AWS Glue 进行数据 cataloging 和 ETL(Extract, Transform, Load)处理。
数据分析 :使用 Amazon Athena 或 Amazon Redshift Spectrum 查询和分析数据湖中的数据。
五、数据库安全与合规性
(一)数据加密与访问控制
数据加密
存储加密:对存储在数据库中的敏感数据进行加密,如用户密码、信用卡号等。可以使用对称加密算法(如 AES)或非对称加密算法(如 RSA)。
传输加密:使用 SSL/TLS 协议加密数据库客户端与服务器之间的通信,防止数据在传输过程中被窃取。
访问控制
多因素认证:要求用户通过多种认证方式(如密码 + 短信验证码)进行身份验证,提高安全性。
细粒度权限控制:为不同用户分配不同的权限,限制用户对数据库的访问范围和操作类型。
(二)合规性要求
GDPR(通用数据保护条例)
适用范围:适用于欧盟境内所有个人数据的处理,无论数据处理者位于何处。
要求:确保数据主体的权利(如访问权、更正权、删除权等),进行数据保护影响评估,指定数据保护官等。
HIPAA(健康保险流通与责任法案)
适用范围:适用于美国医疗保健行业的个人健康信息(PHI)的处理。
要求:确保 PHI 的保密性、完整性和可用性,进行风险评估,制定安全措施等。
PCI DSS(支付卡行业数据安全标准)
适用范围:适用于处理、存储或传输信用卡信息的所有组织。

posted @ 2025-06-04 23:31  头发少的文不识  阅读(36)  评论(0)    收藏  举报