数据治理中遇到的困难点
- 业务价值认识不足:企业领导和业务部门对数据治理的重要性和他能解决的问题缺乏足够的认识,导致不够重视
- 高层领导不重视:数据治理项目的成功很大程度上依赖于高层领导的关注和支持,高层不重视,实施起来困难
- 数据质量和可用性:确保数据质量和可用性是数据治理的核心。数据需要是可信且有质量保证的
- 跨部门协作难度:数据治理需要跨部门协作,但it部门在协调业务部门时可能会遇到难题,没有足够的影响力推动全员参与,
- 法规和合规性要求:随着数据保护法规日益严格,企业在进行数据治理时必须遵守相关法律法规,这可能会增加数据治理复杂性和难度
- 持续维护和更新:数据治理是一个持续的过程,需要定期维护和更新,随着时间的推移和业务的发展,保持数据的持续治理会成为一项挑战
去重的方法
- distinct
- group by
- row_number()窗口函数:对结果进行分区,为每一行分配唯一的序号,筛选出序号为1的行,
- rowid:每一行都有一个唯一的rowid,通过比较rowid来识别重复的记录
UNION和UNION ALL
- 用于合并两个结果集
- union会自动去除结果中重复的行,通常会伴随着排序操作
索引的优缺点
优点:1、提高查询效率,2、提升性能,3、参考完整性
缺点:1、占用空间多 2、维护成本高 3、影响插入和更新 4、空间上限限制
关联查询优化
- 使用索引
- 减少返回数据量
- 使用子查询
左右表数量大小的影响
- 左大:左表为驱动表,会全表扫描,相反会减少全表扫描的情况
count的各种区别
- count(*):查询总行数
- count(1):查询总行数,原则上优先用这个
- count(column):查询具体列不含NULL值
OLTP和OLAP的区别
oltp用于处理日常的事务性操作,如银行交易、订单处理等,用于事务查询和处理,采用实体-联系(ER)模型
olap用于数据分析,支持复杂的分析操作,侧重于决策支持,是数据仓库的主要应用,采用星型或雪花模型
分布式数据库和传统数据库
传统数据库:通常指集中式数据库,将数据集中存储在单一服务器或服务器集群中,易于维护和管理,面对大规模数据和高并发场景时会遇到瓶颈,通过增加cpu个数和扩展内存进行纵向扩展。
分布式数据库:跨越不同物理设备的多个数据库的集合,数据可以分散存储,本地管理,高性能,高可靠,优秀的扩展性,由于可以横向和纵向扩展,它可以处理大量的数据和并发请求,不存在单点故障问题,整体容灾能力较强。
ETL(extract,transform,load)
- extract(提取):不同来源的数据抽取通常涉及连接到不同的数据库或API,使用SQL、Python等工具提取数据。
- transform(转换):数据清洗过程包括修正错误数据、标准化数据格式、处理缺失值等。缺失值处理可以采用填充特定值、使用平均值或者删除含有缺失值的记录等方法。
- load(加载):清洗转换后的数据加载到目标系统中,如数据仓库和数据湖。性能瓶颈可能由磁盘I/O、网络延迟或CPU使用率过高导致,解决方法可能包括优化查询、增加硬件资源或调整并行处理策略。
ACID
- 原子性(atomicity):确保事务作为一个完整的单元执行,操作失败会回滚
- 一致性(consistency):保证事务在完成之后,数据库的状态将满足所有一致性约束条件
- 隔离性(lsolation):保证并发执行的事务不会相互干扰
- 持久性(durability):一旦事务被提交,他对数据库所做的更改就是永久的,即使系统发生故障,更改也不会丢失
##数据湖和数据仓库
数据湖:存储大量的原始数据,入湖时不一定需要清洗转换,包括各种数据,结构化和分结构化数据
数据仓库:存储经过整理和清洗转换的结构化数据,通常用于支持企业的决策制定和报告需求
高斯数据库(GaussDB)的底层架构
基于Share-nothing的MPP架构,
- 分布式架构:可以同时支持olap和oltp业务场景,这种架构支持sql优化、执行、存储和分层解耦,这意味着各个层面可以独立地优化和改进
- 全局事务管理与一致性:
- 可插拔存储引擎:支持存储技术分离,同时也支持本地存储架构
- 企业级云分布式数据库:他在架构上着重构建了传统数据库的企业级能力和互联网分布式数据库的高扩展性和高可用性
Shell脚本
通过./xxx.sh来执行
#!/bin/bash
echo "hello world!"
#!/bin/bash
# 备份目录的脚本
# 设置源目录和目标目录
src_dir="/path/to/source/directory"
dest_dir="/path/to/destination/directory"
# 获取当前日期和时间
current_date=$(date +%Y-%m-%d_%H-%M-%S)
# 创建备份文件名
backup_file="backup_$current_date.tar.gz"
# 执行备份命令
#tar -czf "/path/to/destination/directory/backup_20240506.tar.gz /path/to/source/directory"
tar -czf "$dest_dir/$backup_file" "$src_dir"
# 检查备份是否成功
#$?,可以获取最近执行的命令的状态码。
if [ $? -eq 0 ]; then
echo "备份成功!"
else
echo "备份失败!"
fi
索引
- B+数索引:是一种平衡多路搜索树,叶子节点包含了全部关键信息,非叶子节点仅作为索引来使用
- 哈希索引:哈希索引基于哈希表实现,通过将键值映射到哈希表中的位置来快速的定位数据,哈希索引更适合等值查询,不支持范围查找和排序操作
- 全文索引:用于全文搜索,可以在大量数据中按照关键词进行搜索
映射和转换
- 映射:不同数据源中的数据元素与目标系统中数据元素的对应关系
- 转换:将数据从一种格式或结构变换成另一种格式或结构的过程,不仅包括数据格式的变换,还可能涉及数据的清洗、验证、加工
怎么看待数据治理
数据治理是确保数据质量、安全性和有效管理的一系列过程和责任。
第三范式和星型模型
- 第三范式是指数据库表设计时,每个字段直接与主键相关,不存在传递性依赖。
- 星型模型是针对分析性数据库设计的一种模型,它包括一个大型的事实表和多个维度表
数据质量和一致性
- 如何确保数据质量:确保数据质量通常需要定义清晰的数据质量指标,如准确性、完整性、一致性和时效性,并使用数据质量工具进行检查。
- 描述一次你发现并解决的数据质量问题:发现数据质量问题后,我会分析问题根源,然后通过修复数据源、更新ETL逻辑或使用数据修复工具来解决。
如何优化ETL过程
- 通过合理分区、使用增量加载、优化索引、并行处理等方式实现
数据治理
数据治理是管理组织内部数据可用性、可靠性和安全性的一套方法和策略,他确保数据在整个生命周期中保持高质量
清洗转换的内容
- 处理空值
- 纠正错误
- 删除重复或者无用数据
- 填充缺失值
- 格式统一
- 数据类型转换
- 数据规范化:将数据规范化到一个特定的范围内,比如通过标准化
- 数据集成
- 数据一致性检查
- 数据加载
描述一个你认为对数据治理至关重要的组成部分
数据质量管理,因为他确保数据的准确性、完整性和一致性,这涉及到建立数据质量标准,实施数据清洗和匹配过程以及持续监控数据质量
如何处理多来源数据质量问题
首先建立一个中央数据仓库或者数据湖,其中包含所有数据,然后实施质量评