数据库简介

快捷查看指令 ctrl+f 进行搜索会直接定位到需要的知识点和命令讲解(如有不正确的地方欢迎各位小伙伴在评论区提意见,博主会及时修改)

数据库介绍

什么是数据库
  • 定义
    数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。
  • 由来 :
    过去 ---- 账本
    现在 ---- excel
    当前 ---- mysql
  • mysql :
    开源、免费、源代码开放
数据库的种类
  • 最常用的数据库模式主要有两种 :
    关系型数据库 和 非关系型数据库
- 生产环境主流的关系型数据库有 Oracle、Microsoft SQL Server、MySQL/MariaDB等
- 生产环境主流的非关系型数据库有 MongoDB Memcached Redis ES
关系型数据库
  • 关系型数据库模型是把复杂的数据结构归结为简单的二元关系(即二维表格形式)。在关系型数据库中,对数据的操作几乎全部建立在一个或多个关系表格上,通过这些关联的表格分类、合并、连接或选取等运算来实现数据的管理。
  • 关系型数据可以很好地存储一些关系模型的数据,比如一个老师对应多个学生的数据(“一对多”),一个作者对应多本书(“一对多”),一本书对应一个出版日期(“一对一”)
  • 关系型数据库诞生距今已有 40 多年了,从理论产生到发展到实现产品,例如:常见的 MySQL 和 Oracle 数据库,Oracle 在数据库领域里上升到了霸主地位,形成每年高达数百亿美元的庞大产业市场,而 MySQL 也是不容忽视的数据库,以至于被 Oracle 重金收购了。
  • 数据的存储形式:
姓名班级性别
张三2310
李四2312
关系型数据库小结:
	- 关系型数据库在存储数据时实际就是采用的一张二维表(和 Word 和 Excell 里表格几乎一样)。
	- 市场占有量较大的是 MySQL 和 Oracle 数据库,而互联网场景最常用的是 MySQL 数据库。
	- 通过 SQL 结构化查询语言来存取、管理关系型数据库的数据。
	- 关系型数据库在保持数据安全和数据一致性方面很强,遵循 ACID 理论 ACID指的的事务的4大特性
非关系型数据库
  • 非关系型数据库也被称为 NoSQL 数据库,NoSQL 的本意是 “Not Only SQL”,指的是非关系型数据库,而不是“NO SQL”的意思,NoSQL 的产生并不是要彻底否定关系型数据库,而是作为传统数据库的一个有效补充。

NoSQL 数据库在特定的场景下可以发挥难以想象的高效率和高性能。特别是对于规模日益扩大的海量数据,超大规模和高并发的微博、微信、SNS 类型的纯动态网站已经显得力不从心,暴露了很多难以克服的问题,

例如:传统的关系型数据库IO瓶颈、性能瓶颈都难以有效突破,于是开 始出现了大批针对特定场景,以高性能和使用便利为目的功能特异化的数据库产品。NoSQL(非关系型)类的数据库就是这样的情景中诞生并得到了非常迅速的发展。

  • NoSQL 是非关系型数据库的广义定义。它打破了长久以来关系型数据库与ACID理论大一统的局面。NoSQL数
    据存储不需要固定的表结构,通常也不存在连续操作。
非关系型数据库小结:
	- NoSQL 数据库不是否定关系型数据库,而是作为关系数据库的一个重要补充。
	- NoSQL 数据库为了灵活及高性能、高并发而生;
	- 在NoSQL 数据库领域,当今的最典型产品为 Redis(持久化缓存)、MongoDB、Memcached(纯内存)等。
	- NoSQL 数据库没有标准的查询语言(SQL),通常使用数据接口或者查询API。
非关系型数据库种类:
1.键值(Key-Value)存储数据库
	- 键值数据库就类似传统语言中使用的哈希表。可以通过key来添加、查询或者删除数据,因为使用key主键访问,所以会获得很高的性能及扩展性。
	这个表中有一个特定的键和一个指针指向特定的数据。Key-Value模型对于IT系统来说的优势在于简单、易部署、高并发。
	- 典型产品:Memcached、Redis、MemcachedB
2、列存储(Column-Oriented)数据库
	- 列存储数据库将数据存储存在列族(Column Family)中,一个列族存储经常被一起查询的相关数据。举个例子,如果有一个 Person 类,
	通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
	这部分数据库通常用来应对分布式存储的海量数据。键仍然存在,但是他们的特点是指向了多个列。这些列是由列家族来安排的。
	- 典型产品:Cassandra,HBase
3、面向文档(Document-Oriented)的数据库
	- 面向文档数据库会将数据以文档的形式存储,数据存储的最小单位是文档,同一个表中存储的文档属性可以是不同的,
	数据可以使用XML、JSON等多种形式存储。
	- 典型产品:MongDB、CouchDB
4、图形(Graph)数据库
	- 图形数据库允许我们将数据以图的方式存储。图形结构的数据库同其他行列以及刚性结构的 SQL 数据库不同,它是使用灵活的图形模型,
	并且能够扩展到多个服务器上。
	- 典型产品:Neo4J、InfoGr id
常用关系型数据库管理系统
Oracle 数据库

在这里插入图片描述

  • Oracle 前身叫 SDL,由 Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle 公司引入了第一个商用 SQL关系数据库管理系统。Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前 Oracle 关系数据库产品的市场占有率数一数二。
  • Oracle 公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。
  • 主要应用范围:传统大企业,大公司,政府,金融,证券等等。
  • 版本升级:Oracle8i,Oracle9i,Oracle10g,Oracle11g,Oracle12c。
MySQL 数据库

在这里插入图片描述

  • MySQL 数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典 MySQL AB 公司。在2008年1月16号被 Sun 公司收购,后 Sun 公司又被 Oracle 公司收购。目前MySQL 被广泛地应用在 Internet 上的大中小型网
    站中。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,许多大中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库,甚至国内知名的淘宝网也选择弃用 Oracle 而更换为更开放的 MySQL。
  • MySQL 数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。
MariaDB 数据库

在这里插入图片描述

  • MariaDB 数据库管理系统是 MySQL 数据库的一个分支,主要由开源社区维护。开发这个 MariaDB 数据库分支的可能原因之一是:甲骨文(Oracle)公司收购了MySQL 后,有将 MySQL 闭源的潜在风险,因此 MySQL 开源社区采用分支的方式来避开这个风险。
  • 开发 MariaDB 数据库的目的是完全兼容 MySQL 数据库,包括 API 和命令行,使之能轻松的成为 MySQL 的代替品。在存储引擎方面,使用 XtraDB (英语:XtraDB)来代替MySQL 的 InnoDB MariaDB 由 MySQL 的创始人 Michael Widenius(英语:Michael Widenius)主导开发,他早前曾以 10 亿美元的价格,将自己创建的公司MySQL AB卖给了 SUN,此后,随着 SUN 被甲骨文收购,MySQL 的所有权也落入Oracle 的手中,MariaDB 数据库的名称来自 MySQL 的创始人Michael Widenius 的女儿 Maria 的名字。
SQL server 数据库

在这里插入图片描述

  • Microsoft SQL Server是微软公司开发的大型关系型数据库系统。1987年,微软和IBM合作开发完成 OS/2,IBM 在其销售的 OS/2 ExtendedEdition 系统中绑定了 OS/2 DatabaseManager,而微软产品线中尚缺少数据库产品。为此,微软将目光投向 Sybase,同 Sybase 签订了合作协议,使用 Sybase 的技术开发基于 OS/2平台的关系型数据库。1989年,微软发布了 SQLServer1.0 版。
  • SQL Server 的功能比较全面,效率高,可以作为中型企业或单位的数据库平台
  • SQL Server 可以与 Windows 操作系统紧密集成,不论是应用程序开发速度还是系统事务处理运行速度,都能得到较大的 提升。SQL Server 的缺点是只能在 Windows 系统下运行。
  • 主要应用范围:部分企业电商(央视购物),使用windows服务器平台的企业。
常用非关系型数据库管理系统
Memcached (Key-Value)

在这里插入图片描述

  • Memcached 是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的 Web 应用,最初版本由 LiveJoumal 的 Brad Fitzpatrick在2003年开发完成。目前全球有非常多的用
    户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速度。注意:Memcache 是这个项目的名称,而Memcached 是服务器端的主程序文件名。
  • 缓存一般用来保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来一样),通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后 者是磁盘。Memcached 是一种纯内存缓存系统,把经常存取的对象或数据缓存在 Memcached 的内存中,这些被缓存的数据被程序通过API的方式被存取,Memcached里面的数据就像一张巨大的 HASH 表,数据以 Key-Value 对的方式存在。Memcached 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度.官方:http://Memcached.org
  • 由于Memcached 为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于 Memcached 开发了一个开源项目 MemcacheDB。通过为 Memcached 增加 Berkeley DB 的持久化存储机制和异步主辅复制机制,使 Memcached 具备了事务恢复能力、持久化数据存储能力和分布式复制能力,但是最近几年逐渐被其他的持久化产品替代例如Redis。
  • Memcached缺点:=
    1、存储的数据类型比较单一 只能存储字符串
    2、无法持久化(没办法把数据存放到磁盘中)
Redis (Key-Value)

在这里插入图片描述

  • Redis 是一个Key-Value型存储系统。但Redis支持的存储value 类型相对更多,包括 string(字符串)、list(列表)、set(集合)和 zset(有序集合)等。这些数据类型都支持 push/pop、add/remove 及取交集、并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,Redis 支持各种不同方式的排序。与 Memcached 一样,为了保证效率,Redis 的数据都是缓存在内存中。区别是 Redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 Master-Slave(主从)同步。
  • Redis 是一个高性能的 Key-Value 数据库。Redis 的出现,很大程度补偿了 Memcached 这类 Key-Value 存储的不足,在部分场合可以对关系数据库有很好的补充作用。它提供了 Python,Ruby,Erlang,PHP 客户端,使用很方便。官方:http://www.Redis.io/documentation
  • Redis 特点:
  1. 支持内存缓存,这个功能相当于 Memcached。
  2. 支持持久化存储,这个功能相当于 MemcacheDB。
  3. 数据类型更丰富。比其他 Key-Value 库功能更强。
  4. 支持主从集群,分布式。
  • 应用:
    缓存从存取 Memcached 更改存取 Redis。
MangoDB (Document-Web)

在这里插入图片描述

  • MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似 Json 的 Bjson 格式,因此可以存储比较复杂的数据类型。
    MongoDB 最大的特点是他支持查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
  • MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持32位和64位应用,默认端口为 27017。推荐运行在64位平台。
  • MongoDB 把数据存储在文件中(默认路径为:/data/db)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/171595.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Prolog 中的逻辑探险:学习9组逻辑蕴涵公式

引言 上次写了16组等价公式定律,今天继续用Prolog写9组逻辑蕴涵公式。 感觉这些公式的名称与公式挺难一一对应来记忆的,只能多练习了. 1. 附加律 (Addition) A ⇒ A∨B 当你拿到一个苹果(A),突然你知道,即使有了梨(…

Adobe 2022,2023,2024永久安装包全家桶下载网盘下载和最全的安装教程!

收集整理:Adobe合集 最新:已更新到2024 资源包含:AE Adobe AE2022是一个非常强大的视频制作和后期制作软件,它可以让您制作出非常出色的电影特效、动画和其他非常优秀的视频作品。为了更好地使用这款软件,我们需要一些比较全面…

visionOS空间计算实战开发教程Day 2 使用RealityKit显示3D素材

我们在​​Day1​​中学习了如何创建一个visionOS应用,但在第一个Demo应用中我们的界面内容还是2D的,看起来和其它应用并没有什么区别。接下来我们先学习如何展示3D素材,苹果为方便开发人员,推出了RealityKit,接下来看…

【软件测试】一位优秀测试工程师具备哪些知识和经验?

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 根据观察&#xf…

杨氏矩阵解法

每日一言 「 人生如逆旅,我亦是行人。 」--临江仙送钱穆父-苏轼题目 杨氏矩阵 有一个数字矩阵,矩阵的每行从左到右是递增的,矩阵从上到下是递增的,请编写程序在这样的矩阵中查找某个数字是否存在。 解法思路 法一:…

手把手教你通过CODESYS V3进行PLC编程(一)

教程背景 宏集MC系列模块化控制器是基于Raspberry Pi的高性能4核控制器,运动控制循环时间最快可达500微秒,实现了计算能力和成本之间的最佳平衡,适用于多轴运动控制和CNC控制。 教程目的 本系列教程将使用宏集MC系列控制器,详细…

【接口自动化测试】HTTP协议详解

协议 简单理解,计算机与计算机之间的通讯语言就叫做协议,不同的计算机之间只有使用相同的协议才能通信。所以网络协议就是为计算机网络中进行数据交换而建立的规则,标准或约定的集合。 OSI模型 1978年国际化标准组织提出了“开放系统互联网…

seleninum 基础及简单实践

网页自动化 1 Selenium自动化基础 1.1 Selenium简介 Selenium自动化流程如下: 自动化程序调用Selenium客户端库函数客户端库会发送Selenium命令,给浏览器的驱动程序浏览器驱动程序接收到命令后,驱动浏览器去执行命令浏览器执行命令浏览器驱…

MFC项目添加CUDA支持

文章目录 前言一、开启项目CUDA支持二、链接CUDA库三、链接cu文件 前言 我目前的项目状况是: 拥有一个MFC项目;拥有现成的 .cuh文件 和 .cu文件。 我想做的是:将.cuh和.cu文件放到我的项目中,并且编译成功跑起来 一、开启项目C…

PixCake:让你的照片焕发新生的AI人像处理技术修图软件

大家好!今天我要向大家推荐一款令人惊艳的AI人像处理技术修图软件——PixCake像素蛋糕。无论你是摄影爱好者还是普通用户,PixCake都能帮助你将照片修饰得更加出色、生动。 PixCake拥有强大的AI人像处理技术,可以自动识别照片中的人物&#x…

硬件驱动为什么要有WHQL数字签名

硬件驱动要有WHQL数字签名才能实现正常安装、启动、运行,并实现驱动静默安装。 目前的桌面操作系统中,Windows系统市场占有率处于优势,Windows 的各个版本的系统加起来几乎占领了大部分市场。所以很多工业和行业的硬件设备都要考虑兼容在Win…

SpringBoot :ch01 项目结构

前言 在本系列博客中,我们将深入探讨 Spring Boot 项目结构的各个方面,并探讨如何利用这些结构来构建健壮、可扩展的应用程序。通过深入了解 Spring Boot 项目结构,我们可以更好地利用 Spring Boot 的优势,提高开发效率&#xff…

python接口自动化测试之接口数据依赖

一般在做自动化测试时,经常会对一整套业务流程进行一组接口上的测试,这时候接口之间经常会有数据依赖,那又该如何继续呢? 那么有如下思路: 抽取之前接口的返回值存储到全局变量字典中。初始化接口请求时,…

Python爬虫技巧:百万级数据怎么爬取?

目录 前言 一、使用多线程/协程提高爬虫速度 1.1 使用多线程 1.2 使用协程 1.3 注意事项 二、使用代理IP解决目标网站限制爬虫的问题 三、使用分布式爬虫 四、其他一些小技巧 总结 前言 在实际的爬取过程中,我们经常会遇到一些需要大量爬取数据的情况&…

深入 Django 的 URL 分发器

概要 在 Django 的 MVC 架构中,URL 分发器扮演着至关重要的角色,它负责将用户的请求路由到相应的视图函数或类。这一机制不仅保证了 Django 应用的高度可扩展性,还为开发者提供了灵活的 URL 设计能力。本文将详细介绍 Django 中的 URL 分发器…

KT142C语音芯片客户反馈电脑端的配置文件,打开都正常,但是拷贝到KT142C内部就乱码

KT142C语音芯片客户反馈电脑端的配置文件,打开都正常,但是拷贝到KT142C内部就乱码 首先解释一下原理,KT142C内置的330Kbyte空间可供用户下载,实际上拿出程序部分的空间 作为声音存储介质的,也就是说,代码空…

安卓毕业设计:基于安卓android微信小程序的超市购物系统

运行环境 开发语言:Java 框架:ssm JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclipse/idea Maven包&a…

浅谈电动汽车充电桩设计与应用研究

安科瑞 华楠 摘要:目前,随着我国社会经济的快速发展,我国的各个领域都取得了突破性的发展,尤其是在电动汽车充电桩的设计方法,新型的电动汽车充电桩设计已经广泛的受到了人民群众的青睐与认可,而这种发展前…

4本期刊被踢!11月SCI/SSCI目录已更新

​2023年11月20日,科睿唯安更新了Web of Science核心期刊目录。 此次更新后SCIE期刊目录共包含9481本期刊,SSCI期刊目录共包含3551本期刊。此次SCIE & SSCI期刊目录更新,与上次更新(2023年10月)相比,共…

[vxe-table] expandAll:true 当table数据更新后无法展开,只有第一次能展开才能生效的问题

:tree-config"{rowField: id,parentField: parentId,expandAll: true,reserve: true, }" :row-config"{ keyField: id, isHover: true }"参考: vxe tree expandAll:true当table数据更新后无法展开,只有第一次能展开才能…
最新文章