PG2: 一个快速的 Clojure PostgreSQL 驱动程序
PG2 是一个用于 PostgreSQL 服务器的客户端库。它是 PG(one) 的继任者——那是我 早期尝试构建一个无 JDBC 客户端的作品。与它相比,PG2 具有以下 特性:
它很快。 基准测试证明,与 Next.JDBC 相比,性能提升了多达 3 倍。一个简单的从数据库读取数据并 以 JSON 响应的 HTTP 应用程序,其 RPS 处理量是原来的 2 倍。详情见下文 “基准测试”。
它用 Java 编写,并在其上覆盖了一层 Clojure。不幸的是, Clojure 并不像 Java 那样快。为了性能,我不得不将大部分 逻辑用纯 Java 实现。Clojure 层极其薄,仅用于 调用某些方法。
它仍然对 Clojure 友好:默认情况下,所有查询都返回一个 map 的 vector,其中键是 keyword。你不需要以任何 方式重新映射结果。此外,该库提供了数十种对结果进行分组、索引和 reduce 的方法。
它开箱即支持 JSON:无需扩展任何协议 等等。轻松地将 json(b) 作为 Clojure 数据读取和写入!同样,JSON 的读取 和写入真的很快:比 Next.JDBC 快 2-3 倍。
它开箱即支持 pg_vector 以及一些其他有用的扩展。无需 安装插件,或扩展 multimethods,等等。
它支持 COPY 操作:你可以轻松地将表 COPY OUT 到一个流中。你可以 COPY IN 一组行而无需对其进行 CSV 编码,因为它们由库持有。它还支持二进制 COPY 格式,速度更快。
它支持 java.time. 类。普通的 JDBC 客户端仍然使用
Timestamp 类来表示日期,这很糟糕。在 PG2 中,所有 java.time.*
类都支持读取和写入。
以及许多其他功能。
文档
注意: 没有链接的章节表示已实现但尚未记录。如果你对未记录的功能感兴趣,请给我发消息或查看测试。
- 安装
- 快速入门(演示)
- 基准测试
- 身份验证
- 连接到服务器
- 数据源抽象
- URI 连接字符串
- 查询与执行
- 解析数据库列名
- 预编译语句
- 预编译语句缓存
- 事务
- 连接状态
- 连接池
- HoneySQL 集成
- HugSQL 支持
- Next.JDBC API 层
- 文件夹(归约器)
- JSON 支持
- 数组支持
- 迁移
- Unix 域套接字
- 获取与设置运行时参数
- 通用执行参数
- 类型提示(OIDs)
- 类型映射
- 几何类型(线、盒等)
- PGVector 支持
- Hstore 支持
- CI(不区分大小写)文本支持
- 运行时读取类型
- 处理行数据
- 处理枚举
- 克隆连接
- 取消查询
- 线程安全
- COPY FROM/TO
- SSL 配置
- 已测试的服务
- 监听与通知
- 通知
- 日志记录
- 错误与异常
- 组件集成
- Ring 中间件
- 调试
- 运行测试