数据库之间的比较
### 比较
比较项 | Oracle | Mysql | Postgres |
---|---|---|---|
表类型 | 堆表(默认)和索引组织表 | Innodb(索引组织表) MyISAM(堆表) | 堆表 |
运行模式 | 多进程 | 多线程 | 多进程 |
使用协议 | 闭源 | GPL和商业双重协议 | BSD协议 |
数据类型 | 空间类型,json | json,基础空间类型 | jsonb,网络地址,空间类型,全文检索等 |
支持索引 | b-tree,hash,reverse,bitmap,gist,表达式 | full-text,b-tree,hash,r-tree | b-tree,hash,gin,gist,spgist,brin,bloom,rum,zombodb |
异构外部表 | 支持不完全 | 不支持 | 几乎支持任意外部数据源(FDW方式) |
并行 | 支持不完全 | 不支持 | 创建btree索引,hash join,扫描分区表 |
拓展编程 | 不支持 | 不支持 | 大部分语言 |
易上手 | 难 | 简单 | 中等 |
###名称解释
- 表类型
- 堆表(Heap Table): 数据是散放的,索引和表的数据是分离的,获取按照命中率获取
- 索引组织表(IOT): 表是一个B树,按照索引来存放,数据存放在叶子节点,与插入的顺序没有关系
- 溢出段(OVERFLOW):当表的行数据量很大的时候,会降低查询性能,将溢出数据分开存放.2种方式:PCTTHRESHOLD n(百分比) 和 INCLUDING column_name(指定列) - 对比:
- HP: 插入更新频繁 不经常使用主键查找
- IOT: 主键递增 主键(唯一键)查找 查找频繁
- 运行模式
- 随着硬件越来越便宜,多进程更能利用资源
## 基于PG,拓展的项目
- PostGIS: 提供空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范
- pipelinedb: 所有的接口都是SQL操作的流式计算数据库
- postBIS :基因测序