数据库基础

数据仓库【基础架构】 1、基本概念 1.1什么是数据库 1.2 什么是数据仓库 1.3 数据库(OLTP)与数据仓库(OLAP)的区别 2、基础架构 3、架构演进 4、逻辑分层 5、数据调研 6、主题域划分 7、数仓规范 8、数据治理 9、数仓理念 阅读详情

部分转载自:
https://www.zhihu.com/question/24225007/answer/257969925
https://www.zhihu.com/question/24225007/answer/81501685
http://blog.youkuaiyun.com/qq_27093465/article/details/54693607
http://blog.youkuaiyun.com/bitcarmanlee/article/details/51011515
https://www.zhihu.com/question/24696366/answer/29189700

1、关系型数据库

关系型数据库是由多张能互相联接的二维行列表格组成的数据库。
非关系型数据库,又被称为NoSQL(Not Only SQL )。指非关系型、分布式、不提供ACID (数据库事务处理的四个本要素)的数据库设计模式,并强调Key-Value 存储和文档数据库的优点,而不是单纯地反对RDBMS。

关系型数据库和非关系型数据库在使用场景上差别比较大,只有结合自身的业务特点才能发挥出这两类数据库的优势。

下面说说这两类数据库的一些特点:

首先一般非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的

  • 1.数据存储结构

首先关系型数据库一般都有固定的表结构,并且需要通过DDL语句(数据库模式定义语言,Data Definition Language)来修改表结构,不是很容易进行扩展,而非关系型数据库的存储机制就有很多了,比如基于文档的,K-V键值对的,还有基于图的等,对于数据的格式十分灵活没有固定的表结构,方便扩展,因此如果业务的数据结构并不是固定的或者经常变动比较大的,那么非关系型数据库是个好的选择。

  • 2.可扩展性

传统的关系型数据库给人一种横向扩展难,不好对数据进行分片等,而一些非关系型数据库则原生就支持数据的水平扩展(比如mongodb的sharding机制),并且这可能也是很多NoSQL的一大卖点,其实象Mysql这种关系型数据库的水平扩展也并不是难,即使NoSQL水平扩展容易但对于向跨分片进行joins这种场景都没有什么太好的解决办法,不管是关系型还是非关系型数据库,解决水平扩展或者跨分片Joins这种场景,在应用层和数据库层中间加一层中间件来做数据处理也许是个好的办法

  • 3.数据一致性

非关系型数据库一般强调的是数据最终一致性,而不没有像ACID一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好的选择,非关系型数据库可能更多的偏向于OLAP场景,而关系型数据库更多偏向于OLTP场景.

非关系型数据库的优势:

  1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。
  2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

关系型数据库的优势:

  1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。
  2. 事务支持使得对于安全性能很高的数据访问要求得以实现。

对于这两类数据库,对方的优势就是自己的弱势,反之亦然。

2、ACID

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必须要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。

1、A (Atomicity) 原子性

原子性很容易理解,也就是说事务里的所有操作要么全部做完,要么都不做,事务成功的条件是事务里的所有操作都成功,只要有一个操作失败,整个事务就失败,需要回滚。

比如银行转账,从A账户转100元至B账户,分为两个步骤:1)从A账户取100元;2)存入100元至B账户。这两步要么一起完成,要么一起不完成,如果只完成第一步,第二步失败,钱会莫名其妙少了100元。

2、C (Consistency) 一致性

一致性也比较容易理解,也就是说数据库要一直处于一致的状态,事务的运行不会改变数据库原本的一致性约束。

例如现有完整性约束a+b=10,如果一个事务改变了a,那么必须得改变b,使得事务结束后依然满足a+b=10,否则事务失败。

3、I (Isolation) 独立性

所谓的独立性是指并发的事务之间不会互相影响,如果一个事务要访问的数据正在被另外一个事务修改,只要另外一个事务未提交,它所访问的数据就不受未提交事务的影响。

比如现有有个交易是从A账户转100元至B账户,在这个交易还未完成的情况下,如果此时B查询自己的账户,是看不到新增加的100元的。

4、D (Durability) 持久性

持久性是指一旦事务提交后,它所做的修改将会永久的保存在数据库上,即使出现宕机也不会丢失。

3、OLTP和OLAP的区别

联机事务处理OLTP(on-line transaction processing)
主要是执行基本日常的事务处理,比如数据库记录的增删查改。比如在银行的一笔交易记录,就是一个典型的事务。

OLTP的特点一般有:

1.实时性要求高。我记得之前上大学的时候,银行异地汇款,要隔天才能到账,而现在是分分钟到账的节奏,说明现在银行的实时处理能力大大增强。
2.数据量不是很大,生产库上的数据量一般不会太大,而且会及时做相应的数据处理与转移。
3.交易一般是确定的,比如银行存取款的金额肯定是确定的,所以OLTP是对确定性的数据进行存取
4.高并发,并且要求满足ACID原则。比如两人同时操作一个银行卡账户,比如大型的购物网站秒杀活动时上万的QPS请求。

联机分析处理OLAP(On-Line Analytical Processing)
是数据仓库系统的主要应用,支持复杂的分析操作,侧重决策支持,并且提供直观易懂的查询结果。典型的应用就是复杂的动态的报表系统。

OLAP的特点一般有:

1.实时性要求不是很高,比如最常见的应用就是天级更新数据,然后出对应的数据报表。
2.数据量大,因为OLAP支持的是动态查询,所以用户也许要通过将很多数据的统计后才能得到想要知道的信息,例如时间序列分析等等,所以处理的数据量很大;
3.OLAP系统的重点是通过数据提供决策支持,所以查询一般都是动态,自定义的。所以在OLAP中,维度的概念特别重要。一般会将用户所有关心的维度数据,存入对应数据平台。

总结:

OLTP即联机事务处理,就是我们经常说的关系数据库,增删查改就是我们经常应用的东西,这是数据库的基础;TPCC(Transaction Processing Performance Council)属于此类。
OLAP即联机分析处理,是数据仓库的核心部心,所谓数据仓库是对于大量已经由OLTP形成的数据的一种分析型的数据库,用于处理商业智能、决策支持等重要的决策信息;数据仓库是在数据库应用到一定程序之后而对历史数据的加工与分析,读取较多,更新较少,TPCH属于此类。
随着大数据时代的到来,对于OLAP,列存储模式或者说nosql模式比传统意义的行存储模式可能更具优势。

4、数据库的简单组成:

直观的看,一个数据库由多张表构成的,那么每张表有不重复的名称(表名),而且每个表是有多列组成的。可以这么理解一张表就是一个关系。

关于表的还有一些概念要交代一下。
属性。一张关系表中的一个列就是一个属性,一个列又有它的名称和类型。
元组。一张关系表中的一行数据就是元组,也称为记录。
键。键是为在元组中快速查找而设置的。键有主键和候选键之分。

5、范式

定义:范式是“符合某一种级别的关系模式的集合,表示一个关系内部各属性之间的联系的合理化程度”。
可以粗略地理解为一张数据表的表结构所符合的某种设计标准的级别。就像家里装修买建材,最环保的是E0级,其次是E1级,还有E2级等等。

数据库范式也分为1NF,2NF,3NF,BCNF,4NF,5NF。一般在我们设计关系型数据库的时候,最多考虑到BCNF就够。符合高一级范式的设计,必定符合低一级范式,例如符合2NF的关系模式,必定符合1NF。

第一范式:

–指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。

符合1NF的关系中的每个属性都不可再分。

(1)元组中的每个属性只能包含一个值
(2)关系中的每个元组必须包含相同的数量
(3)关系中的每个元组一定不能相同

第一条就是说每个单元格必须只有一个值。第二条就是每行都有相同数量的列。第三条就是一个表中不能有相同的行。
下面这个表就不符合要求。

这里写图片描述

第二范式:

–满足第二范式必须先满足第一范式
–要求数据表中的每一行记录必须可以被唯一的区分
–通常需要为表添加主键

2NF在1NF的基础之上,非主属性完全依赖于码。
如对于(学号,课名) → 姓名,有 学号 → 姓名,存在非主属性 姓名 对码(学号,课名)的部分函数依赖。
造成插入异常、删除异常和修改异常。

码:关系中的某个属性或者某几个属性的组合,用于区分每个元组.

设 K 为某表中的一个属性或属性组,若除 K 之外的所有属性都完全函数依赖于 K,那么我们称 K 为候选码,简称为码。
在实际中我们通常可以理解为:假如当 K 确定的情况下,该表除 K 之外的所有属性的值也就随之确定,那么 K 就是码。一张表中可以有超过一个码。
(实际应用中为了方便,通常选择其中的一个码作为主码)

非主属性:包含在任何一个码中的属性成为主属性,否则为非主属性。

完全函数依赖:在一张表中,若 X → Y,且对于 X 的任何一个真子集(假如属性组 X 包含超过一个属性的话),X ’ → Y 不成立,那么我们称 Y 对于 X 完全函数依赖,记作 X F→ Y。

部分函数依赖:假如 Y 函数依赖于 X,但同时 Y 并不完全函数依赖于 X,那么我们就称 Y 部分函数依赖于 X,记作 X P→ Y。

传递函数依赖:假如 Z 函数依赖于 Y,且 Y 函数依赖于 X,且Y 不包含于 X,且 X 不函数依赖于 Y,那么我们就称 Z 传递函数依赖于 X ,记作 X T→ Z。

第三范式

–必须先满足第二范式,且消除传递依赖。
–要求一个数据库表中不包含已在其他表中已包含的非主关键字信息,也就是外键。

3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。
符合3NF要求的数据库设计,基本上解决了数据冗余过大,插入异常,修改异常,删除异常的问题。

举例:
对于选课表,主码为(学号,课名),主属性为学号和课名,非主属性只有一个,为分数,不可能存在传递函数依赖,所以选课表的设计,符合3NF的要求。
对于学生表,主码为学号,主属性为学号,非主属性为姓名、系名和系主任。因为 学号 → 系名,同时 系名 → 系主任,所以存在非主属性系主任对于码学号的传递函数依赖,所以学生表的设计,不符合3NF的要求。

BCNF:

非主属性完全函数依赖于码,且不传递依赖于码,且仅一个候选码,并为单属性。

符合3NF,且主属性不依赖于主属性;
符合2NF,且每个属性都不传递依赖于键码;
符合3NF,且只有一个候选码,或每个候选码都是单属性。

4NF:

要求把同一张表中多对多的关系删除,即不允许存在非平凡的多值依赖。

5NF:

从最终结构重建原始结构。

6、约束

SQL约束主要有以下几种:

NOT NULL :
用于控制字段的内容一定不能为空(NULL)。

UNIQUE :
控制字段内容不能重复,一个表允许有多个 Unique 约束。

PRIMARY KEY:
也是用于控制字段内容不能重复,但它在一个表只允许出现一个。

FOREIGN KEY:
FOREIGN KEY 约束用于预防破坏表之间连接的动作,FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK:
用于控制字段的值范围。

DEFAULT:
用于设置新记录的默认值。

数据仓库基础知识 数据仓库基础知识介绍 阅读详情

相关推荐

Unity UI Toolkit避坑指南:从官方Samples到实际项目,这些‘坑’我帮你踩过了

本文分享了Unity UI Toolkit在实际项目中的避坑经验和优化技巧,包括动画系统的高效替代方案、3D世界UI的创新实现方式、USS样式继承的反直觉规则等。通过详细的代码示例和性能优化策略,帮助开发者避免常见陷阱,提升开发效率。

weixin_29535577的博客 342

mysql 字段不确定,数据库表不确定字段解决方案

文章首发在个人博客分析通常来说,在需求分析阶段会确定数据库表中的字段,同时也普遍存在一种需求,那就是表中的字段除了常见的以外,还存在一些不确定的字段。譬如电商系统,有一个 products 表保存商品记录,然而各行各业的商品信息不一样,不可能因为某一行业商品特有的属性而在表中添加一个字段。面对这样的需求,如何设计数据库呢?对策文中提出来的解决方案的前提是系统所用的数据库支持 hash 数据类型,其...

weixin_31834087的博客 2180

10X Visium空间转录组学入门:从芯片结构到数据分析全流程解析(附避坑指南)

本文全面解析10X Visium空间转录组学技术,从芯片物理结构、探针化学原理到湿实验全流程操作与避坑指南,并详细介绍了从FASTQ数据到空间可视化的核心分析流程。文章旨在帮助科研人员跨越从理论到实操的鸿沟,掌握从样本准备、文库构建到使用Space Ranger和Seurat进行数据分析与可视化的完整路径,为组织生物学研究提供清晰的实践指引。

weixin_29306011的博客 163

如何不改表结构动态扩展字段?

点击关注公众号,Java干货及时送达作者:李瑜宁来源:https://juejin.cn/post/6844903640990220302笔者的动态字段扩展解决方案主要针对 Mysql 5...

Java技术栈,分享最主流的Java技术 783

使用Open3D进行RGB-D图像点云处理

在本文中,我们将使用Open3D来处理RGB-D图像,提取点云并进行一些基本的操作。总结起来,本文介绍了如何使用Open3D库处理RGB-D图像并提取点云。我们展示了如何读取RGB-D图像,创建RGB-D图像和点云,并显示点云。除了显示点云,Open3D还提供了许多其他功能,如点云滤波、点云配准、表面重建等。在创建RGB-D图像时,我们需要指定深度图像的缩放因子和截断值,以及是否将RGB图像转换为强度图像。希望本文能够帮助您入门Open3D,并在处理RGB-D图像和点云数据时提供一些指导。

QfcaLinux的博客 445

u-boot-2014.10移植第22天----添加nand flash命令支持(四)

解决问题:nand0: MTD Erase failure: -5 drivers/mtd/nand/nand_bbt.c文件中初始化bbt/* * Allocate memory (2bit per block) and clear the memory bad block * table. */ this->bbt = kzalloc(len, GFP_

fulinux的博客 3632

数据库基础(超详细版)

简介: 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种 用户或应用共享的数据集合。 数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软 件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。 用户通过数据库管理系统访问数据库中的数据。 数据库软件应该为数据库管理系统,数据库是通过数据库管理系统创建和操作的。 数据库:存储、维护和管理数据的集合。 三大范式:

m0_60563771的博客 4万+

Python实现多元线性回归(Multiple Linear Regression)

多元线性回归是一种用于建立多个自变量与因变量之间关系的统计学方法。在多元线性回归中,我们可以通过多个自变量来预测一个因变量的值。每个自变量对因变量的影响可以用回归系数来表示。

优快云 精品推荐 4331

db数据库, Database基础

catalogvarchar类型的cmp varchar类型的cmp WHERE age >= '5'; '他会得到: 5, 6, 7, 8, 9, 50, 51, .., 60, 61, ...' '即,他是 比较 字典序的!!!! 例如:10,20,30,40,100, 200是得不到的!!!' 但,如果你的age 都是'完全相同的长度',那么此时的 字典序==Int数值大小 即,你在存入数据库时,存入: 001, 018, 050 那么,你的WHERE age>='5' AND

WChang的博客 1066

手把手教你学PCIE(1.38)--基本概念:ATU(地址转换单元)

ATU(Address Translation Unit)是一种硬件单元,用于在PCIe系统中进行地址转换。它将设备的本地地址(外部地址)转换为系统内存或配置空间中的全局地址(内部地址),反之亦然。ATU的工作原理:通过地址匹配和转换,确保事务能够在不同的地址空间之间正确路由。配置寄存器:通过配置寄存器来设置地址转换规则。应用场景:地址空间隔离、访问控制、动态地址管理、虚拟化和多租户。

MHD0815的博客 2055

化工热力学软件:Aspen Plus二次开发_(9).过程控制与动态模拟v1

Aspen Plus 提供了丰富的过程控制工具和方法,可以用于静态和动态过程的模拟和控制策略的开发。通过控制回路设计、动态模拟、优化工具和数据交换接口,用户可以设计和优化各种复杂的控制策略,提高化工生产的稳定性和效率。此外,结合外部软件(如MATLAB、Simulink、LabVIEW等),可以实现更高级的控制策略,如自适应控制和模型预测控制,进一步提升过程控制的精度和灵活性。希望本文的内容能帮助用户更好地理解和应用Aspen Plus中的过程控制功能。

kkchenjj的博客 405

数据仓库基础知识总结

总的来说,数据中台距离业务更近,数据复用能力更强,能为业务提供速度更快的服务,数据中台在数据仓库和数据平台的基础上,将数据生产为一个个数据API服务,以更高效的方式提供给业务。2)逻辑模型LDM:逻辑模型反映的是系统分析人员对数据存储的观点,是对概念模型的进一步分解和细化,逻辑模型是根据业务规则确定的,关于业务对象,业务对象的数据项以及业务对象之间关系的基本蓝图。面向主题的数据组织方式,就是在较高层次上对分析对象的数据的一个完整并且一致的描述,能刻画各个分析对象所涉及的企业各项数据,以及数据之间的联系。

qq_22201881的博客 1820

ResNet改进(20):融合Swin Transformer与ResNet

这种混合架构的设计理念是:在保留CNN强大局部特征提取能力的同时,引入Transformer的全局建模优势。我们实现的模型在ResNet18的基础上嵌入了一个简化版的Swin Transformer Block,旨在探索两种范式结合的可能性。通过在ResNet早期阶段引入Transformer模块,我们既保留了CNN强大的局部特征提取能力,又获得了Transformer的全局建模优势。本文提出的ResNet与Swin Transformer混合架构,探索了CNN与Transformer结合的可能性。

2401_82355416的博客 859

数据仓库基础

本篇笔记仅记录数据仓库的理论知识以及相关技术概念介绍。 数据仓库是一个面向主题的、继承的、非易失的且随时间变化的数据集合。主要用于组织积累的历史数据,并使用分析方法(OLAP、数据分析)进行分析整理,进而辅助决策,为管理者、企业系统提供数据支持。

老程的小白博客空间 2455

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

数据仓库 基础教程

数据仓库(Data Warehouse,简称DW或者DWH)是通过集成来自多个异构数据源的数据来构建的。它支持分析报告、结构化和/或特别查询和决策制定。本教程采用循序渐进的方法来解释数据仓库的所有必要概念。

qq_42577508的博客 1175

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

linux之database(数据库基础)三

linux之database(数据库基础) 01: 数据库服务概述 、 构建MySQL服务 、 数据库基本管理 、 MySQL数据类型 02: 表结构 、 MySQL键值 03: 数据导入导出 、 管理表记录 、 匹配条件 、 MySQL管理工具 04: 用户授权 、 完全备份 、 增量备份 05: percona软件介绍 、 innobackupex备份与恢复 文章目录linux之database(数据库基础)数据导入导出 、 管理表记录 、 匹配条件 、 MySQL管理工具案例1:数据导入导出问题一:

weixin_43051805的博客 796

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

MySQL夯实基础2: 使用SQL语句操作MySQL数据库DATABASE

数据库可以看作是一个专门存储数据对象的容器。这里的数据对象包括表、视图、触发器、存储过程等,其中表是最基本的数据对象。5 删除数据库,其中的数据同步被删除(单机用户除外)1 创建数据库, 并指定数据库字符集和校对规则。3 查看当前可用的所有数据库列表 (复数s)存储数据库相关的信息的系统数据库,如。2 修改数据库的字符集及其校对规则。等,否则MySQL将不能正常工作。4 选择指定的数据库 【常用】

YunYingLiang的博客 345

Hive数据仓库基础

数据仓库的英文名称为Data Warehouse,可简写为DW或DWH。数据仓库的目的是构建面向分析的集成化数据环境,为企业提供决策支持(Decision Support)。它出于分析性报告和决策支持的目的而创建。数据仓库本身并不“生产”任何数据,同时自身也不需要“消费”任何的数据,数据来源于外部,并且开放给外部应用,这也是为什么叫“仓库”,而不叫“工厂”的原因。数据库与数据仓库的区别实际讲的是OLTP 与 OLAP 的区别。操作型处理,叫联机事务处理 OLTP(On-Line Transaction Pr

a1007904449的博客 822

Database_数据库基础笔记整理

1、避免全表扫描,请勿使用*号,以防返回大量的数据; 2、避免使用!=或<>操作符在where子句中,避免全表扫描: 3、请勿在where子句中将表达式或函数放在比较符号的左侧,以防全表扫描; 例:xx where score + 10 > 60; 优化:xx where score > 60 – 10; 4、使用limit限制查询返回的数据行数,限制不需要的数据...

Tingshuo2009的博客 953

Java学习-数据库DB基础篇

一、概述: 1.数据库(DateBase,DB):数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户可以对数据库中的数据进行增加,修改,删除及查询操作。 2.数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于建立、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用...

Jagger_Lin的博客 1789

如何零SQL基础管理数据库?DB Browser for SQLite完整指南

你是否曾经面对一个SQLite数据库文件却无从下手?复杂的SQL语句让你望而却步,而命令行操作又显得过于技术化?DB Browser for SQLite正是为解决这一痛点而生的终极SQLite数据库可视化工具。作为一款完全开源免费的跨平台SQLite管理软件,它能让你无需编写任何SQL代码就能轻松管理数据库,真正实现零SQL基础操作数据库。无论你是开发者、数据分析师还是普通用户,都能通过直观的图

gitblog_00605的博客 158
上一篇: 数据库知识体系概括
下一篇: 数据库sql语句题目
ka_ko
博客等级 码龄11年 168粉丝 94原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值