> 文章列表 > Linux 常用数据库

Linux 常用数据库

嘿,数据库这个话题可真是个大杂烩啊!你可能会觉得数据库就是个放数据的“仓库”,但它可比仓库复杂多了。首先,数据库分两种:关系型和非关系型(NoSQL)。关系型数据库就像个表格控,数据都整整齐齐地排列在二维表里,比如MySQL、Oracle这些家伙。它们的优点是结构清晰,容易理解,但缺点也很明显:处理海量数据时效率低,扩展性差。非关系型数据库则是个“自由派”,数据格式灵活,性能爆表,适合处理各种非结构化数据,比如Memcached、Redis、MongoDB等。不过,它们也有软肋,比如不支持SQL查询,学习成本高。

那么,问题来了:你该选哪种数据库呢?这得看你的需求。如果你需要处理结构化数据,关系型数据库是你的好伙伴;但如果你面对的是海量、非结构化数据,非关系型数据库才是你的菜。举个栗子,淘宝网就放弃了Oracle,转而使用MySQL,为啥?因为MySQL更轻量、成本低,适合互联网领域的高并发场景。

不过,别以为选对了数据库就万事大吉了。数据库的性能优化、安全管理、备份恢复等也都是个大坑。比如,Memcached虽然能加速数据读取,但如果缓存失效,数据库可能会被瞬间打爆。所以,了解每种数据库的优缺点只是第一步,如何在实际应用中扬长避短,才是真正考验你技术的时候。

总之,数据库的世界就像个迷宫,选对方向是第一步,走对路才是关键。你准备好跳坑了吗?

Linux 常用数据库

Linux 数据库

    • 1 什么是数据库?
      • 1.1 关系型数据库
      • 1.2 非关系型数据库(NoSQL)
    • 2 linux下常见关系型数据库
      • 2.1 Oracle 数据库
      • 2.2 MySQL 数据库
      • 2.3 MariaDB 数据库
      • 2.4 SQL Server 数据库
      • 2.5 PostgreSQL 数据库
    • 3 linux下常用非关系型数据库
      • 3.1 Memcached(Key-Value)
      • 3.2 Redis(Key-Value)
      • 3.3 MongoDB(Document-Web)

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 通过缓存经常被存取的对象或数据,从而减轻频繁读取数据库的压力,提高网站