zftang
作者zftang·2020-04-15 11:04
其它·小白一枚

Oracle与MySql数据库选型说明

字数 5126阅读 1319评论 0赞 0

1 数据库的选型原则

1.1 开发语言

依赖于项目锁使用的开发技术。例如,您是要以 ODBC 使用 .Net ,还是要以面向对象技术使用 Java ?如果实现的是纯关系型的开发典范,那么实际要使用的受支持的标准(和非标准) SQL 功能有多少?如果您要规划的是 OO 开发策略,那么数据库支持真正的面向对象吗?它是如何支持的?使用什么标准?在 SQL 方面,您需要什么功能?数据库支持这个功能吗?有些关系型数据库虽然声称支持对象开发,但实际上并不直接支持。这种非直接的体系结构将导致更多的事务处理故障,以及潜在的可升级性和性能问题。

另外,还需要确定自己的前端技术如何与后端进行“对话”。业务逻辑是放在客户机一端呢?还是放在服务器一端?使用哪些脚本语言?它们与后端服务器的兼容性如何?它们是快速应用开发( RAD )环境吗?

1.2 稳定可靠

数据库是企业应用的核心,稳定可靠的数据库可以保证企业的应用常年运行,而不会因为数据库的宕机而遭受损失。信息系统的稳定可靠是由多方面的因素构成的,包括网络、主机、操作系统、数据库以及应用软件等几方面,这些因素互相之间又有一定的依赖关系,因此,在选型中要通盘考虑这些问题。在数据库方面主要看数据库要具备灾难恢复、系统错误恢复、人为操作错误恢复等功能,同时要尽量降低数据库的计划内维护宕机时间。

1.3 可扩展

数据库必须具备高可扩展性,增强的管理功能可帮助数据库管理员 (DBA) 实现服务器的自动管理和集中管理。这也使得对远程服务器和应用程序的维护变得容易, DBA 无需访问每个站点。由复杂算法管理的服务器配置可动态对服务器使用方案的变化做出反应,从而使 DBA 可以将精力集中在数据库管理和优化等任务上。

1.4 安全性

数据库的安全性是指保护数据库以防止不合法的使用造成的数据泄露、更改或破坏。系统安全保护措施是否有效是数据库系统的重要指标之一。 数据库的安全控制主要通过用户标识与鉴别、存取控制、视图机制、审计、数据加密等机制完成。

1.5 性能 / 成本

测量数据库性能最常见的方法是 TPC 基准。 TPC 定义了数据库方案、数据量以及 SQL 查询。它指出,在这一数据库版本、平台、 操作系统 版本,以及这一内存和磁盘技术 / 容量条件下,每项事务的成本是多少 - 其中的事务可以是 TPC 测试中定义的任何数据库操作。

理论上来讲,这类基准旨在提供不同产品间的比较值,而在现实中,方案定义可能无法准确反映正在挑选的技术的使用的本质情况。其次,所有技术厂商发布的 TPC 基准都会超过以前发布的结果。这样, TPC 基准更大程度上反映的是为解决问题而投入的内存和 CPU 量,而不是数据库性能的任何真实表现。

另外,也可以请求在真实的生产环境中进行实际的比较测试,并且该环境应尽量贴近生产环境。

最后,在最终接受产品之前,应该以真实的环境对选中的技术执行实际测试或概念验证,这一点尤其重要。

2 MySql 总体说明

Ø MySql 是一个快速、多线程、多用户的 SQL 数据库服务器。几乎是免费的,支持正规的 SQL 查询语言和采用多种数据类型,能对数据进行各种详细的查询等。

Ø MySql 的核心程序采用完全的多线程编程。线程是轻量级的进程,它可以灵活地为用户提供服务,而不过多的系统资源。用多线程和 C 语言实现的 MySql 能很容易充分利用 CPU 。

Ø MySql 可运行在不同的操作系统下。简单地说, MySql 可以支持 Windows95/98/NT/2000 以及 UNIX 、 Linux 和 SUN OS 等多种操作系统平台。这意味着在一个操作系统中实现的应用可以很方便地移植到其他的操作系统下。

Ø MySql 有一个非常灵活而且安全的权限和口令系统。当客户与 MySql 服务器连接时,他们之间所有的口令传送被加密,而且 MySql 支持主机认证。

Ø MySql 支持 ODBC for Windows 。 MySql 支持所有的 ODBC 2.5 函数和其他许多函数,这样就可以用 Access 连接 MySql 服务器,从而使得 MySql 的应用被大大扩展。

Ø MySql 支持大型的数据库。虽然对于用 PHP 编写的网页来说只要能够存放上百条以上的记录数据就足够了,但 MySql 可以方便地支持上千万条记录的数据库。作为一个开放源代码的数据库, MySql 可以针对不同的应用进行相应的修改。

Ø MySql 拥有一个非常快速而且稳定的基于线程的内存分配系统,可以持续使用面不必担心其稳定性。事实上, MySql 的稳定性足以应付一个超大规模的数据库。

Ø 强大的查询功能。 MySql 支持查询的 SELECT 和 WHERE 语句的全部运算符和函数,并且可以在同一查询中混用来自不同数据库的表,从而使得查询变得快捷和方便。

Ø PHP 为 MySql 提供了强力支持, PHP 中提供了一整套的 MySql 函数,对 MySql 进行了全方位的支持。

3 Oracle 总体说明

Ø 能在所有主流平台上运行(包括 windows )。完全支持所有的工业标准。采用完全开放策略。可以使客户选择最适合的解决方案。对开发商全力支持。

Ø 平行服务器通过使一组结点共享同一簇中的工作来扩展 windownt 的能力 , 提供高可用性和高伸缩性的簇的解决方案。

Ø 如果 windowsNT 不能满足需要 , 用户可以把数据库移到 UNIX 中。

Ø 安全性方面,性能最高。

Ø 客户端支持及应用模式 ,多层次网络计算,支持多种工业标准,可以用 ODBC,JDBC,OCI 等网络客户连接式要求,可根据实际系统需求构造数据库。

Ø 采用标准的 SQL 结构化查询语言。

Ø 具有丰富的开发工具,覆盖开发周期的各阶段。

Ø 支持大型数据库,数据类型支持数字、字符、大至 2GB 的二进制数据,为数据库的面向对象存储提供数据支持。

Ø 具有第四代语言的开发工具( SQLFORMS 、 SQLREPORTS 、 SQL*MENU 等)。

Ø 具有字符界面和图形界面,易于开发。

Ø 通过 SQL*DBA 控制用户权限,提供数据保护功能,监控数据库的运行状态,调整数据缓冲区的大小。

Ø 分布优化查询功能。具有数据透明、网络透明,支持异种网络、异构数据库系统。并行处理采用动态数据分片技术。

Ø 支持客户机 / 服务器体系结构及混合的体系结构(集中式、分布式、客户机 / 服务器)。

Ø 实现了两阶段提交、多线索查询手段。数据安全保护措施:没有读锁,采取快照 SNAP 方式完全消除了分布读写冲突。自动检测死锁和冲突并解决。

Ø 数据安全级别为 C2 级(最高级)。

Ø 数据库内模支持多字节码制,支持多种语言文字编码。

Ø 具有面向制造系统的管理信息系统和财务系统应用系统。

Ø 在中国的市场份额最高。

4 Oracle 和 MySql 详细比较

序号比较方向OracleMySql结果
1开放性Oracle 能所有主流平台上运行(包括 windows)完全支持所有工业标准采用完全开放策略使客户选择适合解决方案对开发商全力支持,支持多种操作系统,社区活跃,具有丰富的研究渠道。不开源开源数据库,选择性大,对于具备开发实力的公司,开放性的优势大MySql>oracle
2并发性oracle使用行级锁,对资源锁定的粒度要小很多,只是锁定sql需要的资源,并且加锁是在数据库中的数据行上,不依赖与索引。是OLTP最好的数据库工具MySql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。Oracle > MySql
3类型选择大型数据库中小型数据库Oracle > MySql
4性能基于成本的优化器模型非常成熟 SQL访问路径丰富,支持复杂查询,具有完善的性能诊断手段 丰富的函数支持、支持复杂业务逻辑优化器较弱,不支持hash join,SQL访问路径单一,复杂查询支持较弱 性能诊断较弱Oracle > MySql
5一致性oracle支持serializable的隔离级别,可以实现最高级别的读一致性。每个session提交后其他session才能看到提交的更改。oracle通过在undo表空间中构造多版本数据块来实现读一致性,每个session查询时,如果对应的数据块发生变化,oracle会在undo表空间中为这个session构造它查询时的旧的数据块。MySql没有类似oracle的构造多版本数据块的机制,只支持read commited的隔离级别。一个session读取数据时,其他session不能更改数据,但可以在表最后插入数据。session更新数据时,要加上排它锁,其他session无法访问数据。Oracle > MySql
6事务性oracle很早就完全支持事务MySql在innodb存储引擎的行级锁的情况下才支持事务。Oracle > MySql
7扩展性集群架构 12.2支持sharding支持分片架构各有优势
8数据持久性oracle保证提交的数据均可恢复,因为oracle把提交的sql操作线写入了在线联机日志文件中,保持到了磁盘上,如果出现数据库或主机异常重启,重启后oracle可以考联机在线日志恢复客户提交的数据。默认提交sql语句,但如果更新过程中出现db或主机重启的问题,也许会丢失数据。Oracle > MySql
9提交方式oracle默认不自动提交,需要用户手动提交。MySql默认是自动提交。各有优势
10逻辑备份oracle逻辑备份时不锁定数据,且备份的数据是一致的。MySql逻辑备份时要锁定数据,才能保证备份的数据是一致的,影响业务正常的dml使用。Oracle > MySql
11热备份oracle有成熟的热备工具rman,热备时,不影响用户使用数据库。即使备份的数据库不一致,也可以在恢复时通过归档日志和联机重做日志进行一致的回复。myisam的引擎,用MySql自带的MySqlhostcopy热备时,需要给表加读锁,影响dml操作。innodb的引擎,它会备份innodb的表和索引,但是不会备份.frm文件。用ibbackup备份时,会有一个日志文件记录备份期间的数据变化,因此可以不用锁表,不影响其他用户使用数据库。但此工具是收费的。innobackup是结合ibbackup使用的一个脚本,他会协助对.frm文件的备份。Oracle > MySql
12sql语句的扩展和灵活性oracle在这方面感觉更加稳重传统一些。MySql对sql语句有很多非常实用而方便的扩展,比如limit功能,insert可以一次插入多行数据,select某些管理数据可以不加from。各有优势
13数据复制oracle:既有推或拉式的传统数据复制,也有dataguard的双机或多机容灾机制,主库出现问题是,可以自动切换备库到主库,但配置管理较复杂。MySql:复制服务器配置简单,但主库出问题时,丛库有可能丢失一定的数据。且需要手工切换丛库到主库。Oracle > MySql
14性能诊断oracle有各种成熟的性能诊断调优工具,能实现很多自动分析、诊断功能。比如awr、addm、sqltrace、tkproof等MySql的诊断调优方法较少,主要有慢查询日志。Oracle > MySql
15权限与安全oracle的权限与安全概念比较传统,中规中矩。 最高级别的SO安全认证MySql的用户与主机有关,感觉没有什么意义,另外更容易被仿冒主机及ip有可乘之机。Oracle > MySql
16分区表和分区索引oracle的分区表和分区索引功能很成熟,可以提高用户访问db的体验。MySql的分区表还不太成熟稳定。Oracle > MySql
17管理工具oracle有多种成熟的命令行、图形界面、web管理工具,还有很多第三方的管理工具,管理极其方便高效。MySql管理工具较少,在linux下的管理工具的安装有时要安装额外的包(phpmyadmin, etc),有一定复杂性。Oracle > MySql
18技术支持oracle出问题可以找客服,且从业人员多。MySql出问题自己解决,从业人员少Oracle > MySql
19产品授权收费开源免费MySql>oracle

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

0

添加新评论0 条评论

Ctrl+Enter 发表

作者其他文章

相关文章

相关问题

相关资料

X社区推广