Серверный JavaScript 1.4. Руководство по использованию

       

Соединение с Объектом database


При этом подходе Вы используете предопределённый объект database для соединения с БД при наличии единственной конфигурации соединения БД и пользователя. Объект database выполняет все действия по работе с БД. Можно представить этот объект как database единый пул соединений с БД.

Этот подход несколько проще, так как используется только один объект database, а не несколько объектов DbPool и Connection. Однако при этом теряется гибкость первого подхода. Если Вы используете только объект database и хотите соединиться с разными БД или разными бюджетами, Вы обязаны отключиться от одной конфигурации, для того чтобы подключиться к другой. Также, при использовании объекта database, одна транзакция не может захватить несколько клиентских запросов, а соединения с несколькими БД-источниками не могут быть установлены одновременно.

Как описано в последующих разделах, Вы должны ответить на два основных вопроса, когда решаете, как устанавливать соединения с БД:

  • Сколько конфигураций и соединений БД и пользователей Вам нужно?

  • Будет ли одно соединение захватывать несколько клиентских запросов?

В таблице резюмируется, как ответ на эти вопросы влияет на установку и обслуживание пула соединений с БД и отдельных соединений. В последующих разделах обсуждаются детали этих вариантов.

Сколько конфигураций БД?

Где соединение с пулом?

Где отключение пула?

Какой объект(ы) содержит пул?

Должен ли Ваш код хранить пул и соединение?



Как Ваш код хранит пул и соединение в объекте project?

1, используется всеми клиентами Начальная страница приложенияНигдеdatabaseНет--
1, используется всеми клиентамиНачальная страница приложенияНигде1 DbPool objectДаDbPool: Именованное свойство;

Connection: 1 массив

Фиксированный набор, используется всеми клиентами Начальная страница приложенияНигдеN DbPool-объектовДаDbPool: Именованное свойство;

Connection: N массивов

Отдельный пул для каждого клиента Клиентская страница запросаЗависит от Многие объекты DbPool Только если соединение захватывает клиентские запросы DbPool: 1 массив;

Connection: 1 массив

1

Если отдельное соединение не захватывает клиентские запросы, Вы можете соединять и отсоединять пул на каждой странице, в которой нужнó соединение. В этом случае пул не сохраняется в промежутке времени между запросами. Если отдельное соединение захватывает клиентские запросы, соединяйте на первой клиентской странице, которой необходимо соединение, и отсоединяйте на последней такой странице. Это может привести к появлению незанятых соединений/idle, и Ваше приложение должно будет обработать такую ситуацию.



Содержание раздела