Content deleted Content added
Add link to wikipedia page on 'blocking' in computing. |
Replace link for "expense" with "time complexity" |
||
Line 1:
Connections are a key concept in [[data-centric]] programming. Since some
Connections are built by supplying an underlying [[software driver|driver]] or [[
▲Connections are a key concept in [[data-centric]] programming. Since some [[Database|DBMSs]] require considerable time to connect, [[connection pooling]] is used to improve performance. No command can be performed against a database without an "open and available" connection to it.
== Pooling ==▼
▲Connections are built by supplying an underlying [[software driver|driver]] or [[provider model|provider]] with a [[connection string]], which is used to address a specific [[database]] or [[server (computing)|server]] and to provide instance and user authentication credentials (for example, <code>'''Server='''sql_box;'''Database='''Common;'''User ID='''uid;'''Pwd='''password;</code>).
Database connections are
[[Connection
▲Some databases, such as [[PostgreSQL]], only allow one operation to be performed at a time on each connection.{{citation needed|date=September 2012}} If a request for data (a [[SQL]] [[Select (SQL)|Select]] statement) is sent to the database and a [[result set]] is returned, the connection is open but not available for other operations until the client finishes consuming the result set.
The connection object obtained from the connection pool is often a
This approach encourages the practice of opening a connection in an application only when needed, and closing it as soon as the work is done, rather than holding a connection open for the entire life of the application. In this manner, a relatively small number of connections can service a large number of requests. This is also called [[multiplexing]].▼
▲== Pooling ==
In a
▲Database connections are {{clarify span|[[Wikt:finite|finite]]|date=September 2012}} and [[expensive]] and can take a disproportionately long time to create relative to the operations performed on them. It is very inefficient for an application to create and close a database connection whenever it needs to update a database.
An application failure occurs when the connection pool overflows. This can occur if all of the connection in the pool are in use when an application requests a connection. For example, the application may use a connection for too long when too many clients attempt to access the web site or one or more operations are blocked or simply inefficient.
▲[[Connection pool]]ing is a technique designed to alleviate this problem. A pool of database connections is created and then shared among the applications that need to access the database. When an application needs database access, it requests a connection from the pool. When it is finished, it returns the connection to the pool, where it becomes available for use by other applications.
== References ==▼
▲The connection object obtained from the connection pool is often a [[Adapter pattern|wrapper]] around the actual database connection. The wrapper handles its relationship with the pool internally and hides the details of the pool from the application. For example, the wrapper object can implement a "close" method that can be called just like the "close" method on the database connection. Unlike the method on the database connection, the method on the wrapper may not actually close the database connection, but might instead return it to the pool. The application does not need to be aware of the connection pooling when it calls the methods on the wrapper object.
* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataidbconnectionclasstopic.asp IDbConnection Interface on MSDN]▼
▲This approach encourages the practice of opening a connection in an application only when needed, and closing it as soon as the work is done, rather than holding a connection open for the entire life of the application. In this manner, a relatively small number of connections can service a large number of requests.
* [http://betav.com/blog/billva/2007/05/managing_and_monitoring_net_co.html Managing and Monitoring .NET Connections whitepaper.]▼
▲In a [[Client–server model|client–server architecture]], on the other hand, a persistent connection is typically used so that server state can be managed. This "state" includes server-side [[Cursor (databases)|cursors]], {{clarify span|temporary products|date=September 2012}}, connection-specific functional settings, and so on.
* [http://betav.com/blog/billva/2006/06/getting_and_staying_connected_1.html Getting and Staying Connected whitepaper.]▼
* Hitchhiker's Guide to Visual Studio and SQL Server (7th Edition) Addison Wesley, William Vaughn,
== See also ==
* [[Open Database Connectivity]]
* [[ActiveX Data Objects|ADO]]
* [[ADO.NET]]
* [[ODBC]]
* [[JDBC]]
* [[RDBMS]]
[[Category:Databases]]▼
▲== References ==
▲* [http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpref/html/frlrfsystemdataidbconnectionclasstopic.asp IDbConnection Interface on MSDN]
▲* [http://betav.com/blog/billva/2007/05/managing_and_monitoring_net_co.html Managing and Monitoring .NET Connections whitepaper.]
▲* [http://betav.com/blog/billva/2006/06/getting_and_staying_connected_1.html Getting and Staying Connected whitepaper.]
▲* Hitchhiker's Guide to Visual Studio and SQL Server (7th Edition) Addison Wesley, William Vaughn, {{ISBN|978-0-321-24362-1}}
==External links==
* [http://ConnectionStrings.com ConnectionStrings.com]
{{
▲[[Category:Databases]]
|