Соединение с базой данных - это средство в информатике, которое позволяет клиентскому программному обеспечению взаимодействовать с программным обеспечением сервера базы данных , независимо от того, находится ли он на том же компьютере или нет. Для отправки команд и получения ответов требуется соединение , обычно в форме набора результатов.
Соединения - ключевая концепция программирования, ориентированного на данные . Поскольку для подключения некоторых механизмов СУБД требуется значительное время, для повышения производительности был изобретен пул соединений . Никакая команда не может быть выполнена с базой данных без «открытого и доступного» подключения к ней.
Соединения построены путем подачи базового драйвера или поставщика с строкой подключения , которая представляет собой способ решения конкретной базы данных или сервера и экземпляр, а также учетные данные аутентификации пользователей (например, сервер = sql_box; базы данных = Общие; Идентификатор пользователя = UID ; Pwd = пароль; ). После того, как соединение было построено, его можно открывать и закрывать по желанию, а свойства (такие как время ожидания команды или транзакция, если он существует) может быть установлен. Строка подключения состоит из набора пар ключ / значение в соответствии с используемым интерфейсом доступа к данным и поставщиком данных.
Многие базы данных (например, PostgreSQL ) позволяют выполнять только одну операцию за раз при каждом подключении. Если запрос данных (оператор SQL Select ) отправляется в базу данных и возвращается набор результатов, соединение открыто, но недоступно для других операций, пока клиент не закончит использование набора результатов. Другие базы данных, такие как SQL Server 2005 (и более поздние версии), не накладывают этого ограничения. Однако базы данных, которые обеспечивают несколько операций на одно соединение, обычно несут гораздо больше накладных расходов, чем те, которые разрешают только одну задачу операции за раз.
Объединение
Соединения с базой данных ограничены и дороги, и для их создания может потребоваться непропорционально много времени по сравнению с выполняемыми над ними операциями. Для приложения очень неэффективно создавать, использовать и закрывать соединение с базой данных всякий раз, когда ему нужно обновить базу данных.
Пул соединений - это метод, разработанный для решения этой проблемы. Можно создать пул подключений к базе данных, а затем использовать его для всех приложений, которым требуется доступ к базе данных.
Объект соединения, полученный из пула соединений, часто является оболочкой вокруг фактического соединения с базой данных. Оболочка понимает свои отношения с пулом и скрывает детали пула от приложения. Например, объект-оболочка может реализовывать метод «close», который может вызываться точно так же, как метод «close» при подключении к базе данных. В отличие от метода в соединении с базой данных, метод в оболочке может фактически не закрывать соединение с базой данных, а вместо этого возвращать его в пул. Приложению не нужно знать о пуле соединений, когда оно вызывает методы объекта-оболочки.
Этот подход поощряет практику открытия соединения в приложении только при необходимости и его закрытия, как только работа будет выполнена, вместо того, чтобы держать соединение открытым на протяжении всего срока службы приложения. Таким образом, относительно небольшое количество соединений может обслуживать большое количество запросов. Это также называется мультиплексированием .
С другой стороны, в архитектуре клиент / сервер обычно используется постоянное соединение, чтобы можно было управлять состоянием сервера. Это «состояние» включает в себя курсоры на стороне сервера, временные продукты, функциональные настройки, зависящие от соединения, и так далее.
Сбой приложения происходит при переполнении пула соединений. Это может произойти, если все соединения в пуле используются, когда приложение запрашивает соединение. Например, приложение может использовать соединение слишком долго, когда слишком много клиентов пытаются получить доступ к веб-сайту, или одна или несколько операций заблокированы или просто неэффективны.
Смотрите также
Рекомендации
- Интерфейс IDbConnection в MSDN
- Технический документ по управлению и мониторингу подключений .NET.
- Технический документ "Как оставаться на связи".
- Автостопом по Visual Studio и SQL Server (7-е издание) Эддисон Уэсли, Уильям Вон, ISBN 978-0321243621