Certain features or metrics may help you determine which database type is best suited to your deployments.
The footprint of an UltraLite database and management system is small—which only adds 400-500 KB to your application size in the case of the C/C++ version. Comparatively, the SQL Anywhere database, database server, and synchronization client add approximately 6 MB. While UltraLite does not support some of the features included with SQL Anywhere (for example, triggers and stored procedures), all of the basic features of a relational database are included.
If you are unsure which database you require, compare the supported features of SQL Anywhere and UltraLite. An X indicates that a feature is supported.
|Feature required||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. 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|
|XML unload and load utilities||X||UltraLite uses separate administration tools to accomplish XML load and unloads. It is not built into the runtime. See UltraLite Load XML to Database utility (ulload) and UltraLite Unload Database 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.|
Not all SQL functions are available for use in UltraLite applications. If you use an unsupported function, you trigger a
|SQL statements||X||Limited||The scope of SQL statements are limited in UltraLite compared to SQL Anywhere. See UltraLite SQL statement reference.|
|Integrated HTTP server||X|
|Strong encryption for database files and network communications||X||X|
|Event scheduling and handling||X|
|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. However, if you are running simple queries, UltraLite can run faster. See Execution plans in UltraLite.|
|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.|
|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 accordingly. 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|
|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.|
|Supports Palm OS||X|
|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, or SQL Anywhere||X||X|
|Built-in synchronization||X||Unlike SQL Anywhere deployments, UltraLite does not require a client agent to facilitate synchronization. Synchronization is built into the UltraLite runtime to minimize the components you need to deploy. See UltraLite clients.|
|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.|
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.|
|Send feedback about this page via email or DocCommentXchange||Copyright © 2008, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.0|