ITADN
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

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.* 类都支持读取和写入。

以及许多其他功能。

文档

注意: 没有链接的章节表示已实现但尚未记录。如果你对未记录的功能感兴趣,请给我发消息或查看测试