MySQL 是一种关联数据库,关联数据库会将数据保存在不同表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。MySQL 所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双 “授权政策”:社区版、商业版。由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。由于其社区版的卓越性能,搭配 PHP (或 Python)、Nginx (或 Apache) 可组成良好的开发环境。
MySQL 在 2008 年被 Sun 以 10 亿美金所收购。MySQL 创始人 Michael Widenius 不满 Sun 开发团队脚步过慢,愤而离职成立开源数据库联盟,从现有 MySQL 程序代码中,开发出另一延伸分支版本,也就是名为 MariaDB (玛莉亚数据库) 的企业级开源数据库。
与其他大型数据库 (譬如:Oracle、DB2、SQL Server 等) 相比,MySQL 也有它的不足之处;但这丝毫不会减少它受欢迎的程度。
对于一般个人使用者和中小型企业而言,MySQL 提供的功能已绰绰有余;且由于 MySQL 是开放源码的,因此,可大大降低总体拥有成本。Linux 作为操作系统,Apache 和 Nginx 作为 Web 服务器,MySQL 作为数据库,PHP/Perl/Python 作为服务器端脚本解释器。由于这 4 个软件都是免费或开放源码的 (FLOSS);因此,以这种方式不用花一分钱(除人工成本外)就可建立一个稳定、免费的网站系统,被业界称为 “LAMP“ 或 “LNMP” 组合。
01、以 C/C++ 编写,并使用了多种编译器进行测试,保证源代码的可移植性。
04、支持多线程,可充分利用 CPU 资源。
05、优化的 SQL 查询算法,可有效提高查询速度。
06、既可作为一个单独应用程序应用在客户端服务器网络环境中,也可作为一个库而嵌入到其他软件中。
07、提供了多语言支持,常见编码 (譬如:中文 GB 2312、BIG5、日文 Shift_JIS 等) 都可用作数据表名和数据列名。
08、提供了TCP/IP、ODBC 和 JDBC 等多数据库连接途径。
09、提供用于管理、检查、优化数据库操作的管理工具。
10、支持大型数据库。可以处理拥有上千万条记录的大型数据库。
11、支持多种存储引擎。
12、MySQL 是开源的,所以无需支付额外费用。
13、MySQL 使用标准的 SQL 数据语言形式。
14、MySQL 对 PHP 有很好的支持,PHP 是目前最流行的 Web 开发语言。
15、Mysql 是可以定制的,采用 GPL 协议,你可以修改源码来开发自己的 MySQL 系统。
16、在线 DDL 更改功能,数据架构支持动态应用程序和开发人员灵活性。
17、复制全局事务标识,可支持自我修复式集群。
18、复制无崩溃从机,可提高可用性。
19、复制多线程从机,可提高性能。
存储引擎
01、MyISAM
MySQL 5.0 之前的默认数据库引擎,最常用。拥有较高的插入、查询速度,但不支持事务。
02、InnoDB
事务型数据库的首选引擎。支持 ACID 事务、支持行级锁定。MySQL 5. 5 起成为默认数据库引擎。
03、BDB
源自 Berkeley DB,事务型数据库的另一种选择。支持COMMIT 和 ROLLBACK 等其他事务特性。
04、Memory
所有数据置于内存的存储引擎,拥有极高的插入、更新、查询效率。但是会占用和数据量成正比的内存空间。且内容会在 MySQL 重启动时丢失。
05、Merge
将一定数量的 MyISAM 表联合形成一个整体,在超大规模数据存储时会很有用。
06、Archive
非常适合存储大量且独立、作为历史记录的数据。因为它们不经常被读取。Archive 拥有高效的插入速度,但其对查询的支持相对较差。
07、Federated
将不同 MySQL 服务器联接起来,逻辑上组成一个完整数据库。非常适合分布式应用。
08、Cluster/NDB
高冗余的存储引擎,用多台数据机器联合提供服务以提高整体性能和安全性。适合数据量大、安全、性能要求高的应用。
09、CSV
逻辑上由逗号分割数据的存储引擎。它会在数据库子目录里为每个数据表创建一个 .CSV 文件。这是一种普通文本文件,每个数据行占用一个文本行。CSV 存储引擎不支持索引。
10、BlackHole
黑洞引擎,写入的任何数据都会消失。一般用于记录 binlog 做复制的中继。
11、EXAMPLE
EXAMPLE 存储引擎是一个不做任何事情的存根引擎。它的目的是作为 MySQL 源代码中的一个例子,用来演示如何开始编写一个新存储引擎。同样,它的主要兴趣是开发者。EXAMPLE 存储引擎不支持索引。
此外,MySQL 的存储引擎接口定义良好。有兴趣的开发者可以通过阅读文档编写自己的存储引擎。
架构
1、 单点(Single)
适合小规模应用。
适合中小规模应用。
3、 集群(Cluster)
适合大规模应用。
1、 phpMyAdmin
phpMyAdmin 是由 php 写成的 MySQL 资料库系统管理程序。管理者可用 Web 界面管理 MySQL 资料库。
2、 phpMyBackupPro
也是由 PHP 写成的,可以透过 Web 界面创建和管理数据库。它可以创建伪 cronjobs,可以用来自动在某个时间或周期备份 MySQL 数据库。
3、 Navicat
4、 EMS MySQL Manager
一款高性能、带图形界面的 MySQL 数据库服务器系统管理、开发工具。它提供了大量工具以满足富有经验的用户所有要求。
5、 MySQL-Front
一款小巧的 MySQL 管理应用程序。支持多文档界面、语法突出、拖拽方式管理数据库和表格。
授权问题
MySQL 遵守的不只是 GPL 协议,而是双授权模式 (dual license)。即:开源项目使用 MySQL,需要遵守 GPL 协议;非开源项目使用 (即软件不打算开放源代码) MySQL,且该软件会用来销售,则需要向 MySQL 支付一定的 License 费用。
文件手册 bug
在MySQL 5.5.31 版中有人发现 Oracle 取消了其中的 GPL 协议,造成了一定不安。有开发者在 MySQL 程序 “臭虫网站” 上举报这项授权错误问题。随即,MySQL 工程服务总监 Yngve Svendsen 在网站上坦言:这的确是一个文件臭虫;因为 man 手册程序重新编译时套用了错误的授权内容。不过仍然有人认为:Oracle 取消开源授权,改用商业授权的 “这一天迟早是要到来的”,并寻求其他代替方案。
替代方案
随着 MySQL 被 Oracle 收购后,MySQL 的用户和开发者开始质疑开源数据库的命运,与此同时他们开始寻找替代品。
有文章写到了放弃 MySQL 的 5 大理由:
1、MySQL 不如其它关系型数据库管理系统那样成熟;
2、MySQL 是开源的...但只有近似而已;
3、MySQL 的性能无法与竞争对手相提并论;
4、MySQL 是 Oracle 所有的,而不是社区驱动的;
5、越来越多的强劲对手;
MariaDB
从 MySQL 转向 MariaDB 的代表厂家,包括:谷歌(2013 年 9 月)、Red Hat(2013 年 6 月)、维基百科(2013 年 4 月)
MySQL 在 2008 年被 Sun 以 10 亿美金收购后,MySQL 创始人 Michael Widenius 则不满 Sun 开发团队脚步过慢,愤而离职成立开源数据库联盟。另从现有 MySQL 程序代码中,开发出另一个延伸分支版本,也就是名为 MariaDB “玛莉亚数据库” 的企业级开源数据库。
玛莉亚数据库如同 MySQL 的影子版本,玛莉亚数据库是 MySQL 的一个分支版本(branch),而不是衍生版本(folk),提供的功能可和 MySQL 完全兼容。
PostgreSQL
从 MySQL 转向 PostgreSQL 的代表厂家:苹果(2011年)
PostgreSQL 是一个自由的对象-关系数据库服务器 (数据库管理系统)。PostgreSQL 支持大部分 SQL 标准并且提供了许多其他现代特性:复杂查询、外键、触发器、视图、事务完整性、MVCC。同样,PostgreSQL 可以用许多方法扩展。譬如:通过增加新数据类型、函数、操作符、聚集函数、索引方法、过程语言。且由于许可的灵活性,任何人都能以任何目的免费使用、修改、和分发 PostgreSQL,不管是私用、商用、还是学术研究使用。
PostgreSQL 也受 NoSQL 思想的启发,希望能够在今后可以给使用者更多可定制可调节的功能(不是说这个成熟的关系性数据库系统要向 NoSQL 转变)。
NoSQL
NoSQ (NoSQL = Not Only SQL ) 意即 “不仅仅是 SQL”,它是一项全新的数据库革命性运动。NoSQL 指的是非关系型数据库。随着互联网 web 2.0 网站的兴起,传统的关系数据库在应付 web 2.0 网站,特别是超大规模和高并发的 SNS 类型的 web 2.0 纯动态网站已经显得力不从心。暴露了很多难以克服的问题;而非关系型数据库,则由于其本身的特点得到了非常迅速的发展。
Oracle 免费版版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载;否则,将追究其法律责任。