Comparing EDB with Other Databases (Windows CE 5.0)
EDB provides enhanced functionality beyond CEDB, but both EDB and CEDB are available to you as you develop applications. Furthermore, Microsoft SQL Server 2005 Mobile Edition (SQL Server CE) is available for developing more sophisticated database-enabled applications. This section discusses these three different database engines, compares their features, and highlights the data compatibilities among the database engines.
For information about data type differences, see EDB Data Types and Size Limits.
When discussing database engines, it is important to understand differences in the terminology used for each engine. The following table compares common database engine terms:
EDB and CEDB term | SQL Server CE term | Definition |
---|---|---|
Sort Order | Index | A key that provides an ordering for rows. |
Data Type | Data Type | A definition of the type of data stored in a property. |
Property | Column | One field of data. All data in a property is of the same data type. |
Record | Row | A set of information that contains data for each property. |
Database | Table | A collection of properties and rows of data. |
Volume | Database | An object store, created as a single file, that contains one or more databases (in EDB/CEDB) or tables (in SQL Server CE). |
Comparing EDB with CEDB
EDB and CEDB both create a volume at the top of a file. This volume contains one or more databases. While EDB and CEDB share many of the same features and use a similar API for accessing databases, EDB includes support for these major features, unavailable in CEDB:
- Both explicit and implicit transactions
- Use of schemas to define the database structure
- Improved sort order support
- Support for stream data types
Conversely, there are a number of CEDB features not supported by EDB:
- A shared system volume
- Tracking of the last modified time or the size of a database
- A default sort order
- Support for Microsoft eMBedded Visual Basic®. You must use Microsoft eMBedded Visual C++® when developing applications that use EDB.
CEDB Compatibility
EDB is designed as a complete replacement for CEDB. The differences in the functionality and features of EDB and those of CEDB are significant enough that a database created with CEDB is not accessible to EDB; an EDB database is also not accessible to CEDB.
In order to simplify application development, the EDB API is very similar to the CEDB API, while extending core functionality to include sessions, transactions, and stream data types. The EDB API is not fully compatible with the CEDB API, and applications written to use CEDB will need to be updated to use EDB.
For information about how a specific EDB function or structure differs from the CEDB equivalent, see the specific function or structure in the EDB Reference.
OID Compatibility in EDB
There are two main types of object identifiers (OIDs) in EDB: a database OID and a row OID. Each OID is guaranteed to be unique within a volume and does not change as long as the object exists. Once the object is deleted, however, the OID is released and may be reused by EDB when a new object (database or row) is created. Because OIDs are recycled, they should not be used outside of EDB to track EDB objects. Instead, you can use a CEVT_AUTO_I4, CEVT_AUTO_I8, or CEVT_RECID typed property to track rows.
EDB uses its own OIDs to identify databases and rows within a volume. While EDB support of OIDs is much like that of CEDB, EDB OIDs cannot be recognized or used by any of the object-store APIs. In EDB, an OID is the most efficient way to access a row because it allows direct address to the row. Because OIDs are unique within a volume, you can use the volume GUID and the OID to uniquely identify an object.
Comparing EDB with SQL Server CE
EDB is based on the Microsoft SQL Server 2005 Mobile Edition (SQL Server CE) engine, and so both share many core functions. However, SQL Server CE is designed as a complete database solution, providing not only the engine, but also a query processor, full data synchronization support (merge replication and remote data access) with SQL Server, and row- and column-level tracking. SQL Server CE also supports much larger volume sizes. If your application will use very large volumes, SQL Server CE is a more appropriate database engine to use.
When developing applications that use EDB, you must develop your applications in Microsoft eMBedded Visual C++ and access features through the EDB APIs. When developing applications that use SQL Server CE, however, you can make use of the Microsoft .NET Compact Framework and the System.Data.SqlServerCe namespace.
Note Databases created with EDB are not accessible through the SQL Server CE API, and SQL Server CE databases are not accessible through the EDB API.
See Also
EDB Database Support | EDB Data Types and Size Limits | EDB Schema Support | Configurable EDB Volume Options | Multi-User Support in EDB | Using Notifications with EDB
Send Feedback on this topic to the authors