27个版本
使用旧的Rust 2015
0.8.6 | 2018年12月16日 |
---|---|
0.8.5 | 2017年6月22日 |
0.8.3 | 2017年5月1日 |
0.5.1 | 2017年3月30日 |
0.3.1 | 2016年12月31日 |
在数据库接口中排名第2606
每月下载量60次
70KB
866 行
pg_async.rs
基于libpq的异步、高可用(主-主)PostgreSQL驱动程序。
愿景
- 旨在与主-主复制数据库(如BDR)一起工作,但也支持独立数据库。
- 使用
libpq
,利用其异步支持。 - 维护对复制集群中每个节点的异步连接。
- 通过
SELECT 1
查询节点,以查看哪个更接近/更快。 - 每个操作都是一个单独的事务。
- 如果节点失败,操作将在另一个节点上透明地重试。
- 操作以
futures
的形式公开。 -
futures
由一个或两个线程支持,并且可以在不使用tokio
反应器的情况下使用(因为KISS)。 - 快速模式:将操作发送到每个节点,并返回第一个答案。
- Pin模式:只将操作发送到其中一个节点(有助于避免一些主-主冲突)。
- 有一个JSON辅助程序,可以将表行转换为serde_json对象。
- 如果操作尚未流水线化,则取消
Future
允许驱动程序取消它。 - 可以使用数据库级别的超时来提前终止慢速操作。
注意
libpq和OpenSSL的组合在PostgreSQL服务器重启期间表现不佳。我见过当OpenSSL层启用时,libpq SEGV崩溃是可靠的。为了使驱动程序正确处理PostgreSQL服务器的不可用性和重启,我建议将"sslmode=disable"禁用器添加到连接字符串中。
依赖关系
~5MB
~100K SLoC