Linux 数据库
1 什么是数据库?
数据库就是一个存放计算机数据的仓库,这个仓库是按照一定的数据结构(数据结构是指数据的组织形式或数据之间的联系)来对数据进行组织和存储的,可以通过数据库提供的多种方法来管理其中的数据。
1.1 关系型数据库
关系型数据库是一个结构化的数据库,采用了关系模型来组织数据的数据库。关系模型指的就是二维表格模型,而一个关系型数据库
就是由二维表及其之间的联系所组成的一个数据组织。
什么是结构化数据?
结构化数据指的是由二维表结构来逻辑表达和实现的数据,严格遵循数据格式与长度规范,也称作为行数据,特点为:数据以行为
单位,一行数据表示一个实体的信息,每一行数据的属性是相同的
关系型数据库完美契合结构化数据的特点,关系型数据库也是结构化数据最主要的存储与管理引擎。
关系型数据库的优点:
1.便于理解:二维表构造非常贴近逻辑,关系模型相对网状、层次等其他模型来说更容易理解
2.使用方便:通用的SQL语言使得操作关系型数据库非常方便
3.易于维护:全部由表结构组成,文件格式一致
4.数据稳定:数据持久化到磁盘,没有丢失数据风险
关系型数据库的缺点:
1.对于海量信息的查询效率教低,读写能力较差
2.网站高并发读写需求对于传统关系型数据库来说,硬盘I/O是一个很大的瓶颈
3.灵活度欠佳:为了保证数据库的ACID特性,必须尽量按照其要求的范式进行设计,关系型数据库中的表都是存储一个格式化的数据结构。
1.2 非关系型数据库(NoSQL)
所谓非关系型数据库,其实是相对于关系型数据库而言的,通常用于存储那些类型不固定的,也没有什么规律的数据。它严格上不是一种数据库,应该是一种数据结构化存储方法的集合,可以是文档或者键值对等。企业每天都产生大量的数据,非关系型数据库的应用非常广泛,应用场景也非常多,例如:办公文档、文本、图片、HTML、各类报表、视频音频等。
非关系型数据库的优点:
1.格式灵活:存储数据的格式可以是key,value形式、文档形式、图片形式等等,文档形式、图片形式等等,使用灵活,应用场景广泛
2.性能优:nosql是根据键值对的,不用历经sql层的分析,因此 性能非常高。
3.扩展性高:基于键值对,数据之间耦合度极低,因此容易水平扩展。
4.成本低:nosql数据库部署简单,基本都是开源软件
非关系型数据库的缺点:
1.不提供sql支持,学习和使用成本较高
2.无事务处理机制
3.数据结构相对复杂,复杂查询不容易实现
2 linux下常见关系型数据库
2.1 Oracle 数据库
Oracle 前身叫 SDL,由 Larry Ellison 和另两个编程人员在1977创办,他们开发了自己的拳头产品,在市场上大量销售,1979年,Oracle 公司引入了第一个商用 SQL关系数据库管理系统。 Oracle公司是最早开发关系数据库的厂商之一,其产品支持最广泛的操作系统平台。目前 Oracle 关系数据库产品的市场占有率数一数二。
Oracle (甲骨文)公司是目前全球最大的数据库软件公司,也是近年业务增长极为迅速的软件提供与服务商。
主要应用范围:传统大企业,大公司,政府,金融,证券等等。
2.2 MySQL 数据库
MySQL 数据库是一个中小型关系型数据库管理系统,软件开发者为瑞典 MySQL AB 公司。在 2008 年 1 月 16 号被 Sun 公司收购,后 Sun 公司又被 Oracle 公司收购。目前 MySQL 被广泛地应用 在 Internet 上的大中小型网站中由于其体积小、速度快、总体拥有成本低,尤其是开放源码这 一特点,许多大中小型网站为了降低网站总体拥有成本而选择了 MySQL 作为网站数据库,甚至国 内知名的淘宝网也选择弃用 Oracle 而更换为更开放的 MySQL 。
MySQL 数据库主要应用范围:互联网领域,大中小型网站,游戏公司,电商平台等等。
2.3 MariaDB 数据库
MariaDB 数据库管理系统是 MySQL 数据库的一个分支,主要由开源社区维护。开发这个 MariaDB 数据库分支的可能原因之一是:甲骨文公司收购了 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 的名字。
2.4 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 服务器平台的企业。
2.5 PostgreSQL 数据库
PostgreSQL是一种特性非常齐全的自由软件的对象-关系型数据库管理系统(ORDBMS),是以加州大学计算机系开发的POSTGRES,4.2版本为基础的对象关系型数据库管理系统。POSTGRES的许多领先概念只是在比较迟的时候才出现在商业网站数据库中。PostgreSQL支持大部分的SQL标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免费使用、修改和分发PostgreSQL
官网
https://www.postgresql.org/
3 linux下常用非关系型数据库
3.1 Memcached(Key-Value)
Memcached 是一个开源的、高性能的、具有分布式内存对象的缓存系统。通过它可以减轻数据库负载,加速动态的 Web 应用,最初版本由 LiveJoumal 的 Brad Fitzpatrick 在 2003 年开发完成。 目前全球有非常多的用户都在使用它来构建自己的大负载网站或提高自己的高访问网站的响应速 度。注意: Memcache 是这个项目的名称,而 Memcached 是服务器端的主程序文件名。
缓存一般用来保存一些经常被存取的对象或数据(例如,浏览器会把经常访问的网页缓存起来一 样),通过缓存来存取对象或数据要比在磁盘上存取快很多,前者是内存,后 者是磁盘。 Memcached 是一种纯内存缓存系统,把经常存取的对象或数据缓存在 Memcached 的内存中, 这些被缓存的数据被程序通过 API 的方式被存取, Memcached 里面的数据就像一张巨大的 HASH
表,数据以 Key-Value 对的方式存在。 Memcached 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站的响应速度 .
由于Memcached 为纯内存缓存软件,一旦重启所有数据都会丢失,因此,新浪网基于Memcached 开发了一个开源项目 MemcacheDB。通过为 Memcached 增加 Berkeley DB 的持久化存储机制和异步主辅复制机制,使 Memcached 具备了事务恢复能力、持久化数据存储能力和分布式复制能力,但是最近几年逐渐被其他的持久化产品替代例如Redis。
3.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 存储的不足,在部分场合可以对关系数据库有很好的补充作用。它提供了 PythonRuby,Erlang,PHP 客户端,使用很方便。
官方:
http://Redis.io/documentation
Redis 特点:
3.3 MongoDB(Document-Web)
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,类似 Json 的 Bjson 格式,因此可以存储比较复 杂的数据类型。MongoDB 最大的特点是他支持查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。它的特点是高性能、易部署、易使用,存储数据非常方便。
MongoDB 服务端可运行在 Linux、Windows 或 OS X 平台,支持32位和64位应用,默认端口为27017。推荐运行在64位平台。
McmgoDB 把数据存储在文件中(默认路径为:/data/db)。