数据库
数据库
Mysql
MySQL是一个关系型数据库管理系统,由瑞典 MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS (Relational Database Management System,关系数据库管理系统)应用软件之一。
Oracle
Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小微机环境。它是一种高效率的、可靠性好的、适应高吞吐量的数据库方案。
PostgreSql
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。
Redis 缓存数据库
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set –有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。
MongoDb
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
influxDb
InfluxDB是一个开源的、高性能的时序型数据库,并且在时序型数据库DB-Engines Ranking上排名第一。专门用于收集、存储、处理和可视化时间序列数据的平台。
Doris
Apache Doris 是一个基于 MPP 架构的高性能、实时的分析型数据库。Doris整体架构如下图所示,Doris 架构非常简单,只有两类进程
- Frontend(FE),主要负责用户请求的接入、查询解析规划、元数据的管理、节点管理相关工作。
- Backend(BE),主要负责数据存储、查询计划的执行。
Doris 采用 MySQL 协议,高度兼容 MySQL 语法,支持标准 SQL,用户可以通过各类客户端工具来访问 Doris,并支持与 BI 工具的无缝对接。
ClickHouse
ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库(DBMS),使用C++语言编写,主要用于在线分析处理查询(OLAP),能够使用SQL查询实时生成分析数据报告。
- OLAP(On-Line Analytical Processing)翻译为联机分析处理,专注于分析处理,从对数据库操作来看,OLAP是对数据的查询;
- OLTP(on-line transaction processing)翻译为联机事务处理,专注于事务处理,从对数据库操作来看,OLTP主要是对数据的增删改。
POLARDB
PolarDB是阿里云自主研发的新一代关系型云原生数据库,既拥有分布式设计的低成本优势,又具有集中式的易用性。
PolarDB采用存储计算分离、软硬一体化设计,满足大规模应用场景需求。
ETL数据集成同步
ETL(extract-transform-load),用来将数据从源端经过提取、转换、加载至目的端的过程。
- 提取:主要是针对各个业务系统的分散数据,充分理解各类数据定义之后,规划所需要的数据源,制定初始数据抽取和周期数据抽取的规则。
- 转换:针对提取到的数据,通过一系列的转换,如数据清洗、规则检查等,实现原始数据到目标数据的转变。
- 加载:将经过转换的数据加载到数据仓库,供其他应用调用或者分析。
核心构成
完整的ETL包含三部分内容:集成、计算、流程控制。
- 集成:就是把源端多个异构数据源(数据来源的多样化,数据库、文件、手工录入等等)的数据集成到数据仓库中,主要包含三个部分:消除冗余、纠正错误、打破孤岛。
- 计算:数据被集成进入数仓内部流转过程。
- 流程控制:根据数据流的前后依赖关系,以一种合理的方式组装串联起来,这个过程叫做流程控制。
ETL实现方式
- 数据集成同步工具:Flume、Sqoop、DataX、Canal、ETLCloud、Streamsets
- 流程控制组件:开源组件里的流程控制主要是在调度系统中实现的,比如 DolphinScheduler、airFlow、azkaban。当然对于简单的流程依赖我们也同样可以使用 Shell 或者程序实现。
- 数据库组件:Hive、Hbase、druid、Kylin、ClickHouse、Doris 等等。当然这些基本都是支持 SQL 的,这时候我们完全依赖数据库(数据库+程序/Shell/调度系统)也是不错的选择。