LINUX.ORG.RU

node.js pg-native синхронный код

 ,


0

1

node.js, postgresql 9.3, модуль pg-native.

Можно писать синхронный код:
var rows = client.querySync('SELECT NOW() AS the_date')
console.log(rows[0].the_date)

Преимущество в сокращении кода.
В асинхронном режиме все равно приходится ждать окончания sql-запроса
для передачи в html-шаблон или вызова следующего запроса из цепочки.

Непонятности:
1. Не нашел как работать с транзакциями.
2. В этом примере от разработчика отображается null,
помогает приведение результата к строке
«SELECT NOW() || ' текст' AS the_date»

★★

Последнее исправление: WinLin2 (всего исправлений: 1)

все равно приходится ждать окончания sql-запроса

ну-ну.. ты во время этого «ожидания» попробуй вторым клиентом подключиться ;) удивись, и используй асинхронный код.

aol ★★★★★
()

а приведение через ::text не работает?

По поводу транзакций, думаю, нужно сначала сделать querySync('BEGIN'), а в конце querySync('COMMIT'). Но это так, пальцем в небо.

anonymous
()

Преимущество в сокращении кода,
так как все равно приходится ждать окончания sql-запроса

Потерпел сокрушительное поражение.

Deleted
()
Ответ на: комментарий от aol

pg-native -> pgpool2 -> postgresql
client.end закрывает соединение после окончания запроса.

Тестировал через siege, 20 пользователей.
На данном запросе проблем не было.

ну-ну.. ты во время этого «ожидания» попробуй вторым клиентом подключиться ;)
удивись, и используй асинхронный код.

К базе только одно подключение создается?

WinLin2 ★★
() автор топика
Последнее исправление: WinLin2 (всего исправлений: 3)
Ответ на: комментарий от WinLin2

Тестировал через siege, 20 пользователей.

ты вместо «ожидания ответа на sql запрос» лучше sleep поставь, чтобы лучше видно было.

К базе только одно подключение создается?

нет, не к базе. у тебя на всё один поток - и на обслуживание http и на запросы к базе. если ты его чем-то лочишь, остальное не работает, пока лок не отпустит.

aol ★★★★★
()
Ответ на: комментарий от aol

Заменил на select pg_sleep(5)
siege
В консоли вижу один переход по ссылке 1 раз в 5 секунд.
Из браузера запрос не дождался ответа сервера.

Синхронный вариант не подойдет.

WinLin2 ★★
() автор топика
Последнее исправление: WinLin2 (всего исправлений: 3)
Ответ на: комментарий от aol

у тебя на всё один поток - и на обслуживание http и на запросы к базе.

Какой эпичный п...ц. Я надеюсь, это только в dev-окружении, а в реальной работе все как у людей?

no-dashi ★★★★★
()
Ответ на: комментарий от no-dashi

Варианты:
1) http://nodejs.org/api/cluster.html
2) пул независимых серверов на разных ip
3) стоит ли мучаться с отступами шаблонов,
со скобками N уровня, отсутствием нормальных средств
работы с базами и текстом?

WinLin2 ★★
() автор топика
Последнее исправление: WinLin2 (всего исправлений: 4)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.