为了实现这些焦点功能,通常数据库会包罗以下焦点组件: a. 存储管理
数据用什么样的方式来组织、存储,是key-value还是关系型,是按行存还是按列存,支不支持压缩,支不支持删除和修改,支持什么样的数据类型和存储接口,Posix还是对象存储。是否要支持计算存储分离,是否要支持分布式存储,是否支持事物处理,是否支持多副本,接纳什么算法来加速数据的检索(索引)等等。存储管理是数据库的焦点组件,解决了存储管理问题,数据库的问题就解决了一半了。
b. 查询优化器
要提高数据查询的服从,数据库必须找到一条最优化的执行路径,好比,查询时是否需要使用索引,假如有多个索引,应该选择哪一个,假如数据分布在差别的存储单位(表、聚集等)里,应该按照什么顺序来访问服从最高等等。优化器面对的问题可能是一个极其复杂的路径规划问题,需要它在很短的时间里计算出最优路径,需要大量焦点优化算法。属于数据库中复杂程度最高的部分。
举个例子,你要带着全家人,包罗老人、小孩一起从上海去海南旅行,要制作一个性价比最好、家人满意度最高的计划,那么在计划时需要考虑哪些因素呢,起首,怎么去,是开车去,还是火车去,还是飞机去。开车,路上要花多久,中心需要休息反复,你和太太有没有时间,老人孩子是不是受得了,汽油费用,过盘费用;飞机,怎么去机场,行李有多少,带不带的下,机票有没有打折,下了飞机怎么办等等。住什么酒店,去什么景点,老人喜欢去人多的人文景观,太太喜欢安静的地方和方便购物的地方,小孩喜欢有游乐场的地方,要不要酒店+景点一起订,会不会有优惠,要不要租车,租什么车…说到这里,是不是可以体会一个查询优化器需要考虑的问题有多少?
固然,这部分工作可以有相对简单的实现(基于规则),好比太太说了,时间确定、飞机往返、五星酒店、带私人沙岸。这样计划就会简单很多,也可以复杂到不可思议(基于机器学习、基于实际开销等等),太太说你全权负责,详细时间不确定,大概在8月-9月,要少费钱多办事,多做调研,找一个最优方案。那么做这个计划就会非常复杂,需要的支持决议信息就会非常多。这样做出来的决议大概率相对会优化,比基于规则实现的计划能顺应更多场景。 c. 执行模块
优化器做好了执行计划后,接下来就会有执行的模块按照执行计划对数据进行干系的计算,包罗数据的存取、常规的加减乘除、排序、平均值、哈希,也会包罗一些机器学习的算法,数据的压缩/解压缩,末了将计算完成的效果返回给客户端。
d. 内部管理和调度
数据库要正常的工作,还会需要一些内部协调管理的模块,好比,内存和存储同步,存储空间整理,元数据管理,集群状态检测,容错和故障规复等。 e. 管理工具和接口
为了提高易用性,数据库都需要提供一套管理工具,好比备份/规复、状态检测、运行时监控、资源隔离、权限管理、安全审计、自定义接口、各种数据访问接口等。
4.数据库发展和预测
随着时间的推移,开源数据库在中低端应用中逐渐盛行起来,占据了很大的市场份额。开源数据库具有免费使用、配置简单、稳定性好、性能优良等特点,而 MySQL 数据库正是开源数据库中的良好代表。
开源全称为“开放源代码”。很多人以为开源软件最明显的特点是免费,但实际上并不是这样的,开源软件最大的特点应该是开放,也就是任何人都可以得到软件的源代码。可以在源代码的基础上加以修改学习,以致重新发放,固然是在版权限制范围之内。不清楚的读者可以参考《开源就等于免费吗?用究竟来说话》一节。
MySQL 是最盛行的数据库之一,是一个免费开源的关系型数据库管理体系,但也不意味着该数据库是完全免费的。MySQL 由瑞典 MySQL AB 公司开辟,目前属于 Oracle 公司。MySQL 得当中小型软件,被个人用户以及中小企业青睐。
针对差别的用户,MySQL 分为两个版本:
MySQL Community Server(社区版):该版本是自由下载且完全免费的,但是官方不提供技能支持。
MySQL Enterprise Server(企业版):该版本是收费的,而且不能下载,但是该版本拥有美满的技能支持(官方提供电话技能支持)。
留意:MySQL Cluster 重要用于架设群服务器,需要在社区服务或企业版的基础上使用。
MySQL 的定名机制由 3 个数字和 1 个后缀构成,例如 mysql-5.7.20:
第 1 个数字“5”是主版本号,用于描述文件的格式,所有版本 5 的发行版都有相同的文件夹格式。
第 2 个数字“7”是发行级别,主版本号和发行级别组合在一起便构成了发行序列号。
第 3 个数字“20”是在此发行系列的版本号,随每次新发行的版本递增。通常选择已经发行的最新版本。
在 MySQL 开辟过程中,同时存在多个发布系列,每个发布系列的成熟度处在差别阶段。
MySQL 5.7 是最新开辟的稳定(GA)发布系列,是将执行新功能的系列,目前已经可以正常使用。
MySQL 5.6 是比较稳定的(GA)发布系列,只针对毛病修复重新发布,不增加会影响稳定性的新功能。
MySQL 5.1 是一个稳定的(产物质量)发布系列,只针对严重毛病修复和安全修复重新发布,不增加影响该系列稳定性的重要功能。
留意:对于 MySQL 4.1 等低于 5.0 的老版本,官方将不再提供支持。所有发布的 MySQL 版本已经颠末严酷尺度的测试,可以保证其安全可靠地使用。针对差别的操作体系,读者可以在MySQL官方下载页面(http://dev.mysql.com/downloads/)下载相应的安装文件。
MySQL的特点、上风
MySQL 数据库管理体系具有很多的上风,下面总结了其中几种。
1)MySQL 是开放源代码的数据库
MySQL 是开放源代码的数据库,任何人都可以获取该数据库的源代码。这就使得任何人都可以修正 MySQL 的缺陷,而且任何人都能以任何目标来使用该数据库。MySQL 是一款可以自由使用的数据库。
2)MySQL 的跨平台性
MySQL 不但可以在 Windows 系列的操作体系上运行,还可以在 UNIX、Linux 和 Mac OS 等操作体系上运行。因为很多网站都选择 UNIX、Linux 作为网站的服务器,以是 MySQL 的跨平台性保证了其在 Web 应用方面的上风。固然微软公司的 SQL Server 数据库是一款很良好的商业数据库,但是其只能在 Windows 系列的操作体系上运行。因此,MySQL 数据库的跨平台性是一个很大的上风。
3)价格上风
MySQL 数据库是一个自由软件,任何人都可以从 MySQL 的官方网站上下载该软件,这些社区版本的 MySQL 都是免费试用的,纵然是需要付费的附加功能,其价格也是很便宜的。相对于 Oracle、DB2 和 SQL Server 这些价格昂贵的商业软件,MySQL 具有绝对的价格上风。
4)功能强大且使用方便
MySQL 是一个真正的多用户、 多线程 SQL 数据库服务器。它可以或许快速、有效和安全的处理大量的数据。相对于 Oracle 等数据库来说,MySQL 的使用黑白常简单的。MySQL 重要目标是快速、健壮和易用。
MySQL 与常用的主流数据库 Oracle、SQL Server 相比,重要特点就是免费,而且在任何平台上都能使用,占用的空间相对较小。但是,MySQL 也有一些不足,好比对于大型项目来说,MySQL 的容量和安全性就略逊于 Oracle 数据库。
5.MySQL实用于哪些场景?
MySQL 是目宿世界上最盛行的开源关系数据库,大多应用于互联网行业。好比,在国内,各人所熟知的百度、腾讯、淘宝、京东、网易、新浪等,国外的 Google、Facebook、Twitter、GitHub 等都在使用 MySQL。社交、电商、游戏的焦点存储往往也是 MySQL。
任何产物都不可能是万能的,也不可能实用于所有的应用场景。那么 MySQL 到底实用于哪些场景又不实用于哪些场景呢?
1. Web 网站体系
Web 网站开辟者是 MySQL 最大的客户群,也是 MySQL 发展史上最为重要的支持力量。
MySQL 之以是能成为 Web 网站开辟者们最青睐的数据库管理体系,是因为 MySQL 数据库的安装配置都非常简单,使用过程中的维护也不像很多大型商业数据库管理体系那么复杂,而且性能精彩。还有一个非常重要的原因就是 MySQL 是开放源代码的,完全可以免费使用。
2、日志记载体系
MySQL 数据库的插入和查询性能都非常的高效,假如计划的好,在使用 MyISAM 存储引擎的时候,两者可以做到互不锁定,达到很高的并发性能。以是,对需要大量的插入和查询日志记载的体系来说,MySQL 黑白常不错的选择。好比处理用户的登录日志,操作日志等,都黑白常得当的应用场景。
3、数据仓库体系
随着现在数据仓库数据量的飞速增长,我们需要的存储空间越来越大。数据量的不停增长,使数据的统计分析变得越来越低效,也越来越困难。下面是几个重要的解决思路。
1)接纳昂贵的高性能主机以提高计算性能,用高端存储设备提高 I/O 性能,效果理想,但是成本非常高;
2)通过将数据复制到多台使用大容量硬盘的廉价 PC Server 上,以提高团体计算性能和 I/O 能力,效果尚可,存储空间有一定限制,成本低廉;
3)通过将数据水平拆分,使用多台廉价的 PC Server 和本地磁盘来存放数据,每台机器上面都只有所有数据的一部分,解决了数据量的问题,所有 PC Server 一起并行计算,也解决了计算能力问题,通过中心代理程序调配各台机器的运算任务,既可以解决计算性能问题又可以解决 I/O 性能问题,成本也很低廉。
在上面的三个方案中,第二和第三个的实现,MySQL 都有较大的上风。通过 MySQL 的简单复制功能,可以很好的将数据从一台主机复制到另外一台 ,不但仅在局域网内可以复制,在广域网同样可以。
固然,很多人可能会说,其他的数据库同样也可以做到,不是只有 MySQL 有这样的功能。确实,很多数据库同样能做到,但是 MySQL 是免费的,其他数据库大多都是按照主机数目大概 cpu 数目来收费,当我们使用大量的 PC Server 的时候,License 费用相当惊人。以是第一个方案,基本上所有数据库体系都可以或许实现,但是其高昂的成本不是每一个公司都可以或许承担的。
4、嵌入式体系
嵌入式环境对软件体系最大的限制是硬件资源非常有限,在嵌入式环境下运行的软件体系,必须是轻量级低消耗的软件。
MySQL 在资源的使用方面的伸缩性非常大,可以在资源非常充裕的环境下运行,也可以在资源非常少的环境下正常运行。它对于嵌入式环境来说,是一种非常合适的数据库体系,而且 MySQL 有专门针对于嵌入式环境的版本。
而且,MySQL 的定位是通用数据库,各种类型的应用一样平常都能利用到 MySQL 存取数据的上风。业内生产实践证实,MySQL 更得当中小型企业。以目前的软硬件产物水平来看,假如数据超过几个 TB 将难以高效利用 MySQL。
MySQL 可以作为传统的关系型数据库产物使用,也可以当作一个 key-value 产物来使用。由于它具有良好的灾难规复功能,因此相对于目前市场上的一些 key-value 产物会更有上风。
6.学MySQL前,需要相识这些数据库专业术语