数据库相关概念介绍
什么是数据库?
数据库是保存有组织的数据的容器(通常是一个文件或一组文件)。
理解数据库的一种最简单的办法是将其想象为一个文件柜。此文件柜是一个存放数据的物理位置,不管数据是什么以及如何组织的。
DBMS:database management system。说白了,就是数据库软件
ps:易混淆点
人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。
常见数据库管理系统
- 关系型数据库(RDBMS)
- 以多张二维表的方式来存储,又给多张表建立了一定的关系(关系型数据库)。
- 非关系型数据库(NoSQL:Not only SQL)
- 什么是NoSQL?
- 比如redis,查数据不是用sql语句。性能一般高于关系型数据库。很多NoSQL是以json格式进行存储数据的(如mongodb),但不是所有的非关系型数据库里面都是json格式。
- json:很有用,开发语言直接数据交流需要通过json,所有语言都支持json形式。这个叫序列化。
- 下图:左边是RDBMS,右边是NoSQL
- NoSQL的发展历史
- web1.0时代:企业提供内容,用户浏览,所以关系型数据库够用,并发并不高,所以不需要NoSQL。
- web2.0时代:核心是企业提供平台,用户参与提供内容,这个时代关系型数据库无法满足需求了。后来到2009年左右NoSQL开始发生。
- NoSQL的分类、特点、典型产品
- 1、键值(Key-Value)存储
- 特点:键值数据库就像传统语言中使用的哈希表。通过 Key 添加、查询或者删除数据。
- 优点:查询速度快。
- 缺点:数据无结构化,通常只被当作字符串或者二进制数据存储。
- 应用场景:内容缓存、用户信息比如会话、配置信息、购物车等,主要用于处理大量数据的高访问负载。
- NoSQL 代表:Redis、Memcached
- 2、文档(Document-Oriented)存储
- 特点:文档数据库将数据以文档的形式储存,类似 JSON,是一系列数据项的集合。每个数据项都有一个名称与对应的值,值既可以是简单的数据类型,如字符串、数字和日期等;也可以是复杂的类型,如有序列表和关联对象。
- 优点:数据结构要求不严格,表结构可变,不需要像关系型数据库一样需要预先定义表结构。
- 缺点:查询性能不高,缺乏统一的查询语法。
- 应用场景:日志、 Web 应用等。
- NoSQL 代表:MongoDB、CouchDB
- 3、列(Wide Column Store/Column-Family)存储
- 特点:列存储数据库将数据储存在列族(Column Family)中,将多个列聚合成一个列族,键仍然存在,但是它们的特点是指向了多个列。举个例子,如果我们有一个 Person 类,我们通常会一起查询他们的姓名和年龄而不是薪资。这种情况下,姓名和年龄就会被放入一个列族中,而薪资则在另一个列族中。
- 优点:列存储查找速度快,可扩展性强,更容易进行分布式扩展,适用于分布式的文件系统,应对分布式存储的海量数据。
- 缺点:查询性能不高,缺乏统一的查询语法。
- 应用场景:日志、 分布式的文件系统(对象存储)、推荐画像、时空数据、消息/订单等。
- NoSQL 代表:Cassandra、HBase...
- 4、图形(Graph-Oriented)存储
- 特点:图形数据库允许我们将数据以图的方式储存。
- 优点:图形相关算法。比如最短路径寻址,N 度关系查找等。
- 缺点:很多时候需要对整个图做计算才能得出需要的信息,分布式的集群方案不好做,处理超级节点乏力,没有分片存储机制,国内社区不活跃。
- 应用场景:社交网络,推荐系统等。专注于构建关系图谱。
- NoSQL 代表:Neo4j、Infinite Graph...
- RDBMS vs. NoSQL
- 1、功能、性能对比
- 2、特点对比
- 关系型特点:
- 1.二维表
2.传统企业一般用Oracle,收费方便技术支持。MySQL是开源的,很多互联网企业用,已被Oracle收购
3.数据存取是通过SQL(Structured Query Language结构化查询语言)
4.最大特点数据安全性方面强(ACID) - 非关系型:
- 做为关系型数据库的补充。
- 总结:
- 1、关系型数据库采用的是结构化方式存储数据,NoSQL采用的是键值对的方式存储数据。2、一个支持SQL语句,一个不支持。3、在考虑数据库的成熟度、管理及专业性等问题时,应优先考虑关系型数据库。在处理非结构化/半结构化的大数据时;在水平方向上进行扩展时;随时应对动态增加的数据项时可以优先考虑使用NoSQL数据库。
数据库产品介绍
数据库排名网站:
https://db-engines.com/en/ranking
Oracle
主要版本
市场应用
1、市场份额第一,趋势递减
2、市场空间:主要是传统企业
MySQL
主要版本
1.0 - 5.1 - 5.5 - 5.6 - 5.7 - 8.0
市场应用
1、中、大型互联网公司
2、市场空间:互联网领域第一
3、增长趋势明显
4、同源产品:MariaDB、PerconaDB
其他产品介绍
微软:SQLserver
微软和sysbase合作开发的产品,后来自己开发,windows平台。主要三、四线小公司,传统行业在用
IBM:DB2
市场占有量小。目前只有:国有银行(人行,中国银行,工商银行等)、中国移动应用
PostgreSQL
MongoDB
Redis
MySQL发展史
a. 1979年,报表工具Unireg出现。
b. 1985年,以瑞典David Axmark为首,成立了一家公司(AB前身),ISAM引擎出现。
c. 1990年,提供SQL支持。
d. 1999年-2000年,MySQL AB公司成立,并公布源码,开源化。
e. 2000年4月BDB引擎出现,支持事物。
f. 2008年1月16日 MySQL被Sun公司收购。
g. 2009年4月20日Oracle收购Sun公司,MySQL转入Oracle门下。