summaryrefslogtreecommitdiff
path: root/docs/programmer_reference/intro_terrain.html
diff options
context:
space:
mode:
authorLorry Tar Creator <lorry-tar-importer@baserock.org>2015-02-17 17:25:57 +0000
committer <>2015-03-17 16:26:24 +0000
commit780b92ada9afcf1d58085a83a0b9e6bc982203d1 (patch)
tree598f8b9fa431b228d29897e798de4ac0c1d3d970 /docs/programmer_reference/intro_terrain.html
parent7a2660ba9cc2dc03a69ddfcfd95369395cc87444 (diff)
downloadberkeleydb-master.tar.gz
Imported from /home/lorry/working-area/delta_berkeleydb/db-6.1.23.tar.gz.HEADdb-6.1.23master
Diffstat (limited to 'docs/programmer_reference/intro_terrain.html')
-rw-r--r--docs/programmer_reference/intro_terrain.html608
1 files changed, 369 insertions, 239 deletions
diff --git a/docs/programmer_reference/intro_terrain.html b/docs/programmer_reference/intro_terrain.html
index 4e5ce206..68b7e4cb 100644
--- a/docs/programmer_reference/intro_terrain.html
+++ b/docs/programmer_reference/intro_terrain.html
@@ -14,17 +14,16 @@
<body>
<div xmlns="" class="navheader">
<div class="libver">
- <p>Library Version 11.2.5.3</p>
+ <p>Library Version 12.1.6.1</p>
</div>
<table width="100%" summary="Navigation header">
<tr>
- <th colspan="3" align="center">Mapping the terrain: theory and practice</th>
+ <th colspan="3" align="center">Mapping the terrain: theory and
+ practice</th>
</tr>
<tr>
<td width="20%" align="left"><a accesskey="p" href="intro.html">Prev</a> </td>
- <th width="60%" align="center">Chapter 1. 
- Introduction
- </th>
+ <th width="60%" align="center">Chapter 1.  Introduction </th>
<td width="20%" align="right"> <a accesskey="n" href="intro_dbis.html">Next</a></td>
</tr>
</table>
@@ -34,7 +33,8 @@
<div class="titlepage">
<div>
<div>
- <h2 class="title" style="clear: both"><a id="intro_terrain"></a>Mapping the terrain: theory and practice</h2>
+ <h2 class="title" style="clear: both"><a id="intro_terrain"></a>Mapping the terrain: theory and
+ practice</h2>
</div>
</div>
</div>
@@ -42,299 +42,431 @@
<dl>
<dt>
<span class="sect2">
- <a href="intro_terrain.html#idm1895840">Data access and data management</a>
+ <a href="intro_terrain.html#idm3285464">Data access and data management</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="intro_terrain.html#idm2229408">Relational databases</a>
+ <a href="intro_terrain.html#idm2046400">Relational databases</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="intro_terrain.html#idm2389408">Object-oriented databases</a>
+ <a href="intro_terrain.html#idm3331136">Object-oriented databases</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="intro_terrain.html#idm2511776">Network databases</a>
+ <a href="intro_terrain.html#idm2845328">Network databases</a>
</span>
</dt>
<dt>
<span class="sect2">
- <a href="intro_terrain.html#idm1916248">Clients and servers</a>
+ <a href="intro_terrain.html#idm1493864">Clients and servers</a>
</span>
</dt>
</dl>
</div>
- <p>The first step in selecting a database system is figuring out what the
-choices are. Decades of research and real-world deployment have produced
-countless systems. We need to organize them somehow to reduce the number
-of options.</p>
- <p>One obvious way to group systems is to use the common labels that
-vendors apply to them. The buzzwords here include "network,"
-"relational," "object-oriented," and "embedded," with some
-cross-fertilization like "object-relational" and "embedded network".
-Understanding the buzzwords is important. Each has some grounding in
-theory, but has also evolved into a practical label for categorizing
-systems that work in a certain way.</p>
- <p>All database systems, regardless of the buzzwords that apply to them,
-provide a few common services. All of them store data, for example.
-We'll begin by exploring the common services that all systems provide,
-and then examine the differences among the different kinds of systems.</p>
+ <p>
+ The first step in selecting a database system is figuring
+ out what the choices are. Decades of research and real-world
+ deployment have produced countless systems. We need to
+ organize them somehow to reduce the number of options.
+ </p>
+ <p>
+ One obvious way to group systems is to use the common labels
+ that vendors apply to them. The buzzwords here include
+ "network," "relational," "object-oriented," and "embedded,"
+ with some cross-fertilization like "object-relational" and
+ "embedded network". Understanding the buzzwords is important.
+ Each has some grounding in theory, but has also evolved into a
+ practical label for categorizing systems that work in a
+ certain way.
+ </p>
+ <p>
+ All database systems, regardless of the buzzwords that apply
+ to them, provide a few common services. All of them store
+ data, for example. We'll begin by exploring the common
+ services that all systems provide, and then examine the
+ differences among the different kinds of systems.
+ </p>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm1895840"></a>Data access and data management</h3>
+ <h3 class="title"><a id="idm3285464"></a>Data access and data management</h3>
</div>
</div>
</div>
- <p>Fundamentally, database systems provide two services.</p>
- <p>The first service is <span class="emphasis"><em>data access</em></span>. Data access means adding
-new data to the database (inserting), finding data of interest
-(searching), changing data already stored (updating), and removing data
-from the database (deleting). All databases provide these services. How
-they work varies from category to category, and depends on the record
-structure that the database supports.</p>
- <p>Each record in a database is a collection of values. For example, the
-record for a Web site customer might include a name, email address,
-shipping address, and payment information. Records are usually stored
-in tables. Each table holds records of the same kind. For example, the
-<span class="bold"><strong>customer</strong></span> table at an e-commerce Web site might store the
-customer records for every person who shopped at the site. Often,
-database records have a different structure from the structures or
-instances supported by the programming language in which an application
-is written. As a result, working with records can mean:</p>
+ <p>
+ Fundamentally, database systems provide two
+ services.
+ </p>
+ <p>
+ The first service is <span class="emphasis"><em>data access</em></span>.
+ Data access means adding new data to the database
+ (inserting), finding data of interest (searching),
+ changing data already stored (updating), and removing data
+ from the database (deleting). All databases provide these
+ services. How they work varies from category to category,
+ and depends on the record structure that the database
+ supports.
+ </p>
+ <p>
+ Each record in a database is a collection of values. For
+ example, the record for a Web site customer might include
+ a name, email address, shipping address, and payment
+ information. Records are usually stored in tables. Each
+ table holds records of the same kind. For example, the
+ <span class="bold"><strong>customer</strong></span> table at an
+ e-commerce Web site might store the customer records for
+ every person who shopped at the site. Often, database
+ records have a different structure from the structures or
+ instances supported by the programming language in which
+ an application is written. As a result, working with
+ records can mean:
+ </p>
<div class="itemizedlist">
<ul type="disc">
- <li>using database operations like searches and updates on records; and</li>
- <li>converting between programming language structures and database record
-types in the application.</li>
+ <li>
+ using database operations like searches and
+ updates on records; and
+ </li>
+ <li>
+ converting between programming language
+ structures and database record types in the
+ application.
+ </li>
</ul>
</div>
- <p>The second service is <span class="emphasis"><em>data management</em></span>. Data management is
-more complicated than data access. Providing good data management
-services is the hard part of building a database system. When you
-choose a database system to use in an application you build, making sure
-it supports the data management services you need is critical.</p>
- <p>Data management services include allowing multiple users to work on the
-database simultaneously (concurrency), allowing multiple records to be
-changed instantaneously (transactions), and surviving application and
-system crashes (recovery). Different database systems offer different
-data management services. Data management services are entirely
-independent of the data access services listed above. For example,
-nothing about relational database theory requires that the system
-support transactions, but most commercial relational systems do.</p>
- <p>Concurrency means that multiple users can operate on the database at
-the same time. Support for concurrency ranges from none (single-user
-access only) to complete (many readers and writers working
-simultaneously).</p>
- <p>Transactions permit users to make multiple changes appear at once. For
-example, a transfer of funds between bank accounts needs to be a
-transaction because the balance in one account is reduced and the
-balance in the other increases. If the reduction happened before the
-increase, than a poorly-timed system crash could leave the customer
-poorer; if the bank used the opposite order, then the same system crash
-could make the customer richer. Obviously, both the customer and the
-bank are best served if both operations happen at the same instant.</p>
- <p>Transactions have well-defined properties in database systems. They are
-<span class="emphasis"><em>atomic</em></span>, so that the changes happen all at once or not at all.
-They are <span class="emphasis"><em>consistent</em></span>, so that the database is in a legal state
-when the transaction begins and when it ends. They are typically
-<span class="emphasis"><em>isolated</em></span>, which means that any other users in the database
-cannot interfere with them while they are in progress. And they are
-<span class="emphasis"><em>durable</em></span>, so that if the system or application crashes after
-a transaction finishes, the changes are not lost. Together, the
-properties of <span class="emphasis"><em>atomicity</em></span>, <span class="emphasis"><em>consistency</em></span>,
-<span class="emphasis"><em>isolation</em></span>, and <span class="emphasis"><em>durability</em></span> are known as the ACID
-properties.</p>
- <p>As is the case for concurrency, support for transactions varies among
-databases. Some offer atomicity without making guarantees about
-durability. Some ignore isolatability, especially in single-user
-systems; there's no need to isolate other users from the effects of
-changes when there are no other users.</p>
- <p>Another important data management service is recovery. Strictly
-speaking, recovery is a procedure that the system carries out when it
-starts up. The purpose of recovery is to guarantee that the database is
-complete and usable. This is most important after a system or
-application crash, when the database may have been damaged. The recovery
-process guarantees that the internal structure of the database is good.
-Recovery usually means that any completed transactions are checked, and
-any lost changes are reapplied to the database. At the end of the
-recovery process, applications can use the database as if there had been
-no interruption in service.</p>
- <p>Finally, there are a number of data management services that permit
-copying of data. For example, most database systems are able to import
-data from other sources, and to export it for use elsewhere. Also, most
-systems provide some way to back up databases and to restore in the
-event of a system failure that damages the database. Many commercial
-systems allow <span class="emphasis"><em>hot backups</em></span>, so that users can back up
-databases while they are in use. Many applications must run without
-interruption, and cannot be shut down for backups.</p>
- <p>A particular database system may provide other data management services.
-Some provide browsers that show database structure and contents. Some
-include tools that enforce data integrity rules, such as the rule that
-no employee can have a negative salary. These data management services
-are not common to all systems, however. Concurrency, recovery, and
-transactions are the data management services that most database vendors
-support.</p>
- <p>Deciding what kind of database to use means understanding the data
-access and data management services that your application needs. Berkeley DB
-is an embedded database that supports fairly simple data access with a
-rich set of data management services. To highlight its strengths and
-weaknesses, we can compare it to other database system categories.</p>
+ <p>
+ The second service is <span class="emphasis"><em>data
+ management</em></span>. Data management is more
+ complicated than data access. Providing good data
+ management services is the hard part of building a
+ database system. When you choose a database system to use
+ in an application you build, making sure it supports the
+ data management services you need is critical.
+ </p>
+ <p>
+ Data management services include allowing multiple users
+ to work on the database simultaneously (concurrency),
+ allowing multiple records to be changed instantaneously
+ (transactions), and surviving application and system
+ crashes (recovery). Different database systems offer
+ different data management services. Data management
+ services are entirely independent of the data access
+ services listed above. For example, nothing about
+ relational database theory requires that the system
+ support transactions, but most commercial relational
+ systems do.
+ </p>
+ <p>
+ Concurrency means that multiple users can operate on the
+ database at the same time. Support for concurrency ranges
+ from none (single-user access only) to complete (many
+ readers and writers working simultaneously).
+ </p>
+ <p>
+ Transactions permit users to make multiple changes
+ appear at once. For example, a transfer of funds between
+ bank accounts needs to be a transaction because the
+ balance in one account is reduced and the balance in the
+ other increases. If the reduction happened before the
+ increase, than a poorly-timed system crash could leave the
+ customer poorer; if the bank used the opposite order, then
+ the same system crash could make the customer richer.
+ Obviously, both the customer and the bank are best served
+ if both operations happen at the same instant.
+ </p>
+ <p>
+ Transactions have well-defined properties in database
+ systems. They are <span class="emphasis"><em>atomic</em></span>, so that the
+ changes happen all at once or not at all. They are
+ <span class="emphasis"><em>consistent</em></span>, so that the database
+ is in a legal state when the transaction begins and when
+ it ends. They are typically <span class="emphasis"><em>isolated</em></span>,
+ which means that any other users in the database cannot
+ interfere with them while they are in progress. And they
+ are <span class="emphasis"><em>durable</em></span>, so that if the system or
+ application crashes after a transaction finishes, the
+ changes are not lost. Together, the properties of
+ <span class="emphasis"><em>atomicity</em></span>,
+ <span class="emphasis"><em>consistency</em></span>,
+ <span class="emphasis"><em>isolation</em></span>, and
+ <span class="emphasis"><em>durability</em></span> are known as the ACID
+ properties.
+ </p>
+ <p>
+ As is the case for concurrency, support for transactions
+ varies among databases. Some offer atomicity without
+ making guarantees about durability. Some ignore
+ isolatability, especially in single-user systems; there's
+ no need to isolate other users from the effects of changes
+ when there are no other users.
+ </p>
+ <p>
+ Another important data management service is recovery.
+ Strictly speaking, recovery is a procedure that the system
+ carries out when it starts up. The purpose of recovery is
+ to guarantee that the database is complete and usable.
+ This is most important after a system or application
+ crash, when the database may have been damaged. The
+ recovery process guarantees that the internal structure of
+ the database is good. Recovery usually means that any
+ completed transactions are checked, and any lost changes
+ are reapplied to the database. At the end of the recovery
+ process, applications can use the database as if there had
+ been no interruption in service.
+ </p>
+ <p>
+ Finally, there are a number of data management services
+ that permit copying of data. For example, most database
+ systems are able to import data from other sources, and to
+ export it for use elsewhere. Also, most systems provide
+ some way to back up databases and to restore in the event
+ of a system failure that damages the database. Many
+ commercial systems allow <span class="emphasis"><em>hot backups</em></span>,
+ so that users can back up databases while they are in use.
+ Many applications must run without interruption, and
+ cannot be shut down for backups.
+ </p>
+ <p>
+ A particular database system may provide other data
+ management services. Some provide browsers that show
+ database structure and contents. Some include tools that
+ enforce data integrity rules, such as the rule that no
+ employee can have a negative salary. These data management
+ services are not common to all systems, however.
+ Concurrency, recovery, and transactions are the data
+ management services that most database vendors
+ support.
+ </p>
+ <p>
+ Deciding what kind of database to use means
+ understanding the data access and data management services
+ that your application needs. Berkeley DB is an embedded
+ database that supports fairly simple data access with a
+ rich set of data management services. To highlight its
+ strengths and weaknesses, we can compare it to other
+ database system categories.
+ </p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm2229408"></a>Relational databases</h3>
+ <h3 class="title"><a id="idm2046400"></a>Relational databases</h3>
</div>
</div>
</div>
- <p>Relational databases are probably the best-known database variant,
-because of the success of companies like Oracle. Relational databases
-are based on the mathematical field of set theory. The term "relation"
-is really just a synonym for "set" -- a relation is just a set of
-records or, in our terminology, a table. One of the main innovations in
-early relational systems was to insulate the programmer from the
-physical organization of the database. Rather than walking through
-arrays of records or traversing pointers, programmers make statements
-about tables in a high-level language, and the system executes those
-statements.</p>
- <p>Relational databases operate on <span class="emphasis"><em>tuples</em></span>, or records, composed
-of values of several different data types, including integers, character
-strings, and others. Operations include searching for records whose
-values satisfy some criteria, updating records, and so on.</p>
- <p>Virtually all relational databases use the Structured Query Language,
-or SQL. This language permits people and computer programs to work with
-the database by writing simple statements. The database engine reads
-those statements and determines how to satisfy them on the tables in
-the database.</p>
- <p>SQL is the main practical advantage of relational database systems.
-Rather than writing a computer program to find records of interest, the
-relational system user can just type a query in a simple syntax, and
-let the engine do the work. This gives users enormous flexibility; they
-do not need to decide in advance what kind of searches they want to do,
-and they do not need expensive programmers to find the data they need.
-Learning SQL requires some effort, but it's much simpler than a
-full-blown high-level programming language for most purposes. And there
-are a lot of programmers who have already learned SQL.</p>
+ <p>
+ Relational databases are probably the best-known
+ database variant, because of the success of companies like
+ Oracle. Relational databases are based on the mathematical
+ field of set theory. The term "relation" is really just a
+ synonym for "set" -- a relation is just a set of records
+ or, in our terminology, a table. One of the main
+ innovations in early relational systems was to insulate
+ the programmer from the physical organization of the
+ database. Rather than walking through arrays of records or
+ traversing pointers, programmers make statements about
+ tables in a high-level language, and the system executes
+ those statements.
+ </p>
+ <p>
+ Relational databases operate on
+ <span class="emphasis"><em>tuples</em></span>, or records, composed of
+ values of several different data types, including
+ integers, character strings, and others. Operations
+ include searching for records whose values satisfy some
+ criteria, updating records, and so on.
+ </p>
+ <p>
+ Virtually all relational databases use the Structured
+ Query Language, or SQL. This language permits people and
+ computer programs to work with the database by writing
+ simple statements. The database engine reads those
+ statements and determines how to satisfy them on the
+ tables in the database.
+ </p>
+ <p>
+ SQL is the main practical advantage of relational
+ database systems. Rather than writing a computer program
+ to find records of interest, the relational system user
+ can just type a query in a simple syntax, and let the
+ engine do the work. This gives users enormous flexibility;
+ they do not need to decide in advance what kind of
+ searches they want to do, and they do not need expensive
+ programmers to find the data they need. Learning SQL
+ requires some effort, but it's much simpler than a
+ full-blown high-level programming language for most
+ purposes. And there are a lot of programmers who have
+ already learned SQL.
+ </p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm2389408"></a>Object-oriented databases</h3>
+ <h3 class="title"><a id="idm3331136"></a>Object-oriented databases</h3>
</div>
</div>
</div>
- <p>Object-oriented databases are less common than relational systems, but
-are still fairly widespread. Most object-oriented databases were
-originally conceived as persistent storage systems closely wedded to
-particular high-level programming languages like C++. With the spread
-of Java, most now support more than one programming language, but
-object-oriented database systems fundamentally provide the same class
-and method abstractions as do object-oriented programming languages.</p>
- <p>Many object-oriented systems allow applications to operate on objects
-uniformly, whether they are in memory or on disk. These systems create
-the illusion that all objects are in memory all the time. The advantage
-to object-oriented programmers who simply want object storage and
-retrieval is clear. They need never be aware of whether an object is in
-memory or not. The application simply uses objects, and the database
-system moves them between disk and memory transparently. All of the
-operations on an object, and all its behavior, are determined by the
-programming language.</p>
- <p>Object-oriented databases aren't nearly as widely deployed as relational
-systems. In order to attract developers who understand relational
-systems, many of the object-oriented systems have added support for
-query languages very much like SQL. In practice, though, object-oriented
-databases are mostly used for persistent storage of objects in C++ and
-Java programs.</p>
+ <p>
+ Object-oriented databases are less common than
+ relational systems, but are still fairly widespread. Most
+ object-oriented databases were originally conceived as
+ persistent storage systems closely wedded to particular
+ high-level programming languages like C++. With the spread
+ of Java, most now support more than one programming
+ language, but object-oriented database systems
+ fundamentally provide the same class and method
+ abstractions as do object-oriented programming
+ languages.
+ </p>
+ <p>
+ Many object-oriented systems allow applications to
+ operate on objects uniformly, whether they are in memory
+ or on disk. These systems create the illusion that all
+ objects are in memory all the time. The advantage to
+ object-oriented programmers who simply want object storage
+ and retrieval is clear. They need never be aware of
+ whether an object is in memory or not. The application
+ simply uses objects, and the database system moves them
+ between disk and memory transparently. All of the
+ operations on an object, and all its behavior, are
+ determined by the programming language.
+ </p>
+ <p>
+ Object-oriented databases aren't nearly as widely
+ deployed as relational systems. In order to attract
+ developers who understand relational systems, many of the
+ object-oriented systems have added support for query
+ languages very much like SQL. In practice, though,
+ object-oriented databases are mostly used for persistent
+ storage of objects in C++ and Java programs.
+ </p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm2511776"></a>Network databases</h3>
+ <h3 class="title"><a id="idm2845328"></a>Network databases</h3>
</div>
</div>
</div>
- <p>The "network model" is a fairly old technique for managing and
-navigating application data. Network databases are designed to make
-pointer traversal very fast. Every record stored in a network database
-is allowed to contain pointers to other records. These pointers are
-generally physical addresses, so fetching the record to which it refers
-just means reading it from disk by its disk address.</p>
- <p>Network database systems generally permit records to contain integers,
-floating point numbers, and character strings, as well as references to
-other records. An application can search for records of interest. After
-retrieving a record, the application can fetch any record to which it
-refers, quickly.</p>
- <p>Pointer traversal is fast because most network systems use physical disk
-addresses as pointers. When the application wants to fetch a record,
-the database system uses the address to fetch exactly the right string
-of bytes from the disk. This requires only a single disk access in all
-cases. Other systems, by contrast, often must do more than one disk read
-to find a particular record.</p>
- <p>The key advantage of the network model is also its main drawback. The
-fact that pointer traversal is so fast means that applications that do
-it will run well. On the other hand, storing pointers all over the
-database makes it very hard to reorganize the database. In effect, once
-you store a pointer to a record, it is difficult to move that record
-elsewhere. Some network databases handle this by leaving forwarding
-pointers behind, but this defeats the speed advantage of doing a single
-disk access in the first place. Other network databases find, and fix,
-all the pointers to a record when it moves, but this makes
-reorganization very expensive. Reorganization is often necessary in
-databases, since adding and deleting records over time will consume
-space that cannot be reclaimed without reorganizing. Without periodic
-reorganization to compact network databases, they can end up with a
-considerable amount of wasted space.</p>
+ <p>
+ The "network model" is a fairly old technique for
+ managing and navigating application data. Network
+ databases are designed to make pointer traversal very
+ fast. Every record stored in a network database is allowed
+ to contain pointers to other records. These pointers are
+ generally physical addresses, so fetching the record to
+ which it refers just means reading it from disk by its
+ disk address.
+ </p>
+ <p>
+ Network database systems generally permit records to
+ contain integers, floating point numbers, and character
+ strings, as well as references to other records. An
+ application can search for records of interest. After
+ retrieving a record, the application can fetch any record
+ to which it refers, quickly.
+ </p>
+ <p>
+ Pointer traversal is fast because most network systems
+ use physical disk addresses as pointers. When the
+ application wants to fetch a record, the database system
+ uses the address to fetch exactly the right string of
+ bytes from the disk. This requires only a single disk
+ access in all cases. Other systems, by contrast, often
+ must do more than one disk read to find a particular
+ record.
+ </p>
+ <p>
+ The key advantage of the network model is also its main
+ drawback. The fact that pointer traversal is so fast means
+ that applications that do it will run well. On the other
+ hand, storing pointers all over the database makes it very
+ hard to reorganize the database. In effect, once you store
+ a pointer to a record, it is difficult to move that record
+ elsewhere. Some network databases handle this by leaving
+ forwarding pointers behind, but this defeats the speed
+ advantage of doing a single disk access in the first
+ place. Other network databases find, and fix, all the
+ pointers to a record when it moves, but this makes
+ reorganization very expensive. Reorganization is often
+ necessary in databases, since adding and deleting records
+ over time will consume space that cannot be reclaimed
+ without reorganizing. Without periodic reorganization to
+ compact network databases, they can end up with a
+ considerable amount of wasted space.
+ </p>
</div>
<div class="sect2" lang="en" xml:lang="en">
<div class="titlepage">
<div>
<div>
- <h3 class="title"><a id="idm1916248"></a>Clients and servers</h3>
+ <h3 class="title"><a id="idm1493864"></a>Clients and servers</h3>
</div>
</div>
</div>
- <p>Database vendors have two choices for system architecture. They can
-build a server to which remote clients connect, and do all the database
-management inside the server. Alternatively, they can provide a module
-that links directly into the application, and does all database
-management locally. In either case, the application developer needs
-some way of communicating with the database (generally, an Application
-Programming Interface (API) that does work in the process or that
-communicates with a server to get work done).</p>
- <p>Almost all commercial database products are implemented as servers, and
-applications connect to them as clients. Servers have several features
-that make them attractive.</p>
- <p>First, because all of the data is managed by a separate process, and
-possibly on a separate machine, it's easy to isolate the database server
-from bugs and crashes in the application.</p>
- <p>Second, because some database products (particularly relational engines)
-are quite large, splitting them off as separate server processes keeps
-applications small, which uses less disk space and memory. Relational
-engines include code to parse SQL statements, to analyze them and
-produce plans for execution, to optimize the plans, and to execute
-them.</p>
- <p>Finally, by storing all the data in one place and managing it with a
-single server, it's easier for organizations to back up, protect, and
-set policies on their databases. The enterprise databases for large
-companies often have several full-time administrators caring for them,
-making certain that applications run quickly, granting and denying
-access to users, and making backups.</p>
- <p>However, centralized administration can be a disadvantage in some cases.
-In particular, if a programmer wants to build an application that uses
-a database for storage of important information, then shipping and
-supporting the application is much harder. The end user needs to install
-and administer a separate database server, and the programmer must
-support not just one product, but two. Adding a server process to the
-application creates new opportunity for installation mistakes and
-run-time problems.</p>
+ <p>
+ Database vendors have two choices for system
+ architecture. They can build a server to which remote
+ clients connect, and do all the database management inside
+ the server. Alternatively, they can provide a module that
+ links directly into the application, and does all database
+ management locally. In either case, the application
+ developer needs some way of communicating with the
+ database (generally, an Application Programming Interface
+ (API) that does work in the process or that communicates
+ with a server to get work done).
+ </p>
+ <p>
+ Almost all commercial database products are implemented
+ as servers, and applications connect to them as clients.
+ Servers have several features that make them
+ attractive.
+ </p>
+ <p>
+ First, because all of the data is managed by a separate
+ process, and possibly on a separate machine, it's easy to
+ isolate the database server from bugs and crashes in the
+ application.
+ </p>
+ <p>
+ Second, because some database products (particularly
+ relational engines) are quite large, splitting them off as
+ separate server processes keeps applications small, which
+ uses less disk space and memory. Relational engines
+ include code to parse SQL statements, to analyze them and
+ produce plans for execution, to optimize the plans, and to
+ execute them.
+ </p>
+ <p>
+ Finally, by storing all the data in one place and
+ managing it with a single server, it's easier for
+ organizations to back up, protect, and set policies on
+ their databases. The enterprise databases for large
+ companies often have several full-time administrators
+ caring for them, making certain that applications run
+ quickly, granting and denying access to users, and making
+ backups.
+ </p>
+ <p>
+ However, centralized administration can be a
+ disadvantage in some cases. In particular, if a programmer
+ wants to build an application that uses a database for
+ storage of important information, then shipping and
+ supporting the application is much harder. The end user
+ needs to install and administer a separate database
+ server, and the programmer must support not just one
+ product, but two. Adding a server process to the
+ application creates new opportunity for installation
+ mistakes and run-time problems.
+ </p>
</div>
</div>
<div class="navfooter">
@@ -348,9 +480,7 @@ run-time problems.</p>
<td width="40%" align="right"> <a accesskey="n" href="intro_dbis.html">Next</a></td>
</tr>
<tr>
- <td width="40%" align="left" valign="top">Chapter 1. 
- Introduction
-  </td>
+ <td width="40%" align="left" valign="top">Chapter 1.  Introduction  </td>
<td width="20%" align="center">
<a accesskey="h" href="index.html">Home</a>
</td>