Misplaced Pages

Access Database Engine

Article snapshot taken from Wikipedia with creative commons attribution-sharealike license. Give it a read and then ask your questions in the chat. We can research this topic together.

A database engine (or storage engine ) is the underlying software component that a database management system (DBMS) uses to create, read, update and delete (CRUD) data from a database . Most database management systems include their own application programming interface (API) that allows the user to interact with their underlying engine without going through the user interface of the DBMS.

#648351

67-864: The Access Database Engine (also Office Access Connectivity Engine or ACE and formerly Microsoft Jet Database Engine , Microsoft JET Engine or simply Jet ) is a database engine on which several Microsoft products have been built. The first version of Jet was developed in 1992, consisting of three modules which could be used to manipulate a database. JET stands for Joint Engine Technology . Microsoft Access and Visual Basic use or have used Jet as their underlying database engine. However, it has been superseded for general use, first by Microsoft Desktop Engine (MSDE), then later by SQL Server Express . For larger database needs, Jet databases can be upgraded (or, in Microsoft parlance, "up-sized") to Microsoft's flagship SQL Server database product. Jet, being part of

134-448: A deadlock occurs, and neither transaction can move forward. Transaction-processing systems are designed to detect these deadlocks when they occur. Typically both transactions will be cancelled and rolled back, and then they will be started again in a different order, automatically, so that the deadlock does not occur again. Or sometimes, just one of the deadlocked transactions will be cancelled, rolled back, and automatically restarted after

201-435: A linear address space where every bit of data has a unique address. In practice, only a very small percentage of addresses are kept as initial reference points, which also require storage. Most data is accessed instead by indirection using displacement calculations (distance in bits from the reference points) and data structures which define access paths (using pointers) to all needed data in an effective manner, optimized for

268-629: A relational database management system (RDBMS), allows the manipulation of relational databases . It offers a single interface that other software can use to access Microsoft databases and provides support for security, referential integrity , transaction processing , indexing , record and page locking, and data replication. In later versions, the engine has been extended to run SQL queries, store character data in Unicode format, create database views and allow bi-directional replication with Microsoft SQL Server. There are three modules to Jet: One

335-666: A Large Number data type. From a data access technology standpoint, Jet is considered a deprecated technology by Microsoft, but Microsoft continues to support ACE as part of Microsoft Access. Microsoft provides the JET drivers for Microsoft Windows only and third party software support for JET databases is almost exclusively found on Windows. However, there are open source projects that enable working with JET databases on other platforms including Linux . Notably, MDB Tools and its much extended Java port named Jackcess as well as UCanAccess . Database engine The term "database engine"

402-484: A Microsoft internal database product development project, code-named Cirrus. Cirrus was developed from a pre-release version of Visual Basic code and was used as the database engine of Microsoft Access . Tony Goodhew, who worked for Microsoft at the time, says "It would be reasonably accurate to say that up until that stage Jet was more the name of the team that was assigned to work on the DB engine modules of Access rather than

469-490: A SQL SELECT statement. The query is then compiled — this involves parsing the query (involves syntax checking and determining the columns to query in the database table), then converting into an internal Jet query object format, which is then tokenized and organized into a tree-like structure. In Jet 3.0 onward these are then optimized using the Microsoft Rushmore query optimization technology. The query

536-699: A component team. For VB [Visual Basic] 3.0 they basically had to tear it out of Access and graft it onto VB. That's why they've had all those Jet/ODBC problems in VB 3.0." Jet became more componentized when Access 2.0 was released because the Access ODBC developers used parts of the Jet code to produce the ODBC driver. A retrofit was provided that allowed Visual Basic 3.0 users to use the updated Jet issued in Access 2.0. Jet 2.0

603-635: A computer bus , which is usually a volatile storage component. Computer memory communicates data to and from external storage, typically through standard storage interfaces or networks (e.g., fibre channel , iSCSI ). A storage array , a common external storage unit, typically has storage hierarchy of its own. A fast cache, typically consisting of volatile and fast DRAM , is connected (via standard interfaces) to drives. These drives may have different speeds, like flash drives and non-volatile magnetic disk drives . Speed and price are generally correlated. The drives may be connected to magnetic tapes , on which

670-439: A customer's savings account to a customer's checking account. This transaction involves at least two separate operations in computer terms: debiting the savings account by $ 700, and crediting the checking account by $ 700. If one operation succeeds but the other does not, the books of the bank will not balance at the end of the day. There must, therefore, be a way to ensure that either both operations succeed or both fail so that there

737-596: A database is stored in the form of bits, laid out into data structures on storage hardware. These data structures are designed for efficient reads and writes to and from the storage hardware. Typically the storage hardware itself is designed to meet the requirements of various systems, including databases, that extensively utilize storage. An operating DBMS always utilizes several storage types simultaneously. These different storage types, such as flash memory and external disk storage , each require different data layout methods. In principle, database storage can be viewed as

SECTION 10

#1732797962649

804-427: A database management system. (sometimes called after images ). This is not required for rollback of failed transactions but it is useful for updating the database management system in the event of a database failure, so some transaction-processing systems provide it. If the database management system fails entirely, it must be restored from the most recent back-up. The back-up will not reflect transactions committed since

871-501: A date to be entered into a date_logged column that is earlier than the current date and time, or a rule might be applied that forces people to enter a positive value into a numeric only field. Access to Jet databases is done on a per user-level. The user information is kept in a separate system database, and access is controlled on each object in the system (for instance by table or by query). In Jet 4, Microsoft implemented functionality that allows database administrators to set security via

938-648: A new default file format, (.accdb), that brought several improvements to Access, including complex data types such as multi-value fields, the attachment data type and history tracking in memo fields. It also brought security changes and encryption improvements and enabled integration with Microsoft Windows SharePoint Services 3.0 and Microsoft Office Outlook 2007. It can be obtained separately. The engine in Microsoft Access 2010 discontinued support for Access 1.0, Access 2.0, Lotus 1-2-3 and Paradox files. A 64-bit version of Access 2010 and its ACE Driver/Provider

1005-429: A new sort engine, long values (such as memos or binary data types) were stored in separate tables, and dynamic buffering (whereby Jet's cache was dynamically allocated at start up and had no limit and which changed from a first in, first out (FIFO) buffer replacement policy to a least recently used (LRU) buffer replacement policy). Jet 3.0 also allowed for database replication. Jet 3.0 was replaced by Jet 3.5, which uses

1072-552: A query. In large databases, this can reduce query time/cost by orders of magnitude. The simplest form of index is a sorted list of values that can be searched using a binary search with an adjacent reference to the location of the entry, analogous to the index in the back of a book. The same data can have multiple indexes (an employee database could be indexed by last name and hire date). Indexes affect performance, but not results. Database designers can add or remove indexes without changing application logic, reducing maintenance costs as

1139-426: A record of an "item" in stock with all its respective "order" records. The decision of whether to cluster certain objects or not depends on the objects' utilization statistics, object sizes, caches sizes, storage types, etc. Indexing is a technique some storage engines use for improving database performance. The many types of indexes share the common property that they reduce the need to examine every entry when running

1206-404: A record that breaks referential integrity, but Jet databases can instead use propagation constraints (cascading updates and cascading deletes) to maintain referential integrity. Jet also supports "business rules" (also known as "constraints"), or rules that apply to any column to enforce what data might be placed into the table or column . For example, a rule might be applied that does not allow

1273-635: A record to occur entirely within memory, with only one expensive disk write at the end. Implicit transactions were supported in Jet 3.0. These are transactions that are started automatically after the last transaction was committed to the database. Implicit transactions in Jet occurred when an SQL DML statement was issued. However, it was found that this had a negative performance impact in 32-bit Windows (Windows 95, Windows 98), so in Jet 3.5 Microsoft removed implicit transactions when SQL DML statements were made. Jet enforces entity integrity and referential integrity . Jet will by default prevent any change to

1340-559: A set of related operations into a unit that either completely succeeds or completely fails, one can simplify error recovery and make one's application more reliable. Transaction processing systems consist of computer hardware and software hosting a transaction-oriented application that performs the routine transactions necessary to conduct business. Examples include systems that manage sales order entry, airline reservations, payroll, employee records, manufacturing, and shipping. Since most, though not necessarily all, transaction processing today

1407-428: A short delay. Deadlocks can also occur among three or more transactions. The more transactions involved, the more difficult they are to detect, to the point that transaction processing systems find there is a practical limit to the deadlocks they can detect. In systems where commit and rollback mechanisms are not available or undesirable, a compensating transaction is often used to undo failed transactions and restore

SECTION 20

#1732797962649

1474-427: A short period of time. However, with optimistic locking one cannot be certain that the update will succeed because another user could lock the record first. With pessimistic locking, the update is guaranteed to succeed once the lock is obtained. Other users must wait until the lock is released in order to make their changes. Lock conflicts, which either require the user to wait, or cause the request to fail (usually after

1541-430: A single operation in the series fails during the exchange, the entire exchange fails. You do not get the book and the bookstore does not get your money. The technology responsible for making the exchange balanced and predictable is called transaction processing . Transactions ensure that data-oriented resources are not permanently updated unless all operations within the transactional unit complete successfully. By combining

1608-406: A timeout) are more common with pessimistic locking. Jet supports transaction processing for database systems that have this capability ( ODBC systems have one-level transaction processing, while several ISAM systems like Paradox do not support transaction processing). A transaction is a series of operations performed on a database that must be done together — this is known as atomicity and

1675-407: Is committed, changes are made only in memory and not actually written to disk. Transactions have a number of advantages over independent database updates. One of the main advantages is that transactions can be abandoned if a problem occurs during the transaction. This is called rolling back the transaction, or just rollback, and it restores the state of the database records to precisely the state before

1742-429: Is divided into individual, indivisible operations called transactions . Each transaction must succeed or fail as a complete unit; it can never be only partially complete. For example, when you purchase a book from an online bookstore, you exchange money (in the form of credit ) for a book. If your credit is good, a series of related operations ensures that you get the book and the bookstore gets your money. However, if

1809-411: Is done. Transaction processing guards against hardware and software errors that might leave a transaction partially completed. If the computer system crashes in the middle of a transaction, the transaction processing system guarantees that all operations in any uncommitted transactions are cancelled. Generally, transactions are issued concurrently. If they overlap (i.e. need to touch the same portion of

1876-433: Is frequently used interchangeably with " database server " or "database management system". A "database instance" refers to the processes and memory structures of the running database engine. Many of the modern DBMS support multiple storage engines within the same database. For example, MySQL supports InnoDB as well as MyISAM . Some storage engines are transactional . Additional engine types include: Information in

1943-459: Is interactive, the term is often treated as synonymous with online transaction processing . Transaction processing is designed to maintain a system's Integrity (typically a database or some modern filesystems ) in a known, consistent state, by ensuring that interdependent operations on the system are either all completed successfully or all canceled successfully. For example, consider a typical banking transaction that involves moving $ 700 from

2010-412: Is never any inconsistency in the bank's database as a whole. Transaction processing links multiple individual operations in a single, indivisible transaction, and ensures that either all operations in a transaction are completed without error, or none of them are. If some of the operations are completed but errors occur when the others are attempted, the transaction-processing system "rolls back" all of

2077-417: Is not in use is available. There are two mechanisms that Microsoft uses for locking : pessimistic locking , and optimistic locking . With pessimistic locking, the record or page is locked immediately when the lock is requested, while with optimistic locking, the locking is delayed until the edited record is saved. Conflicts are less likely to occur with optimistic locking, since the record is locked only for

Access Database Engine - Misplaced Pages Continue

2144-461: Is one of the ACID (Atomicity, Consistency, Isolation, and Durability), concepts considered to be the key transaction processing features of a database management system . For transaction processing to work (until Jet 3.0), the programmer needed to begin the transaction manually, perform the operations needed to be performed in the transaction, and then commit (save) the transaction. Until the transaction

2211-462: Is programmed to guarantee that the end result reflects a conflict-free outcome, the same as could be reached if executing the transactions sequentially in any order (a property called serializability ). In our example, this means that no matter which transaction was issued first, either the transfer to a different person or the move to the checking account succeeds, while the other one fails. The basic principles of all transaction-processing systems are

2278-457: Is selected upon DBMS development to best meet the operations needed for the types of data it contains. Type of data structure selected for a certain task typically also takes into consideration the type of storage it resides in (e.g., speed of access, minimal size of storage chunk accessed, etc.). In some DBMSs database administrators have the flexibility to select among options of data structures to contain user data for performance reasons. Sometimes

2345-514: Is the Data Access Objects (DAO) DLL. DAO provides an API that allows programmers to access JET databases using any programming language. Jet allows multiple users to access the database concurrently. To prevent that data from being corrupted or invalidated when multiple users try to edit the same record or page of the database, Jet employs a locking policy. Any single user can modify only those database records (that is, items in

2412-556: Is the Native Jet ISAM Driver , a dynamic link library (DLL) that can directly manipulate Microsoft Access database files (MDB) using a (random access) file system API. Another one of the modules contains the ISAM Drivers , DLLs that allow access to a variety of Indexed Sequential Access Method ISAM databases, among them xBase , Paradox , Btrieve and FoxPro , depending on the version of Jet. The final module

2479-657: Is the X/Open Distributed Transaction Processing (DTP) (see also Java Transaction API (JTA). However, proprietary transaction-processing environments such as IBM's CICS are still very popular, although CICS has evolved to include open industry standards as well. The term extreme transaction processing (XTP) was used to describe transaction processing systems with uncommonly challenging requirements, particularly throughput requirements (transactions per second). Such systems may be implemented via distributed or cluster style architectures. It

2546-416: Is then executed and the results passed back to the application or user who requested the data. Jet passes the data retrieved for the query in a dynaset . This is a set of data that is linked dynamically back to the database. Instead of having the query result stored in a temporary table, where the data cannot be updated directly by the user, the dynaset allows the user to view and update the data contained in

2613-691: The Office Access Connectivity Engine (ACE), but which is now called the Access Database Engine (However MS-Access consultants and VBA developers who specialize in MS-Access are more likely to refer to it as "the ACE Database Engine"). This engine was backward-compatible with previous versions of the Jet engine, so it could read and write (.mdb) files from earlier Access versions. It introduced

2680-488: The Web ), a single distributed database was not a practical solution. In addition, most online systems consist of a whole suite of programs operating together, as opposed to a strict client–server model where the single server could handle the transaction processing. Today a number of transaction processing systems are available that work at the inter-program level and which scale to large systems, including mainframes . One effort

2747-770: The SQL commands CREATE, ADD, ALTER, DROP USER and DROP GROUP. These commands are a subset of ANSI SQL 92 standard, and they also apply to the GRANT/REVOKE commands. When Jet 2 was released, security could also be set programmatically through DAO . Queries are the mechanisms that Jet uses to retrieve data from the database. They can be defined in Microsoft QBE (Query By Example), through the Microsoft Access SQL Window or through Access Basic's Data Access Objects (DAO) language. These are then converted to

Access Database Engine - Misplaced Pages Continue

2814-403: The back-up was made. However, once the database management system is restored, the journal of after images can be applied to the database ( rollforward ) to bring the database management system up to date. Any transactions in progress at the time of the failure can then be rolled back. The result is a database in a consistent, known state that includes the results of all transactions committed up to

2881-918: The data structures have selectable parameters to tune the database performance. Databases may store data in many data structure types. Common examples are the following: In contrast to conventional row-orientation, relational databases can also be column-oriented or correlational in the way they store data in any particular structure. In general, substantial performance improvement is gained if different types of database objects that are usually utilized together are laid in storage in proximity, being "clustered". This usually allows to retrieve needed related objects from storage in minimum number of input operations (each sometimes substantially time-consuming). Even for in-memory databases clustering provides performance advantage due to common utilization of large caches for input-output operations in memory, with similar resulting behavior. For example, it may be beneficial to cluster

2948-415: The database prior to its modification by a transaction are set aside by the system before the transaction can make any modifications (this is sometimes called a before image ). If any part of the transaction fails before it is committed, these copies are used to restore the database to the state it was in before the transaction began. It is also possible to keep a separate journal of all modifications to

3015-427: The database grows and database usage evolves. Indexes can speed up data access, but they consume space in the database, and must be updated each time the data is altered. Indexes therefore can speed data access but slow data maintenance. These two properties determine whether a given index is worth the cost. Transaction processing In computer science , transaction processing is information processing that

3082-510: The database) to which the user has applied a lock , which gives exclusive access to the record until the lock is released. In Jet versions before version 4, a page locking model is used, and in Jet 4, a record locking model is employed. Microsoft databases are organized into data "pages", which are fixed-length (2  kB before Jet 4, 4 kB in Jet 4) data structures. Data is stored in "records" of variable length that may take up less or more than one page. The page locking model works by locking

3149-414: The database), this can create conflicts. For example, if the customer mentioned in the example above has $ 150 in his savings account and attempts to transfer $ 100 to a different person while at the same time moving $ 100 to the checking account, only one of them can succeed. However, forcing transactions to be processed sequentially is inefficient. Therefore, concurrent implementations of transaction processing

3216-483: The dynaset. Thus, if a university lecturer queries all students who received a distinction in their assignment and finds an error in that student's record, the user would only need to update the data in the dynaset, which would automatically update the student's database record without the need for the user to send a specific update query after storing the query results in a temporary table. Jet originally started in 1992 as an underlying data access technology that came from

3283-433: The file. If the data source was external, then it would call on the correct ODBC driver to perform its request. The DAO DLL was a component that programmers could use to interface with the Jet engine, and was mainly used by Visual Basic and Access Basic programmers. The ISAM DLL's were a set of modules that allowed Jet to access three ISAM based databases: xBase, Paradox and Btrieve. Jet 2.0 was replaced with Jet 2.1, which used

3350-463: The functionality of applications increases, with less development effort. Jet 2.0 comprised three DLL's: the Jet DLL, the Data Access Objects (DAO) DLL and several external ISAM DLL's. The Jet DLL determined what sort of database it was accessing, and how to perform what was requested of it. If the data source was an MDB file (a Microsoft Access format) then it would directly read and write the data to

3417-408: The indices being stored in a clustered-index format, a new page allocation mechanism to improve Jet's read-ahead capabilities, improved delete operations that sped up processing, multi-threading (three threads were used to perform read ahead, write behind, and cache maintenance), implicit transactions (users did not have to instruct the engine to start manually and commit transactions to the database),

SECTION 50

#1732797962649

3484-496: The least active parts of a large database may reside. This may also be where backups are located. A data structure is an abstract construct that embeds data in a well defined manner. An efficient data structure allows manipulation of the data in efficient ways. The data manipulation may include data insertion, deletion, updating and retrieval in various modes. A certain data structure type may be very effective in certain operations, and very ineffective in others. A data structure type

3551-456: The moment of failure. In some cases, two transactions may, in the course of their processing, attempt to access the same portion of a database at the same time, in a way that prevents them from proceeding. For example, transaction A may access portion X of the database, and transaction B may access portion Y of the database. If at that point, transaction A then tries to access portion Y of the database while transaction B tries to access portion X,

3618-469: The needed data access operations. A database, while in operation, resides simultaneously in several types of storage, forming a storage hierarchy . Inside of a contemporary computer hosting a DBMS, most of the "database" part resides, partially replicated, in volatile storage . Data that are actively being processed and manipulated reside inside the processor , possibly in processor's caches . These data are read from and written to memory, typically through

3685-437: The operations of the transaction (including the successful ones), thereby erasing all traces of the transaction and restoring the system to the consistent, known state that it was in before processing of the transaction began. If all operations of a transaction are completed successfully, the transaction is committed by the system, and all changes to the database are made permanent; the transaction cannot be rolled back once this

3752-421: The original database". Reports, queries, macros and security were not handled by this tool, meaning that some manual modifications might have been needed if the application was heavily reliant on these Jet features. A standalone version of the Jet 4 database engine was a component of Microsoft Data Access Components (MDAC), and was included in every version of Windows from Windows 2000 on. The Jet database engine

3819-427: The pages, instead of individual records, which though less resource-intensive also means that when a user locks one record, all other records on the same page are collaterally locked. As a result, no other user can access the collaterally locked records, even though no user is accessing them and there is no need for them to be locked. In Jet 4, the record locking model eliminates collateral locks, so that every record that

3886-417: The same database structure but different locking strategies, making it incompatible with Jet 2.0. Jet 3.0 included many enhancements, including a new index structure that reduced storage size and the time that was taken to create indices that were highly duplicated, the removal of read locks on index pages, a new mechanism for page reuse, a new compacting method for which compacting the database resulted in

3953-408: The same database structure, but different locking strategies, making it incompatible with Jet 3.0. Jet 4.0 gained numerous additional features and enhancements. Microsoft Access versions from Access 2000 to Access 2010 included an "Upsizing Wizard" which could " upsize " (upgrade) a Jet database to "an equivalent database on SQL Server with the same table structure, data, and many other attributes of

4020-419: The same. However, the terminology may vary from one transaction-processing system to another, and the terms used below are not necessarily universal. Transaction-processing systems ensure database integrity by recording intermediate states of the database as it is modified, then using these records to restore the database to a known state if a transaction cannot be committed. For example, copies of information on

4087-479: The state. The actions taken as a group do not violate any of the integrity constraints associated with the state. Even though transactions execute concurrently, it appears to each transaction T, that others executed either before T or after T, but not both. Once a transaction completes successfully (commits), its changes to the database survive failures and retain its changes. Standard transaction-processing software , such as IBM 's Information Management System ,

SECTION 60

#1732797962649

4154-416: The system to a previous state. Jim Gray defined properties of a reliable transaction system in the late 1970s under the acronym ACID —atomicity, consistency, isolation, and durability. A transaction's changes to the state are atomic: either all happen or none happen. These changes include database changes, messages, and actions on transducers. Consistency : A transaction is a correct transformation of

4221-436: The transaction began. Transactions also permit the state of the database to remain consistent if a system failure occurs in the middle of a sequence of updates required to be atomic. There is no chance that only some of the updates will end up written to the database; either all will succeed, or the changes will be discarded when the database system restarts. With ODBC's in-memory policy, transactions also allow for many updates to

4288-404: Was first developed in the 1960s, and was often closely coupled to particular database management systems . Client–server computing implemented similar principles in the 1980s with mixed success. However, in more recent years, the distributed client–server model has become considerably more difficult to maintain. As the number of transactions grew in response to various online services (especially

4355-470: Was introduced, which in essence provides a 64-bit version of Jet. The driver is not part of the Windows operating system, but is available as a redistributable. The engine in Microsoft Access 2013 discontinued support for Access 95, Access 97 and xBase files, and it also discontinued support for replication. Version 1608 of Microsoft Access 2016 restored support for xBase files, and Version 1703 introduced

4422-558: Was only 32-bit and did not run natively under 64-bit versions of Windows. This meant that native 64-bit applications (such as the 64-bit versions of SQL Server) could not access data stored in MDB files through ODBC, OLE DB , or any other means, except through intermediate 32-bit software (running in WoW64 ) that acted as a proxy for the 64-bit client. With version 2007 onward, Access includes an Office-specific version of Jet, initially called

4489-459: Was released as several dynamic linked libraries (DLL's) that were utilized by application software , such as Microsoft's Access database. DLL's in Windows are "libraries" of common code that can be used by more than one application—by keeping code that more than one application uses under a common library which each of these applications can use independently code maintenance is reduced and

#648351