第一章 DataX概览
用户在互联网上进行的所有的操作,都会留下很多的数据。有些是用户的行为数据,例如用户在什么时间点启动了APP、什么时间点点击了某一个按钮、在某一个商品的详情页停留了30秒时间、收藏了某一篇文章、点赞了某一个评论等。这些数据会以服务器日志的形式记录下来。而有些数据是记录的业务数据,例如用户下单购买了什么商品等,这些数据一般会存储与关系型数据库中,例如MySQL或者Oracle。
对于大数据开发来说,我们需要处理的数据来自于很多的渠道,有一些是服务器的日志文件,有一些是服务端的业务数据。我们要做的第一件事情,就是将这些数据导入到我们的大数据平台,然后再对其进行计算、处理,得出我们希望的结果。而在数据采集的时候,我们可以自己开发采集的程序、脚本来实现,也可以使用一些开源的第三方的程序。例如:使用flume可以实现将服务器日志文件采集到HDFS进行存储,而对于关系型数据库的数据的采集同步,我们可以采用DataX来实现。
题目一
表格
user_id | login_date |
---|---|
A | 2022-09-02 |
A | 2022-09-03 |
A | 2022-09-04 |
B | 2021-11-25 |
B | 2021-12-31 |
C | 2022-01-01 |
C | 2022-04-04 |
C | 2022-09-03 |
C | 2022-09-04 |
C | 2022-09-05 |
A | 2022-09-03 |
D | 2022-10-20 |
D | 2022-10-21 |
A | 2022-10-03 |
D | 2022-10-22 |
D | 2022-10-23 |
B | 2022-01-04 |
B | 2022-01-05 |
B | 2022-11-16 |
B | 2022-11-17 |
一. 什么是窗口函数
基本含义
窗口限定一个范围,它可以理解为满足某些条件的记录集合,窗口函数也就是在窗口范围内执行的函数。
基本语法
窗口函数有over关键字,指定函数执行的范围,可分为三部分:分组子句(partition by),排序子句(order by),窗口子句(rows)
<函数名> over (partition by <分组的列> order by <排序的列> rows between <起始行> and <终止行>)
什么是事务
事务(Transaction)是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位
事务和程序是两个概念
- 在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序
- 一个应用程序通常包含多个事务
事务是恢复和并发控制的基本单位
事务结束
COMMIT
- 事务正常结束
- 提交事务的所有操作(读+更新)
- 事务中所有对数据库的更新永久生效
概述
关系系统和关系模型是两个密切相关而有不同的概念。支持关系模型的数据库管理系统称为关系系统。但是关系模型中并非每一部分都是同等重要的,所以我们不苛求完全支持关系模型的系统才能称为关系系统。因此,我们给出一个关系系统的最小要求以及分类的定义。
关系系统的定义
- 1.支持关系数据库(关系数据结构)
-
从用户观点看,数据库由表构成,并且只有表这一种结构。
-
- 2.支持选择、投影和(自然)连接运算,对这些运算不必要求定义任何物理存取路径
-
当然并不要求关系系统的选择、投影、连接运算和关系代数的相应运算完全一样,而只要求有等价的这三种运算功能就行。
-
多事务执行方式
(1)事务串行执行
- 每个时刻只有一个事务运行,其他事务必须等到这个事务结束以后方能运行
- 不能充分利用系统资源,发挥数据库共享资源的特点
(2)交叉并发方式(interleaved concurrency)
- 事务的并行执行是这些并行事务的并行操作轮流交叉运行
- 是单处理机系统中的并发方式,能够减少处理机的空闲时间,提高系统的效率
(3)同时并发方式(simultaneous concurrency)
SQL的发展
1974年,由Boyce和Chamberlin提出
1975~1979,IBM San Jose Research Lab的关系数据库管理系统原型System R实施了这种语言
SQL-86是第一个SQL标准
SQL-89、SQL-92(SQL2)、SQL-99(SQL3)
非过程化语言
SQL语言进行数据库操作时,只需要提出“做什么”,不需要指明“怎么做”。“怎么做”是由DBMS来完成
SQL的形式
交互式SQL
- 一般DBMS都提供联机交互工具
- 用户可直接键入SQL命令对数据库进行操作
- 由DBMS来进行解释
1. 基础
模式定义了数据如何存储、存储什么样的数据以及数据如何分解等信息,数据库和表都有模式。
主键的值不允许修改,也不允许复用(不能使用已经删除的主键值赋给新数据行的主键)。
SQL(Structured Query Language),标准 SQL 由 ANSI 标准委员会管理,从而称为 ANSI SQL。各个 DBMS 都有自己的实现,如 PL/SQL、Transact-SQL 等。
SQL 语句不区分大小写,但是数据库表名、列名和值是否区分依赖于具体的 DBMS 以及配置。
1.1 SQL 支持以下三种注释:
595. Big Countries
https://leetcode.com/problems/big-countries/description/
Description
+-----------------+------------+------------+--------------+---------------+
| name | continent | area | population | gdp |
+-----------------+------------+------------+--------------+---------------+
| Afghanistan | Asia | 652230 | 25500100 | 20343000 |
| Albania | Europe | 28748 | 2831741 | 12960000 |
| Algeria | Africa | 2381741 | 37100000 | 188681000 |
| Andorra | Europe | 468 | 78115 | 3712000 |
| Angola | Africa | 1246700 | 20609294 | 100990000 |
+-----------------+------------+------------+--------------+---------------+