开源时代程序员@IT·互联网

MySQL的对手有哪些

2017-10-18  本文已影响155人  追那个小女孩

MySQL是当前主流的关系型数据库,他易上手、性能ok且功能强大,但是他也有自己短手的地方,比如说大规模数据存储、分布式较差等各种问题。除了MySQL之外,其他的数据库都有所耳闻,本文收集了其他的主流数据库。

行存储和列存储

存储模型

同样一张数据表,上图下方表示了两种模型的存储方式的不同:

列存储查询方式

关键步骤如下:

  1. 去字典表里找到字符串对应数字(只进行一次字符串比较)。
  2. 用数字去列表里匹配,匹配上的位置设为1。
  3. 把不同列的匹配结果进行位运算得到符合所有条件的记录下标。
  4. 使用这个下标组装出最终的结果集。
    除了查询效率之外,我们还能看到,列存储方式采用了数据字典的方式对数据进行了压缩,这也是为什么列存储除了查询效率高之外,还有数据压缩比大的原因之一。

以上内容摘自:几张图看懂列式存储

MySQL

MySQL

mysql是很经典的一款数据库,他具备以下特性:

  1. 行存储模型,保证数据完整性
  2. 支持事务,保证写操作的原子性和一致性
  3. 支持表分区,能一定程度上优化读取性能
  4. 支持存储过程、触发器、定时器等各种实用的功能

要说mysql的好处就要跟其他的对比来看,不然光说一个体现不出好来,下面拿几个数据库来做一下对比,顺便了解一下数据库的生态。

MariaDB

MariaDB

这个是跟MySQL最像的,有MySQL的创始人开发且维护的一条MySQL的开源分支,创建的原因是担心Oracle收购之后会有闭源的风险,所以就因此而诞生。

他跟MySQL基本上是一模一样,完全兼容MySQL。10.x版本发布之后,使用XtraDB代替了InnoDB,并且他支持非阻塞操作和进度报告(InnoDB写数据的时候是阻塞行的),先后有一些开源项目——比如Fedora,维基媒体基金会等使用MariaDB替代了MySQL。

InfoBright

InfoBright DB

InfoBright是一个基于MySQL的数据仓库存储方案。跟MySQL相比,他有以下特点:

分析看来,优点和缺点都符合数据仓库的特性,容量大,查询效率高,但是并发性能低,写数据不方便,第三点是让我有点意外的,不支持横向扩展,这样使用起来到后面会有很大的问题。

PostgreSQL

PostgreSQL

PostgreSQL是一款列式存储的数据库,他跟MySQL最大的区别还是不是在存储方式上,而是他是一款面向对象的存储方案,他功能强大,支持全文搜索,支持json数据索引,支持restAPI,这也是他最大的特点。

同MySQL相比,他的特点在于他是一款列式存储方案,所以写性能比MySQL要差一些,但是读性能和数据压缩效率比MySQL高,MySQL那些数据存储的诟病——比如说emoji、text等都需要另外配置才能实现的特点,在postgreSQL这里都得以解决。

MongoDB

MongoDB

一款基于文件存储的NoSQL数据库。

NoSQL指的是Not Only SQL,费关系型数据库,mongoDB作为一款最流行的NoSQL数据库,具有以下特点:

简单来说,NoSQL最大的特点就是分布式,易拓展,查询效率高,且架构灵活,没有固定的数据结构。缺点在于支持的查询方式较少,一般用的最多的就是键值对查询,这点也是他应用的最多的地方。

比如说我有一个需求是要在一个庞大的数据集合中根据id查出对应的记录,这种场景就是NoSQL大展身手的地方。

Redis

Redis

Redis是一款内存数据库,这是他跟上面那些数据库最大的不同,是他只支持key-value存储,并且他所有的数据都是放在内存里面的,一旦服务挂掉,如果没有备份,数据是恢复不了的。
相比于MySQL,他比NoSQL的更加“不合群”,可以理解为他跟MySQL是不存在什么可比性的,双方是互补的一种存在。我们经常用到的应用场景是redis作为缓存,提高mysql的查询速度,因为他读写速度快,而mysql则是真正存储数据的地方,因为他的数据是持久化的,并且支持各种查询方式。

以上就是我对目前主流数据库的一些拙见,有什么说的不恰当的地方欢迎大牛帮忙指出。

上一篇 下一篇

猜你喜欢

热点阅读