|
@@ -1,7 +1,7 @@
|
|
|
# Пул соединений для работы с PostgreSQL
|
|
|
|
|
|
Библиотека реализует комплексное решение для взаимодействия эрланг
|
|
|
-проекта с базой PostgreSQL на базе асинхронной версию драйвера
|
|
|
+проекта с базой PostgreSQL на базе асинхронной версии драйвера
|
|
|
[epgsql](https://github.com/epgsql/epgsql) и пула процессов
|
|
|
[pooler](https://github.com/seth/pooler).
|
|
|
|
|
@@ -10,7 +10,7 @@
|
|
|
разными базами.
|
|
|
|
|
|
Внутри пула есть несколько процессов, и каждый из них устанавливает
|
|
|
-свое соединение с базой и посылает запросы к ней независимо от
|
|
|
+свое соединение с базой и посылает запросы к ней, независимо от
|
|
|
остальных процессов.
|
|
|
|
|
|
Чтобы выполнить запрос к базе, берется свободный процесс из пула,
|
|
@@ -22,10 +22,11 @@
|
|
|
|
|
|
Для запуска пула нужно вызывать функцию **epgsql_pool:start/4**
|
|
|
с аргументами:
|
|
|
-- имя пула _atom() | string() | binary()_
|
|
|
-- число соединений _integer()_
|
|
|
-- максимальное число соединений _integer()_
|
|
|
-- настройки соединения _map()_
|
|
|
+
|
|
|
+ - имя пула _atom() | string() | binary()_
|
|
|
+ - число соединений _integer()_
|
|
|
+ - максимальное число соединений _integer()_
|
|
|
+ - настройки соединения _map()_
|
|
|
|
|
|
```
|
|
|
Params = #{host => "localhost",
|
|
@@ -86,10 +87,11 @@ ok
|
|
|
|
|
|
Для отправки запроса нужно вызывать одну из функций **epgsql_pool:query/2, /3, /4**
|
|
|
с аргументами:
|
|
|
-- имя пула _atom() | string() | binary()_
|
|
|
-- SQL-запрос _io_list()_
|
|
|
-- опционально, параметры запроса _[term()]_
|
|
|
-- опционально, дополнительные настройки _[proplists:option()]_
|
|
|
+
|
|
|
+ - имя пула _atom() | string() | binary()_
|
|
|
+ - SQL-запрос _io_list()_
|
|
|
+ - опционально, параметры запроса _[term()]_
|
|
|
+ - опционально, дополнительные настройки _[proplists:option()]_
|
|
|
|
|
|
Формат SQL-запроса, параметров к нему, возможные форматы ответа такие же,
|
|
|
как требует драйвер [epgsql](https://github.com/epgsql/epgsql).
|
|
@@ -149,8 +151,9 @@ proplist, а не атомарное значение).
|
|
|
|
|
|
Чтобы выполнить несколько запросов в транзакции, нужно вызывать функцию **epgsql_pool:transaction/2**
|
|
|
с аргументами:
|
|
|
-- имя пула _atom() | string() | binary()_
|
|
|
-- ваша функция
|
|
|
+
|
|
|
+ - имя пула _atom() | string() | binary()_
|
|
|
+ - ваша функция
|
|
|
|
|
|
В функцию передается процесс из пула, и запросы к базе данных нужно выполнять,
|
|
|
используя этот процесс вместо имени пула.
|