数据库 之 数据库对比

数据库对比:

1.常用关系型数据库对比:

数据库 优点 缺点 使用场景
MySQL数据库 1.使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性;
2.支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统;
3.为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等;
4.支持多线程,充分利用CPU资源;
5.价格便宜:Mysql是开源的,所以不需要支付额外的费用;
6.MySQL使用标准的SQL数据语言形式;
7.Mysql对PHP有很好的支持,PHP是目前最流行的Web开发语言。
1.比较难学;
2.MySQL也缺乏一些存储程序的功能;
3.使用缺省的ip端口,但是有时候这些ip也会被一些黑客闯入;
4.使用myisam配置,如果你不慎损坏数据库,结果可能会导致所有的数据丢失。
广泛地应用在Internet上的中小型网站中
LAMP(Linux+Apache+Mysql+Php)
mysql的优势在于免费,如果业务系统数据库不是极其庞大,可用mysql
Oracle数据库 1.能在所有主流平台上运行(包括 windows)。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持;
2.安全性方面,性能最高;
3.采用标准的SQL结构化查询语言;
4.具有丰富的开发工具,覆盖开发周期的各阶段;
5.支持大型数据库,数据类型支持数字、字符、大至2GB的二进制数据,为数据库的面向对象存储提供数据支持;
6.具有字符界面和图形界面,易于开发;
7.具有数据透明、网络透明,支持异种网络、异构数据库系统。并行处理采用动态数据分片技术;
8.支持客户机/服务器体系结构及混合的体系结构(集中式、分布式、客户机/服务器);
9.数据安全保护措施:没有读锁,采取快照SNAP方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。数据安全级别为C2级(最高级);
10.在中国的销售份额占50%以上,市场份额高
1.管理维护麻烦一些;
2.数据库崩溃后恢复很麻烦,因为他把很多东西放在内存里;
3.数据库连接要慢些,最好用连接池;
4.大对象不好用,vchar2字段太短,不够用;
5.管理员的工作烦,且经验非常重要;
6.对硬件的要求很高;
7.价格昂贵。
大部分企事业单位都用oracle,在电信行业占用最大的份额。
SQL Server数据库 1.安全性和可用性高;
2.超快的性能;
3.企业安全性;
4.快速的数据发现
5.方便易用;
6.高效的数据压缩功能;
7.集成的开发环境。
1.开放性。只能运行在微软的windows平台,没有丝毫的开放性可言;
2.可伸缩性,并行性。并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限;
3.性能稳定性。SQLServer当用户连接多时性能会变的很差,并且不够稳定;
4.使用风险。SQLServer完全重写的代码,经历了长期的测试,不断延迟,许多功能需时间来证明。并不十分兼容早期产品。使用需要冒一定风险;
5.客户端支持及应用模式,只支持C/S模式;
6.安全性。Oracle的安全认证获得最高认证级别的ISO标准认证,而SQL Server并没有获得什么安全认证。
主机操作系统为window,主要用于web网站的建设,承载中小型web后台数据。在租赁的虚拟主机中一般会预安装SQL Server作为数据库软件。
PostgreSQL 1.PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步。
2.PG 性能高速度快。任何系统都有它的性能极限,在高并发读写,负载逼近极限下,PG的性能指标仍可以维持双曲线甚至对数曲线,到顶峰之后不再下降。
3.PG 多年来在 GIS 领域处于优势地位,因为它有丰富的几何类型,实际上不止几何类型,PG有大量字典、数组、bitmap 等数据类型。
4.PG 的“无锁定”特性非常突出,甚至包括 vacuum 这样的整理数据空间的操作,这个和PGSQL的MVCC实现有关系。PostgreSQL 是唯一支持事务、子查询、多版本并行控制系统、数据完整性检查等特性的唯一的一种自由软件的数据库管理系统
5.PG对数据量大的文本以及SQL处理较快,可以使用函数和条件索引,这使得PG数据库的调优非常灵活。
1.关于mvcc 的多版本控制。会生成很多个版本。定期要清理
2.pg的分布式集群。bug很多实用需要谨慎
3.pg数据库的并发性问题:pg采用抢占资源的方式,如果有一个大的SQL在跑,可能就会阻塞其他的进程,不管其他的进程是小SQL还是大SQL。好在pg有个优先级设置,还能变通一下。
4.pg的数据库扩容问题:扩容花费的时间很长。
5.pg的segment和mirror同步问题:某个实例有问题,如果是在线恢复,特别慢。 如果把所有的应用停掉则速度还算可以。
OLAP数据库,适用于电信、金融的分析
SQLlite 1.源代码不受版权限制,真正的自由,开源和免费.
2.无服务器,不需要一个单独的服务器进程或者操作的系统
3.一个SQLite 数据库是存储在一个单一的跨平台的磁盘文件
4.零配置,因为其本身就是一个文件,不需要安装或管理,轻松携带
5.不需要任何外部的依赖,所有的操作等功能全部都在自身集成.
6.轻量级,SQLite本身是C写的,体积很小,经常被集成到各种应用程序中.
1.缺乏用户管理和安全功能
2.只能本地嵌入,无法被远程的客户端访问,需要上层应用来处理这些事情;
3.不适合大数据
4.适合单线程访问,对多线程高并发的场景不适用;
5.各种数据库高级特性它都不支持,比如管理工具、分析工具、维护等等;
小型网站、嵌入式设备、数据库教学、本地应用程序
DB2数据库 1.能在所有主流平台上运行(包括windows)。最适于海量数据;
2.具有很好的并行性。DB2把数据库管理扩充到了并行的、多节点的环境;
3.获得最高认证级别的ISO标准认证;
4.客户端支持及应用模式;
5.跨平台,多层结构,支持ODBC,JDBC等客户;
6.操作简单,同时提供GUI和命令行,在windowsNT和unix下操作相同。
1.在巨型企业得到广泛的应用,向下兼容性好。风险小。 性能较高适用于数据仓库和在线事务处理。DB2 超大型数据库,与ORACLE类似 ,数据仓库和数据挖掘相当的不错,特别是集群技术可以使DB2的可扩性能达到极致。

2.常用非关系型数据库对比:

数据库 优点 缺点 使用场景
Redis 1、Redis不仅仅只支持简单的K-V形式的数据存储,还支持list、set、hash、zset等等集合类数据的存储;
2、Redis支持实时的数据备份,即使宕机,也可以把数据恢复过来;
3、Redis支持数据的持久化,可以存放在内存memory中的数据直接保存在磁盘上;
数据库容量受到物理内存的限制,因此不便对海量数据进行高性能读写,适用场景局限在数据量较小的高性能操作和运算上; 查找最新的回复、排行问题、缓存、删除过期数据
MemCache 1、稳定。
2、配置简单
3、速度快
4、分布式扩展
1.不能持久化存储
2.存储数据有限制:1M 【大于1M,认为就行分割】(内存碎片)
3.mm存储数据只能key-value
4.集群数据没有复制和同步机制 【崩溃不会影响程序,会从数据库中取数据】
5.内存回收不能及时 LRU(算法):未使用内存》过期内存》最近最少使用内存 这是惰性删除
分布式应用、数据库前段缓存、服务器间数据共享
MongoDB数据库 1、文档结构的存储方式,能够更便捷的获取数据
2、内置GridFS,支持大容量的存储
3、内置Sharding,分片简单
4、海量数据下,性能优越
5、支持自动故障恢复(复制集)
1.不支持事务操作
2.占用空间过大
3.MongoDB没有如MySQL那样成熟的维护工具
4.无法进行关联表查询,不适用于关系多的数据
5.复杂聚合操作通过mapreduce创建,速度慢
6.模式自由, 自由灵活的文件存储格式带来的数据错误
各种应用服务的日志存储、敏捷开发、地理位置信息存储、json存储
原文地址:https://www.cnblogs.com/caiyongliang/p/13719347.html