数据库对比:
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存储 |