learning_notes

学习笔记

View project on GitHub

数据库之间的比较

### 比较

比较项 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,扫描分区表
拓展编程 不支持 不支持 大部分语言
易上手 简单 中等

###名称解释

  1. 表类型
    • 堆表(Heap Table): 数据是散放的,索引和表的数据是分离的,获取按照命中率获取
    • 索引组织表(IOT): 表是一个B树,按照索引来存放,数据存放在叶子节点,与插入的顺序没有关系
    • 溢出段(OVERFLOW):当表的行数据量很大的时候,会降低查询性能,将溢出数据分开存放.2种方式:PCTTHRESHOLD n(百分比) 和 INCLUDING column_name(指定列) - 对比:
    • HP: 插入更新频繁 不经常使用主键查找
    • IOT: 主键递增 主键(唯一键)查找 查找频繁
  2. 运行模式
    • 随着硬件越来越便宜,多进程更能利用资源

## 基于PG,拓展的项目

  • PostGIS: 提供空间对象、空间索引、空间操作函数和空间操作符。同时,PostGIS遵循OpenGIS的规范
  • pipelinedb: 所有的接口都是SQL操作的流式计算数据库
  • postBIS :基因测序