浅析主流数据库

学习一项技术,就要分别从它的应用、场景、概念、特性层层渗透,数据库也是如此。

主流数据库分类

从MYSQL切换到MSSQL,体验还蛮流畅的,除了MSSQL的命令行还不会用以外…… 学习的过程中,都是举一反三、触类旁通,考起来也比较流畅,然后我在思考一个问题,为什么要有不同种类的数据库,这些主流数据库各有什么优势?在面对某些具体应用问题的时候,应当如何选择? 通过搜阅资料,得到了以下结果: 数据库分为两大类: 1、关系型数据库 2、非关系型数据库 (维基上还有一类叫键值数据库,但我不太清楚键值数据库和非关系型数据库的区别,如果有师傅知道的话,还请指教)

关系型数据库的优势: 1. 复杂查询可以用SQL语句方便的在一个表以及多个表之间做非常复杂的数据查询。 2. 事务支持使得对于安全性能很高的数据访问要求得以实现。

非关系型数据库的优势 1. 性能NOSQL是基于键值对的,可以想象成表中的主键和值的对应关系,而且不需要经过SQL层的解析,所以性能非常高。 2. 可扩展性同样也是因为基于键值对,数据之间没有耦合性,所以非常容易水平扩展。

简单来说,数据就是一个个实体,关系型数据库就是把一个个实体之间的关系梳理清楚,以关系为界限,分隔储存数据。而非关系型数据库就是关系型数据库的功能缩减版,储存模式较为平面化,只能描述很简单的关系,或者根本不描述关系。从数据结构的角度上,非关系型要比关系型更加扁平,以牺牲描述能力为代价,增强了存储性能。 失去了众多功能的非关系型数据库在安全性上也会有很多问题,近几年的漏洞分析文章中,如果能打到内网中的Redis数据库,那就意味着成功Getshell!

各个主流数据库详解

关系型数据库的代表有: 1. MYSQL 2. MSSQL 3. PostgreSQL 4. Microsoft Access 5. Oracle 非关系型数据库的代表有: 1. BigTable 2. Cassandra 3. MongoDB 4. CouchDB 5. LevelDB 6. Redis #### 关系型数据库 ##### MySql 优点: 1. 使用C和C++编写,在数据量较小的情况下具有强悍的性能 2. 开源 3. 兼容性,支持几乎所有的平台,为几乎所有的编程语言提供了API

缺点: 1. 功能相较于MSSQL和Oracle来说较少,当处理大规模数据时比较吃力。 2. 不会再发展,09年Mysql被卖给了甲骨文(Oracle那个公司),收购后的一系列措施相当于阻断了Mysql的开源发展之路。目前来说,MYSQL的性能还没有过时,但之后就不一定了。当然,市面上出现了两个Mysql的替代品:MariaDB和Percona Server,其中前者已经在英文维基中替代了Mysql的地位,所以更有希望成为今后的'Mysql'。

适用人群: 个人用户以及小型企业

MSSQL

限于Win平台下的数据解决方案,MYSQL是单纯的数据库储存,MSSQL是一套数据解决方案,在长期使用中比起Mysql有很大的优势。在MSSQL的组建中甚至还专门有一个Profiler专门地指导优化。这也是同为关系型数据库,为什么MSSQL比MYSQL更有能力处理大规模数据的原因。

优点: 1. 可视化操作 2. 集成化管理,一整套的数据解决方案可不是开玩笑的 3. 安全性,一套解决方案下来,比较省心

缺点: 1. 付费,一分钱一分货,这没什么好说的 2. 平台限制,离开win之后就是废柴

适用人群: 钱多但没人的中型企业,比如天朝的体制机关,23333 这里的没人指的是没有厉害的技术人员,没有办法自己调整数据库架构

DB2

IBM旗下的大型数据库 优点: 1. 大数据处理方面 缺点: 1. 适用性和用户量比不上MYSQL、MSSQL、Oracel 2. 同样是付费的巨无霸,令人生畏。

Microsoft Access

没用过,同样微软旗下,更侧重于单用户,配合Excel有奇效。 优点: 1. 可视化 2. 图表化,配合Excel有奇效 3. 单用户 缺点: 1. 多用户使用体验极差

使用人群 Win环境下的开发者&极客

FileMaker

没用过,可以理解为Mac版的ACCESS

优点: 1. 可视化 2. 单用户

缺点: 1. 多用户使用体验极差

使用人群 Win环境下的开发者&极客

Oracle

没用过,据说为只金主服务……

优点: 1. 健壮性 2. 安全性 3. 实时性 4. 数据分析能力

缺点: 1. 贵 2. 贵 3. 贵

适用人群: 银行、金融、零售、物流,这些金主对可用性、健壮性、安全性、实时性要求极高,同时也需要一定的数据分析能力,说白了,就是一个字,稳~

PostgreSQL

没用过

优点: 1. 物理环境中的稳定性较强 2. 高并发下,负载接近极限时性能完爆Mysql

缺点: 没用过,所以不清楚

非关系型数据库详解

由于只玩过Redis,也没深入了解过性能之列的东西,就不过多指点了,看个热闹就好~ ##### BigTable Google旗下,高性能、高扩展,适用于云计算 PS:NoSQL是指不同于传统关系型数据库的数据库种类集合,一般具有水平可扩展性等特性 ##### Cassandra 是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集Google BigTable的数据模型与Amazon Dynamo的完全分布式架构于一身。Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩展性和性能, ##### MongoDB 用文档来组织数据,不需要严格的结构。(JSON,使用Python等语言去调用的话会很方便) High performance,高性能 High availability,高可用,比如复制 (Replica set) Easy scalability,易扩展,比如Sharding Rich query language,富查询 ##### CouchDB Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库"[1]。它是一个使用JSON作为存储格式,JavaScript作为查询语言,MapReduce和HTTP作为API的NoSQL数据库。其中一个显著的功能就是多主复制。CouchDB的第一个版本发布在2005年,在2008年成为了Apache的项目。 ##### Redis 基于内存的键值数据库 优点: 1. 快,贼快

缺点: 1. 安全性,由于一般被用作中间件,所有安全性很少被考虑,本身的安全架构好像也有很多问题 2. 功能极少,不建议当做数据库去用,因为没那么大内存,一般被用在一些特殊服务上,比如SESSION的发放和存储~

适用人群: 漏洞平台厂商,如果你使用了Redis,并没有做任何安全设置,请联系我~23333

MongoDB

一个介于关系型与非关系型之间的数据库,是非关系型数据库中功能最丰富、最像关系数据库的。 使用内存映射文件 名字起得很漂亮~

总结

写于2017/12/04 由于自己太菜了,只能写道这个份上,之后肯定会继续完善,希望写到最后能给DMA们的入门之路提供一点点借鉴意义。