Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

History of Jet (thru 3.0)

18 views
Skip to first unread message

DFS

unread,
May 17, 2003, 2:42:56 PM5/17/03
to
A little light reading from the Jet DB Engine Programmer's Guide - circa
1996


Early Development

Designed for the original Omega product (an early prototype Windows database
designed by Microsoft), Microsoft Jet was initially intended to be a
single-user engine. Even though it was a distant relative of the database
engine used in the Microsoft Professional Development System (PDS), four
years before its initial release the Microsoft Jet code was barely
recognizable as derivative.

An early version of Microsoft Jet shipped with the WinLogin program, before
Microsoft Access 1.0. WinLogin was a utility shipped for Microsoft Windows
for Workgroups that managed user names, file locations, and other
administrative data. Intended as a stopgap until Microsoft Systems
Management Server shipped, WinLogin was not widely used.

There is some debate over the origins of the name "Jet engine." Some claim
that "Jet" is an acronym for "Joint Engine Technology," but other Microsoft
Jet insiders dismiss this, saying the name is simply a play on words.
Microsoft Jet was originally chosen as the code name for the engine
development effort and was never intended to be used outside Microsoft.

Jet 1.0

When it made its debut in November 1992 with the release of Microsoft Access
1.0, Microsoft Jet 1.0 introduced breakthrough technology for the desktop
database market. Microsoft Jet 1.0 was a relational database engine
providing not only the standard DBMS functionality such as data definition,
data manipulation, querying, security, and maintenance, but also technology
that had not yet been seen in desktop databases. These features included
updatable views, query on query capabilities, and seamless access to
heterogeneous data.

Described by its development team as "a significant engine hidden behind an
easy user interface," Microsoft Jet 1.0 raised the bar in terms of database
features. But it also lacked programmatic control over database objects. The
engine provided a few methods for accessing table and query structures, but
did not have a cohesive model for programmatic control over object
structures and data manipulation.


Jet 1.1

The quick acceptance of Microsoft Access 1.0 surprised even Microsoft. In a
very short period of time, over one million copies had been sold. This meant
that one million copies of the Microsoft Jet database engine had entered the
workplace. It quickly became clear that new features and solutions were
needed. These goals were accomplished in Microsoft Jet 1.1, introduced in
May 1993 with Microsoft Access 1.1 and Visual Basic 3.0.

Various improvements were made in Microsoft Jet 1.1 to provide greater
connectivity between Microsoft Jet and Open Database Connectivity (ODBC)
databases. This included a new OracleŽ ODBC driver, the introduction of a
connection manager (known internally as "ConMan") that provides services for
sharing and caching connections, and general improvements in the ability to
work with any ODBC driver. This version also saw the addition of the
MSysConf table. This table, which resides on the server, was added so that
database administrators could prevent the saving of password and user ID
information in an attached ODBC table.

Additionally, the maximum size of a database file was increased from 128
megabytes to approximately 1.1 gigabytes. Microsoft also added support for
attaching to Microsoft FoxPro tables, and some new collating sequences for
international users.
Microsoft Jet 1.1 includes version 1.1 of the Data Access Objects (DAO)
interface. This revision of DAO added the Data Definition Language (DDL)
capabilities that were missing from DAO 1.0. These benefits were available
in Visual Basic 3.0, but not in Microsoft Access 1.1.


Jet 2.0

Introduced in April 1994 with Microsoft Access 2.0, Microsoft Jet 2.0 offers
major enhancements over previous versions. Key areas of improvement include
enforced referential integrity and data validation at the engine level,
optimized query performance (using Rushmore technology gained in the FoxPro
merger), increased conformance to ANSI-standard SQL syntax rules, support
for UNION, sub-SELECT, and data-definition queries, and a full programming
interface to Microsoft Jet using DAO 2.0.

Microsoft Jet 2.0 also introduced support for cascading updates and
deletions, remote transaction management allowing transactions to be "sent"
to servers that support them, SQL pass-through queries, and new MSysConf
settings controlling how often and how many data fetches are made against
ODBC data sources. Additionally, support was added for remote index joins,
and new initialization file settings for debugging and tuning data
operations.

Referential integrity improvements were added to the engine late in the
development cycle. There was some internal debate as to whether it would be
prudent to develop this functionality at such a late stage (work began only
six months before Microsoft Access 2.0 shipped). As a compromise, work
proceeded on referential integrity, but a mechanism was put in place to pull
it from the product if it proved to be destabilizing for the engine as a
whole. A small group of Microsoft Jet developers was able to pull off what
some thought impossible: Cascading updates and deletes made it into
Microsoft Jet 2.0 on schedule.

Although Microsoft Jet 1.0 was revolutionary in the desktop database arena
for its inclusion of updatable joins, many complex rules governed when a
query was updatable. Basically, the rule was that you could update either
side of a one-to-one join, the many side of a one-to-many join, but neither
side of a many-to-many join. In version 2.0 the updatability rules were
changed such that you could update the one side of a one-to-many query. This
includes the ability to take advantage of the engine's new cascading update
and delete functionality.

Data Access Objects in Microsoft Jet 2.0 were greatly enhanced to provide a
complete hierarchical model of collections, objects, properties, and
methods. This hierarchy provides the developer with almost complete access
to the engine's underlying services, including support for data definition
and manipulation, workspace and transaction management, and programmatic
access to security. The DAO library that shipped with Microsoft Jet 2.0
contains the first vestiges of OLE Automation. As some users have
discovered, the DAO2016.DLL file can be browsed with a type library browser
such as the one in Microsoft Excel 5.0 (Tools menu, References command).
However, it is not usable unless Microsoft Access is running. The Data
Outline control that shipped with the Microsoft Access Developer's Toolkit
made some use of these new interfaces. They were, however, added mainly in
anticipation of future DAO releases.

With all the new features in Microsoft Jet 2.0, it was apparent that some
mechanism would have to be created to allow users of Visual Basic 3.0 to
take advantage of them. The Visual Basic compatibility layer arose as a
classic example of compromise between conflicting constraints. The necessity
of changing the data format to provide features like table-level validation
and referential integrity, when combined with the Microsoft Access 2.0
decision to require users to convert their databases from 1.x format, meant
that something had to be done for users of Visual Basic 3.0. The easy
solution for the Microsoft Jet development team would have been a new
version of Visual Basic. However, the Visual Basic team was still recovering
from two releases in six months, and an immediate new version was not an
option for them. From much negotiation and hard technical analysis, the
Visual Basic compatibility layer was born. It was decided that in the
future, Microsoft Access and Visual Basic would share engine revisions.

Jet 2.5

Introduced in October 1994 with the Microsoft Access 2.0 Service Pack,
Microsoft Jet 2.5 was an interim release designed to achieve two goals: to
minimize the incidence of databases being incorrectly marked as corrupt, and
to add support for the new ODBC Desktop Database Drivers.
Probably the biggest feature of Microsoft Jet 2.5 was that it contained the
first 32-bit release of the engine. Many minor features were added to
support the ODBC Desktop Database Drivers. The previous version of the
drivers included only the bottom layer of Microsoft Jet, which allows
reading and writing of database files. With the new drivers, support was
added to include all of the Microsoft Jet query engine, so some changes were
necessary to provide enhanced compatibility with the much simpler query
engine that had been developed for version 1.0.

Another change modified when the commit byte values were changed. Microsoft
Jet 2.0 had a delay period before the commit byte status changed from a flag
indicating that data was being written to disk to a flag indicating that the
database for that user was in a normal state. There were some instances in
which a user could normally close the database without setting his or her
flag back to a normal state. Microsoft Jet 2.5 changed this behavior by
immediately changing the flag back to a normal state after a write to the
database was completed. In this way, performance is not impacted.

Version 2.5 was the first release following an internal reorganization that
placed the ODBC and Microsoft Jet groups under common management. One of the
immediate gains, was, of course, having the full Microsoft Jet database
engine available with the Desktop Database Drivers. Another of the gains for
Microsoft Jet was the addition of the Text and Microsoft Excel data formats
as true formats rather than formats just for import and export.
Finally, internal changes were made to support a new expression service
provided by Visual Basic for Applications (VBA) for use with the Desktop
Database Drivers (VBA2[32].DLL). The requirement that Microsoft Jet continue
to run with Microsoft Access made for some interesting internal architecture
problems resulting from trying to cope with multiple simultaneous users
running Microsoft Jet.


Jet 3.0

Introduced in the fall of 1995, Microsoft Jet 3.0 offers new features and
improved performance. The most important aspect of this upgrade is its full
32-bit implementation for use in environments such as Microsoft Windows 95
and Microsoft Windows NTT.

Many changes were made to the database format and the way the engine handles
data, with the goal of making most operations substantially faster. Among
these changes was the implementation of multithreading: By default,
Microsoft Jet 3.0 uses three threads to perform read-ahead and write-behind
operations and for cache management.

To meet the increase in workgroup applications, Microsoft Jet 3.0 introduced
replication capabilities. These capabilities allow developers to create
replicable databases that can be used in different locations. Microsoft Jet
can synchronize these replicas and keep data current.


0 new messages