返回介绍

RDBS 比较

发布于 2024-09-26 01:06:45 字数 5488 浏览 0 评论 0 收藏 0

模式 Schema

模式(Schema): 是数据库的组织和结构,schemas and schemata 都可以作为复数形式。模式中包含了 schema 对象,可以是表(table)、列(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key) 等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系。为了区分不同的集合(数据库/Schema 对象),就需要给 不同的集合起不同的名字,默认情况下一个用户对应一个集合,用户的 schema 名等于用户名,并作为该用户缺省 schema。

ISO/IEC 9075-1 SQL 标准中将 schema 定义为描述符的持久命名集合(a persistent, named collection of descriptors)。不同 RDBS 对 Schema 的定义不同。

表格 14 Schema 在 RDBS 里的区别

DB含义
MySQL概念上,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。物理上, 模式与数据库是同义的。
OralceOracle 的 schema 与数据库用户密切相关。schema 是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的 schema。某些对象可以存储在数据库中,但不能存储在 schema 中。
PostgreSQL一个数据库可以包含多个 Schema,不同 schema 下可以有相同名称的表、函数等对象且互相不冲突。Schema 用来管理一组对象,相当于 MySQL 里的数据库概念。PG 里的 Schema 是指定的表集合,可以包含视图,索引,序列,数据类型,运算符和函数。
SQL Serverschema 中包含了数据库的表,字段,数据类型以及主键和外键的名称。

备注:都支持 CREATE SCHEMA 语句。

多版本并发控制 MVCC

MVCC (Mutil-Version Concurrency Control),就是多版本并发控制。 MVCC 是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。

MVCC 实现主要有两种方法:回滚法和插入法。

表格 15 MVCC 实现的两种方法比较

 方法一方法二
简述写数据时,把旧数据移到一个单独的地方如回滚段,读时从回滚段取旧数据。写数据时,旧数据不删除,把新数据插入。
实现例子MySQL INNODB、OraclePostgreSQL
优点 查询快,不影响插入。
缺点节约存储空间。旧数据占用空间。

MySQL 和 PostgreSQL

表格 MySQL 和 PostgreSQL 比较

 MySQLPostgreSQL
简介  
比较版本5.7.69.4.1
ANSI 标准兼容性如果客户喜欢,他们就会支持非标准扩展一开始就将标准构建到平台
ACID 遵从性9 个存储引擎,但只有 MyIsam 和 InnoDB 与大部分用户有关。其中 InnoDB 为默认存储引擎 。一个存储引擎
无锁表修改表级锁行级锁
子查询较弱,不支持全外连接优秀
JSON 支持和 NoSQL增加了 JSON 支持
许可GPL类似 MIT
数据一致性开发人员需要将服务器设定为严格 SQL 模式才能数据验证数据插入和更新之前进行严格的验证
服务器扩展提供了插件程序 API, 支持 C/C++或任何兼容 C 的语言,从 5.7.3 版本开始支持全文搜索。支持的语言更多。

备注:MySQL 和 PostgreSQL 是最有名的两个开源关系数据库。MariaDB 为 MySQL 创建者 Monty Widenius 创建的一个 MySQL 分支。

表格 MySQL VS PostgreSQL

 MySQLPostgreSQL
SQL 标准实现较简单√ 功能更完善、更严谨
查询场景优化器较简单,系统表、运算符、数据类型的实现都很精简,非常适合简单的查询操作√ 对表连接支持较完整,优化器的功能较完整,支持的索引类型很多,复杂查询能力较强;
表组织形式采用索引组织表,适合基于主键匹配的查询、删改操作,但是对表结构设计存在约束;√ 主表采用堆表存放,数据量更大
复制基于 binlog 的逻辑复制√ 物理复制,数据的一致性更加可靠,复制性能更高,对主机性能的影响也更小。
存储过程较弱。√ 功能更强,具备本地缓存执行计划的能力
MVCC√ 基于回滚段实现。更优。新老数据一起存放的基于 XID 实现。
并发MySQL 的存储引擎插件化机制,存在锁机制复杂影响并发的问题MVCC 的实现机制定时触发 VACUUM,导致并发能力下降;若清理不及时,还可能引发数据膨胀。
存储插件化机制√ 应用场景更加广泛,如 innodb 适合事务处理场景外,myisam 适合静态数据的查询场景。不支持
分区√ 主要体现在分区个数达到上千上万后的处理性能差异较大,性能更好。基于继承表的分区实现

备注:postgresql 和 mysql 相比,postgresql 更加适合严格的企业应用场景(比如金融、电信、ERP、CRM),而 MySQL 则是更加适合业务逻辑相对简单、对数据可靠性要求比较低的互联网场景(比如 google、facebook、alibaba)。

Oracle 和 PostgreSQL

Oracle 和 PostgreSQL 是两种流行的关系数据库管理系统,各自有独特的特点和适用场景。以下是它们的详细比较:

1. 许可与成本

  • Oracle : 商业数据库,通常需要购买许可证,成本较高,适合大型企业。
  • PostgreSQL : 开源数据库,使用 GPL 或类似许可证,免费使用和分发,适合中小型企业和个人项目。

2. 功能与特性

  • Oracle :
  • 高级功能如分区、数据加密、闪回技术、数据压缩等。
  • 支持 PL/SQL 编程语言。
  • 优秀的支持与文档,适合复杂的企业级应用。
  • PostgreSQL :
  • 支持丰富的扩展,用户可以自定义数据类型、函数和操作符。
  • 强大的事务处理和并发控制(MVCC)。
  • 支持 JSONB,适合处理非结构化数据。

3. 性能

  • Oracle : 通常在处理大规模数据和复杂查询时表现优秀,优化器功能强大。
  • PostgreSQL : 在许多情况下也表现出色,特别是对读操作优化良好,但在高并发写操作时可能稍逊色。

4. 可扩展性

  • Oracle : 提供高可用性和集群解决方案(如 Oracle RAC),适合大规模应用。
  • PostgreSQL : 通过分区、复制和负载均衡等方式可扩展,但传统的高可用性方案相比于 Oracle 可能不够成熟。

5. 社区与支持

  • Oracle : 官方支持强大,适合需要商业级支持的企业。
  • PostgreSQL : 拥有活跃的开源社区,用户可以通过社区获得支持和更新。

6. 兼容性与迁移

  • Oracle : 兼容性较好,但迁移到其他数据库时可能面临挑战。
  • PostgreSQL : 提供多种工具和方法帮助数据迁移,并与多种开发环境兼容。

7. 学习曲线

  • Oracle : 学习曲线较陡,特别是对于复杂的功能和配置。
  • PostgreSQL : 相对易于上手,文档丰富,社区资源多。

结论

选择 Oracle 还是 PostgreSQL 主要取决于项目需求、预算和团队的技术背景。Oracle 更适合需要高性能和高级特性的企业应用,而 PostgreSQL 则是灵活、开源的选择,适合多种规模的应用。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文