UltraLite feature comparison

In the C/C++ version, the UltraLite database and management system adds 400-500 KB to the size of your application. The SQL Anywhere database, database server, and synchronization client add approximately 6 MB.

Feature SQL Anywhere UltraLite Considerations
Transaction processing, referential integrity, and multi-table joins X X
Triggers, stored procedures, and views X
External stored procedures (callable external DLLs) X
Built-in referential and entity integrity X X

Declarative referential integrity, where deletes and updates are cascaded, is a feature that is not supported in UltraLite databases, except during synchronization when deletes are cascaded for this purpose.

UltraLiteJ does not enforce foreign key constraints.

See Avoiding synchronization issues with foreign key cycles.

Cascading updates and deletes X Limited
Dynamic, multiple database support X X With the UltraLite engine only.
Multi-threaded application support X X
Row-level locking X X
XML unload and load utilities X UltraLite uses separate administration tools to complete XML load and unloads. It is not built into the runtime. See UltraLite Load XML to Database utility (ulload) and UltraLite Database Unload utility (ulunload).
XML export and import utilities X SQL Anywhere uses SQL statements to export/import data to XML. You can also use dbunload to export your data. See Importing and exporting data.
SQLX functionality X
SQL functions X X

Not all SQL functions are available for use in UltraLite applications. If you use an unsupported function, you trigger a Feature not available in UltraLite error. See UltraLite SQL functions.

SQL statements X Limited The scope of SQL statements are limited in UltraLite compared to SQL Anywhere. See UltraLite SQL statements.
Integrated HTTP server X
Strong encryption for database files and network communications X X
Event scheduling and handling X X UltraLite event model differs from SQL Anywhere. UltraLiteJ does not support events.
High-performance, self-tuning, cost-based query optimizer X UltraLite has a query optimizer, but it is not as extensive as that of SQL Anywhere. Therefore, the UltraLite optimizer may not provide as high performance as the SQL Anywhere optimizer on complex queries.
Choice of several thread-safe APIs X X UltraLite gives application developers a uniquely flexible architecture that allows for the creation of applications for changing and/or varied deployment environments. See Choosing an UltraLite programming interface.
Cursor support X X See UltraLite limitations.
Dynamic cache sizing with an advanced cache management system X Cache sizing is static in UltraLite. Nonetheless, UltraLite allows you to set the cache size when the database is started, which gives you the ability to scale cache size. See UltraLite CACHE_SIZE connection parameter.
Database recovery after system or application failure X X
Binary Large Object (BLOB) support X X UltraLite cannot index or compare BLOBs.
Windows Performance Monitor integration X
Online table and index defragmentation X
Online backup X
Small footprint, which can be as small as 500 KB X Small footprint devices tend to have relatively slow processors. UltraLite employs algorithms and data structures that are targeted for these devices, so UltraLite continues to provide high performance and low memory use.
Direct device connections to a Windows Mobile device from the desktop. X SQL Anywhere databases need a database server before allowing desktop connections to the database that you deploy on a Windows Mobile device. On UltraLite, you simply need to prefix the connection string with WCE:\. See Windows Mobile.
High-performance updates and retrievals through the use of indexes X X

UltraLite uses a mechanism to determine whether each table is searched using an index or by scanning the rows directly.

Additionally, you can hash indexes to speed up data retrieval. See UltraLite max_hash_size creation parameter.

Synchronizing to Oracle, DB2, Sybase Adaptive Server Enterprise, Microsoft SQL Server, My SQL Sybase, or SQL Anywhere X X
Built-in synchronization X Unlike SQL Anywhere deployments, UltraLite does not require a client agent for synchronization. Synchronization is built into the UltraLite runtime to minimize the components you need to deploy. See UltraLite clients.
In-process execution X
Computed columns X
Declared temporary tables/global temporary tables X
System functions X UltraLite does not support SQL Anywhere system functions, including property functions. You cannot include them as part of your UltraLite application.
Timestamp columns X X

SQL Anywhere Transact-SQL timestamp columns are created with the DEFAULT TIMESTAMP default.

UltraLite timestamp columns are created with the DEFAULT CURRENT TIMESTAMP default. Therefore, UltraLite does not automatically update the timestamp when the row is updated.

User-based permission scheme to determine object-based ownership and access X UltraLite is primarily designed for single user databases in which an authorization system is not needed. However, you can include up to four user IDs and passwords, which are used for authentication purposes only. These users have access to all database objects. See UltraLite user authentication.
Spatial data X Limited UltraLite and UltraLiteJ both support point data only.
Full text data X