DM8和PostgreSQL 14对比
#两者概述
DM8具有开放的、可扩展的体系结构、易于使用的事务处理系统,以及低廉的维护成本。DM8是达梦公司在总结DM系列产品研发与应用经验的基础上,坚持开放创新、简洁实用的理念,推出的新一代自研数据库。DM8吸收借鉴当前先进新技术思想与主流数据库产+品的优点,融合了分布式、弹性计算与云计算的优势,对灵活性、易用性、可靠性、高安全性等方面进行了大规模改进,多样化架构充分满足不同场景需求,支持超大规模并发事务处理和事务-分析混合型业务处理,动态分配计算资源,实现更精细化的资源利用、更低成本的投入。一个数据库,满足用户多种需求,让用户能更加专注于业务发展。
PostgreSQL以加州大学伯克利分校计算机系开发的 POSTGRES 为基础, 是一个功能强大的开源对象关系数据库管理系统。PostgreSQL 由 PostgreSQL 全球开发集团(全球志愿者团队)开发。 它不受任何公司或其他私人实体控制。它是开源的,其源代码是免费提供的。PostgreSQL是跨平台的,可以在许多操作系统上运行。
PostgreSQL支持大部分 SQL 标准并且提供了很多其他现代特性,如复杂查询、外键、触发器、视图、事务完整性、多版本并发控制等。同样,PostgreSQL也可以用许多方法扩展,例如通过增加新的数据类型、函数、操作符、聚集函数、 索引方法、过程语言等。另外,因为许可证的灵活,任何人都可以以任何目的免 费使用、修改和分发 PostgreSQL。
下面我将以表格的形式进行两者的对比,这样看起来更加直观明了。
#整体对比
DM8和PG14整体比较
项目 |
具体内容 |
PG14 |
DM8 |
备注 |
起源地 |
起源高校 |
加州大学伯克利分校计算机系 |
华中科技大学数据库与多媒体研究所 |
|
操作系统 |
Windows |
√ |
√ |
|
linux |
√ |
√ |
||
其他,如UNIX、SOLARIS、AIX等 |
√ |
√ |
||
国内操作系统,如麒麟、统信UOS等 |
√ |
√ |
||
国产芯片飞腾、龙芯、鲲鹏等 |
√ |
√ |
||
功能比较 |
数据类型 |
√ |
√ |
|
用户管理 |
√ |
√ |
||
模式管理 |
√ |
√ |
||
基表管理 |
√ |
√ |
||
数据操作 |
√ |
√ |
||
视图管理 |
√ |
√ |
||
索引管理 |
√ |
√ |
||
全文索引管理 |
√ |
√ |
||
存储过程 |
√ |
√ |
||
存储函数管理 |
√ |
√ |
||
触发器管理 |
√ |
√ |
||
包管理 |
√ |
√ |
||
序列管理 |
√ |
√ |
||
同义词 |
√ |
√ |
||
类管理 |
√ |
√ |
||
域管理 |
√ |
√ |
||
表空间管理 |
√ |
√ |
||
SQL函数 |
√ |
√ |
||
系统动态视图 |
√ |
√ |
||
外部链接-dblink |
√ |
√ |
||
物化视图 |
√ |
√ |
||
外部存储过程 |
√ |
√ |
||
系统包 |
√ |
√ |
||
数据分区 |
√ |
√ |
||
大数据装载方案 |
√ |
√ |
||
编程接口 |
SQL92入门级/过渡级 |
√ |
√ |
|
ODBC |
√ |
√ |
||
JDBC |
√ |
√ |
||
.NET PROVIDER |
√ |
√ |
||
PHP |
√ |
√ |
||
DBEXpress |
√ |
√ |
||
Python |
√ |
√ |
||
NodeJS |
√ |
√ |
||
PDO |
√ |
√ |
||
Hibernate |
√ |
√ |
||
OCI |
√ |
√ |
||
OCCI |
√ |
√ |
||
OO4O |
√ |
√ |
||
libsqlora8 |
√ |
√ |
||
QOCI |
√ |
√ |
#基础功能对比
编号 |
项目 |
DM8 |
PostgreSQL14 |
1 |
数据库/实例 |
DM8中一个实例对应一个库,允许一台机器上同时运行多个实例。但是在 DM 共享存储集群(DMDSC)中,多个实例可以同时装载并打开一个数据库。 |
一个实例下有多个数据库,每个数据库之间是完全独立的,允许一台机器上同时运行多个实例。 |
2 |
数据类型 |
支持数值类型、日期/时间类型和字符串(字符)类型、布尔类型、多媒体类型、自增列、bit类型、自定义类型、XML数据类型、空间数据类型、JSON类型、序列、带时区时间类型、数组类型、记录类型、集合类型、类类型、%TYPE、%ROWTYPE,还可以用户自定义子类型。 |
支持数值类型、日期/时间类型和字符串(字符)类型、多媒体类型、自增列、bit类型、自定义类型、XML数据类型、UUID类型、空间数据类型、货币类型、几何类型、JSON 类型、布尔类型、枚举类型、网络地址类型、位串类型、文本搜索类型、复合类型、数组类型、范围类型、域类型、二进制数据类型、对象标识符类型、pg_lsn类型、伪类型 |
3 |
数据类型别名 |
支持 |
支持 |
4 |
表 |
支持普通表、分区表(RANGE分区、LIST分区、HASH分区、子分区、垂直分区、组合分区等)、列存表、临时表、对象表、堆表、外部表;支持表截断。 |
支持普通表、系统表、分区表、临时表、列存表、外部表、堆表;支持表截断。 |
5 |
视图 |
支持 |
支持 |
6 |
索引 |
支持普通索引、唯一索引、聚集索引、分区索引、全文索引、位图索引、位图连接索引、函数索引;支持在线重建索引、不可见索引 |
五种索引方式:唯一、主键、多属性、部分索引、表达式索引、组合索引、Indexes and ORDER BY、组合多个索引 ; 六种索引类型:B-tree,Hash,Gist,GIN、SP-GIST、BRIN |
7 |
存储过程/函数 |
支持 |
支持 |
8 |
触发器 |
支持 |
支持 |
9 |
包 |
支持 |
支持 |
10 |
序列 |
支持 |
支持 |
11 |
同义词 |
支持 |
支持 |
12 |
类 |
支持 |
不支持 |
13 |
SQL域 |
支持 |
支持 |
14 |
用户管理 |
支持 |
支持 |
15 |
事务管理 |
支持 |
支持 |
16 |
开发接口 |
OLEDB、ADO、ODBC、OCI、OCCI、JDBC、 Hibernate、PHP、PDO、DBExpress、Hibernate、libsqlora8、 NodeJS、OO4O、QOCI、Python、以及.Net DataProvider等。 |
OLEDB、ADO、ODBC、JDBC、 Hibernate、.Net DataProvider、DBD::Pg、libpqxx、node-postgres、Npgsql、Pgtcl、pgtclng、pq、psycopg、ECPG、libpq 等。 |
#安全性能对比
编号 |
项目 |
DM8 |
PostgreSQL14 |
1 |
标记与强制访问控制 |
DM 作为安全数据库,提供了包括用户标识与鉴别、自主与强制访问控制、通信与存储加密、审计等丰富的安全功能,且各安全功能都可进行配置,满足各类型用户在安全管理方面不同层次的需求。 强制访问控制可以控制系统中信息流动的轨迹,能有效地抵抗特洛伊木马的攻击,这在一些对安全要求很高的数据库应用中是非常必要的。 DM 利用策略和标记来实现 DM 数据库的强制访问控制。执行强制访问控制的用户必须具有 LABEL_DATABASE 数据库权限,在新初始化的数据库中,只有 SYSSSO 具有这个权限。 |
提供权限管理;支持自主访问控制和基于标签的强制访问控制,实现对表中记录的权限控制。 PostgreSQL先通过用户标识和认证来验证访问数据库的用户身份,判断是否为合法用户及是否具有权限访问数据库资源。然后通过基于角色的访问控制(Role Based Access Control, RBAC),并使用存取控制列表(ACL)方法控制访问请求和包含信息。 |
2 |
数据加密 |
为了防止用户直接通过数据文件获取用户信息,DM提供了全面的数据加密的功能,包括:
存储加密在保证数据文件安全性的同时,也会带来一定的性能影响,不同的加密算法对性能的影响各有不同,用户需要根据自己的需求来决定是否进行加密以及加密算法的选择。 |
支持通讯加密,支持对存储数据的透明存储加密和非透明存储加密. PostgreSQL数据库自身提供了加密机制, 在数据库内核实现了存储的加密。这种加密方式能防止磁盘丢失和文件被复制导致的敏感数据泄漏。但是,对于控制了数据库系统的攻击者来说却是开放的, 并没有防护能力。而且其密钥管理通常不会对数据库用户开放,安全性得不到保证,也得不到国内相关评测机构的认可。 |
3 |
加密引擎 |
DM系统中内置了常用的DES,AES,RC4等类型的加密算法供用户使用,以此来保护数据的安全性。然而在有些特殊的环境下,这些加密算法可能不能满足用户的需求,用户可能希望使用自己特殊的加密算法,或强度更高的加密算法。DM的加密引擎功能则可以满足这样的需求。 用户只需要按照DM提供的加密引擎C语言编程接口,封装自己的加密算法,并编译成第三方加密动态库,即可以在DM的存储加密中使用自己的加密算法。 |
不支持 |
4 |
密钥自管理 |
DM实现了多级密钥管理机制,统一管理不同的用户的密钥,根据用户身份自动使用其密钥进行加解密,还提供简单方便的密钥更换操作接口 |
密钥管理由四部分构成: 密钥生成、密钥保存、密钥交换、密钥轮转 |
#数据可靠性对比
编号 |
项目 |
DM8 |
PostgreSQL14 |
1 |
备份和恢复 |
支持逻辑备份、物理备份、联机备份、脱机备份、完全备份和增量备份,支持分级别备份、备份加密与压缩;在归档模式下,可将数据恢复到用户指定的任意时间。 |
不支持分级别的备份还原,不支持跨平台备份还原。 备份方式:
还原方式:
|
2 |
双机系统支持 |
支持依赖操作系统HA 的双机热备,以及不依赖于第三方高可用软件的基于 REDO 日志的主备双机系统,支持故障检测与自动恢复,支持自动和手动的故障切换处理,备机可读,可分担主机负载 |
支持依赖和不依赖操作系统的双机热备功能。 对A、B实现双机热备,A作为数据库master主机,对外提供读写服务,B作为slave主机能实时同步A的数据。当A发生故障时,B从slave状态切换到master状态,以保证pg数据库能正常对外提供服务。 |
3 |
数据复制 |
支持同构数据库之间的同步和异步数据复制功能,可以单向,双向以及级联实现数据复制; DM 异构实时同步工具 DMHS,支持异构数据库(Oracle、Mysql、 postgreSQL 等)与 DM 之间的实时同步复制 |
支持同构数据库之间的同步/异步数据复制,不支持异构数据库之间的数据复制。 |
#高性能对比
编号 |
项目 |
DM8 |
PostgreSQL14 |
1 |
视图查询合并 |
该功能可以将视图查询与视图定义进行总体分析并得出最优的查询计划。 |
不支持 |
2 |
数据分区 |
DM支持数据的垂直分区(很少,大部分是水平分区)和水平分区。通过将一个大表按水平或垂直划分成多个子表,并可在子表上建立索引。在大数量情况下,查询往往只涉及到其中一个或几个子表,可减少数据扫描代价,使效率得到大幅提升 |
支持水平分区,垂直分区。 包括范围分区和列表分区。 |
3 |
数据压缩 |
用户可以对整个表进行压缩,也可以选择对部分字段进行压缩。对于I/O密集型的系统来说,通过采取适当的数据压缩的策略,可以减少系统的I/O量,提升查询性能。 另一方面还能为用户节省磁盘空间。 |
PG是少有的不支持数据压缩的主流数据库。 但是可以通过第三方产品进行手动压缩,有zfs、ScaleFlus CSD2000、Postgre pro(非pg主分支功能,依赖商业定制版PG)。 注:pg可以对超过2kb的大字段使用toast方式压缩存储,适用场景有限。 |
4 |
函数索引 |
该功能以与列相关的某个表达式为准,计算该表达式的值并储存在索引中,当相关查询来临时可以利用该索引来免除繁琐的运算及全表扫描。 |
支持。基于某个表达式建立索引,索引字段经过了某个函数的处理,达到了在某种特殊的场景下走索引的目的。 |
5 |
位图索引 |
在大数据量情况下,位图索引可极大提升基于低基数列上查询的 性能,且存储空间小,可为OLAP、商业智能、数据仓库和数据挖掘提供有效的支持 |
支持。扫描索引,把满足条件的行或者块在内存中建一个位图,扫描完索引后,再跟 进位图中记录的指针到表的数据文件读取相应的数据。在or、and、in子句和有多个条件都可以同时走不同的索引时,都可能走Bitmap Index Scan 。 |
6 |
大对象存取优化 |
DM在原有大对象处理的基础上,对大对象存储组织和生成的日志进行了优化,性能有大幅提升。 |
PG中存储二进制数据的类型包括 bytea(等同于 SQL 中的 blob),还有一个PG独有的大对象类型(largeobject)。用大对象类型时,二进制数据统一存储在一张系统表里,提高其他数据读写性能,并能和其他数据分开备份。 |
7 |
基于多版本的并发控制 |
DM提供了基于多版本的并发控制处理机制。多版本的最突出的特征是“查询不上锁”(封锁机制),即读操作不被阻塞,可以有效减少冲突,提高并发执行处理效率。 |
在数据库内部,数据的一致性使用多版本模式(多版本并发控制(Multiversion Concurrency Control),即MVCC)维护。这意味着每个SQL语句查询到的数据,是查询开始时间节点的快照(一个数据版本),而与查询期间数据状态无关。此机制确保语句不会查询到由并发事务对同一行数据进行修改而产生的不一致数据,从而为每个数据库会话提供了事务隔离特性。MVCC通过避免传统数据库系统中的锁定方法,最大程度上减小了在多用户并发场景下的锁争用,从而提高了性能。 注:在PG中,mvvc只适用于读已提交、可重复读两个隔离级别。 |
8 |
单表记录支持数据量 |
DM单表记录可超过40亿条,可支持50TB级别数据量。 |
PG单表记录数无限制。但单表大小限制为32TB,单条记录最大为400GB,一个字段的最大尺寸为1GB,一个表里的最大列数为250--1600(与列类型有关) |
9 |
分布式集群 |
支持基于完全对等不共享架构的并行分布式集群 DMMPP,实现数据分布式存储和并行计算,满足OLAP需求。 支持最多1024个EP(节点),轻松组建超大型集群。 |
Citus是Postgres的一个extension扩展,将Postgres转换成一个分布式数据库,在集群的多个节点上分发数据和查询,具有像分片、分布式SQL引擎、复制表和分布式表等特性。 |
更多技术交流,可登录达梦在线服务平台:达梦在线服务平台http://eco.dameng.com
DM8和PostgreSQL 14对比相关推荐
- 数据3分钟丨CSDN 1024程序员节来啦!PostgreSQL 14和openGauss 2.1.0在同一天正式发布。...
数据 3 分钟 由 ACDU (中国 DBA 联盟) 与墨天轮联合出品的全新视频节目上线啦-三分钟带你来了解数据行业动态,节目内容主要包含数据行业最新的产品发布.公司大事件.行业新闻等. 本期内容概览 ...
- 极客日报:阿里旗下App接入微信支付;马斯克成世界首富;PostgreSQL 14 RC 1发布
一分钟速览新闻点! 阿里回应App接入微信支付 抖音起诉知乎名誉侵权 小米上诉"小米穿戴"图形商标被驳回 拼多多.美团已支持众多主流支付渠道 清华AI学生华智冰首次露正脸唱歌 快手 ...
- PostgreSQL 14 版本发布,快来看看有哪些新特性!
文章目录 性能增强 数据类型和 SQL 管理功能 复制和恢复 安全增强 更多特性 大家好!我是只谈技术不剪发的 Tony 老师. PostgreSQL 全球开发组于 2021-05-20 发布了 Po ...
- PostgreSQL 14和SCRAM认证的改变--应该迁移到SCRAM?
PostgreSQL 14和SCRAM认证的改变--应该迁移到SCRAM? 最近,一些PG使用者反馈他们切换到PG14后,遇到了一些连接错误. "FATAL: password authe ...
- PostgreSQL 14分布式Citus单机多实例部署
什么是Citus Citus是一个PostgreSQL扩展,可将Postgres转换为分布式数据库,因此您可以在任何规模上实现高性能. 使用Citus,您可以使用新的超能力扩展PostgreSQL数据 ...
- Ubuntu20.04 PostgreSQL 14 安装配置记录
PostgreSQL 名称来源 It was originally named POSTGRES, referring to its origins as a successor to the Ing ...
- PostgreSQL 14及更高版本改进
PostgreSQL 14及更高版本 本文谈谈PG14中的关键特性及社区中正在谈论PG15及更高版本的内容. PG14的主要特性 逻辑复制的改进 PG14中对逻辑复制进行了几项增强: 1) 正在进行中 ...
- 探索PostgreSQL 14新特性--SEARCH和CYCLE
探索PostgreSQL 14新特性--SEARCH和CYCLE PG14的SEARCH和CYCLE新功能大大简化了递归查询的方式,本文给出一些基于旅行计划的示例. 创建数据库 本文示例基于任何PG1 ...
- PostgreSQL 14中TOAST的新压缩算法LZ4,它有多快?
对于列压缩选项,PostgreSQL 14提供了新的压缩方法LZ4.与TOAST中现有的PGLZ压缩方法相比,LZ4压缩更快.本文介绍如何使用整个选项,并和其他压缩算法进行性能比较. 背景 PG中,页 ...
最新文章
- Oracle表的分区update卡着,分区表update global indexes引起表阻塞
- Apollo快速使用
- gd动态曲线 php_php中用GD绘制折线图
- Spring JdbcTemplate示例
- Web 阶段梳理(2019.1.9)
- argument list too long 错误的处理
- usb 系统消息_小米USB3.0分线器发布:四口USB 3.0+USB-C
- C#中如何调用动态链接库DLL
- Java的arrays运用
- kali linux工具pyrit,在Kali Linux上安装cuda、pyrit-cuda以及optimus
- (2)Spring框架----IOC基础快速入门
- 信号与系统:综述【知识梳理】
- Android NDK墓碑/崩溃分析
- Python爬虫-爬取豆瓣TOP250
- 如何查看Windows 桌面壁纸的位置
- 固态硬盘损坏数据如何挽救_大数据挽救生命
- 2017、2018年中国大数据发展趋势和展望解读
- 入门首选,Requests 库的基本使用
- CUDA快速傅里叶变换 cuFFT
- DynamoDB初体验