关于postgersql相关技术栈的总结

我们类比mysql

1.架构部署层面

2.创建库,选择引擎

3.sql语法层面

3.1创建表阶段

数据类型的不同

3.2创建索引,主键

3.3 crud阶段的语法不同

🏛️ 1. 架构部署层面

对比项 MySQL PostgreSQL SQLite MariaDB
架构模式 客户端-服务器 (C/S) 服务器监听端口接收客户端请求。 客户端-服务器 (C/S) 类似MySQL,但采用进程模型,每个连接会启动一个后端进程。 嵌入式 (Embedded) 无服务器架构,直接集成到应用中。 客户端-服务器 (C/S) 与 MySQL 基本相同,可看作其"增强版"。
数据存储 数据存储在服务器管理的多个文件中。 类似 MySQL。 单文件 ,所有数据(表、索引等)存放在一个 .db 文件中。 同 MySQL。
部署与资源 需要安装、配置、启动服务,资源占用较高。 部署步骤与 MySQL 类似,但优化配置不同。 零配置、开箱即用,库文件大小约 600KB-2MB,资源占用极低。 与 MySQL 高度相似,通常可无缝替换。
适用场景 通用Web应用、高并发OLTP、中小型系统、读写分离架构。 企业级应用、复杂数据分析,数据完整性和SQL标准要求高的场景。 移动应用、桌面软件、IoT设备,嵌入式设备和低并发场景。 同 MySQL,适合希望使用 MySQL 但又担心闭源风险 、追求更多开源特性的用户。

⚙️ 2. 创建库,选择引擎

对比项 MySQL PostgreSQL SQLite MariaDB
核心设计 插件式存储引擎架构 一体化架构 + 丰富扩展机制 嵌入式、零配置 同 MySQL,但增强/新增了多种存储引擎
存储引擎 InnoDB (默认) ,支持事务、行级锁、外键 。 另有 MyISAM (无事务,读多写少)、MEMORY 等。 统一存储引擎,所有功能集中优化,无插件引擎概念。 单一存储引擎,无引擎可选概念。 除 MySQL 支持的引擎外,还有: Aria (MyISAM的增强版,更稳定)。 ColumnStore (列式存储,适用OLAP)。 MyRocks (基于RocksDB,高压缩比)。 支持同一张表使用不同引擎

📝 3. SQL语法层面

3.1 常见数据类型对比
数据类型 MySQL PostgreSQL SQLite MariaDB
整数 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT SMALLINT, INTEGER, BIGINT 9†L20-L21 INTEGER (可自动识别类型) 与 MySQL 完全兼容
浮点数/精确数 FLOAT, DOUBLE, DECIMAL9†L21-L23 REAL, DOUBLE PRECISION, DECIMAL/NUMERIC9†L21-L23 REAL, NUMERIC20†L8 同 MySQL
字符串 CHAR, VARCHAR, TEXT (含 TINYTEXT, MEDIUMTEXT, LONGTEXT) CHAR, VARCHAR, TEXT 10†L27-L30 TEXT (无长度限制区分) 同 MySQL
布尔值 BOOLEAN/BOOL (实际是 TINYINT(1) 别名) 原生 BOOLEAN 类型 无原生类型 (通常用0/1) 同 MySQL
日期时间 DATE, TIME, DATETIME, TIMESTAMP, YEAR DATE, TIME, TIMESTAMP, TIMESTAMPTZ TEXT/INTEGER/REAL 同 MySQL
JSON MySQL 5.7+ 支持 JSON 类型,支持有限索引 支持 JSON 和高效的 JSONB (二进制) 类型,支持 GIN 索引高效检索 无原生支持 存储为 TEXT,无二进制 JSONB 类型
高级类型 有限支持 (无数组、UUID等) 支持 数组、UUID、HSTORE、网络地址、几何类型、范围类型 不支持 基本与 MySQL 相同
3.2 创建索引与主键
索引维度 MySQL (InnoDB) PostgreSQL SQLite MariaDB
索引类型 B-Tree (默认), Hash , Full-Text , R-Tree (空间索引) B-Tree (默认), Hash, GIN, GiST, SP-GiST, BRIN B-Tree 5†L8 与 MySQL 类似,新增了更多索引算法的支持
主键实现 聚簇索引。数据和主键索引存储在一起,表本身就是索引组织表 堆表 + 二级索引。没有专门的"主键索引",所有索引都指向元组ID (TID) 与 PostgreSQL 类似,是一个隐藏的 ROWID 同 MySQL (InnoDB引擎)
函数/部分索引 8.0+ 支持函数索引;不支持部分索引 支持函数索引和部分索引 (带WHERE条件的索引) 不支持 8.0+ 支持函数索引;不支持部分索引
索引并发创建 不支持并发创建,会阻塞写操作 支持 CREATE INDEX CONCURRENTLY不阻塞写操作 不支持 同 MySQL
3.3 CRUD语法差异
SQL操作 MySQL PostgreSQL SQLite MariaDB
字符串连接 CONCAT('Hello', 'World') `'Hello' 'World'`
分页查询 SELECT ... LIMIT offset, countLIMIT count OFFSET offset SELECT ... LIMIT count OFFSET offset (标准语法) 同 PostgreSQL (推荐标准语法) 同 MySQL
自增列/序列 AUTO_INCREMENT,用 LAST_INSERT_ID() 获取最后ID SERIALIDENTITY,用 RETURNING 子句或 CURRVAL() 获取ID AUTOINCREMENT 关键字 同 MySQL,也支持 AUTO_INCREMENT
字符串引号 支持单引号双引号表示字符串 仅支持单引号表示字符串 仅支持单引号 同 MySQL
注释语法 # 单行注释-- 单行注释 -- 单行注释 (需跟空格) 同 PostgreSQL 同 MySQL

相关推荐
@insist1231 小时前
系统架构设计师-从 PDR到 WPDRRC 的模型演进与架构实践
架构·系统架构·软考·系统架构设计师·软件水平考试
ting94520001 小时前
Superlog 开源自主可观测性工具全栈技术深度剖析
人工智能·架构·开源
jasonliyihang1 小时前
Speed Tools:一套低侵入的 Android 插件化 + 动态换肤 + 字体切换框架
架构
行智科技1 小时前
ORB-SLAM3代码详解 - 第 01 篇 · 系统总览与三线程架构
linux·ubuntu·架构·自动驾驶
子安柠3 小时前
从边缘应用到核心交换:计算机网络架构全景解析
计算机网络·架构
zhangfeng11336 小时前
能让不同架构的gpu一起训练 跨芯片统一、异构混合训练、自动并行调优
人工智能·架构·transformer
@insist1236 小时前
系统架构设计师-基于 GB/T 9387.2 标准的网络安全架构
web安全·架构·系统架构·软考·系统架构设计师·软件水平考试
muddjsv6 小时前
SaaS 多租户架构:一个 tenant_id 背后的系统设计战争
架构·saas
阿狸猿6 小时前
论大数据 Lambda 架构及其应用
大数据·架构