|Stable release||V10.3 / 23 January 2014|
|Written in||C, C++|
c-treeACE is a cross-platform database engine developed by FairCom Corporation. Software developers typically embed the c-treeACE engine within the applications that they create and then deploy the application and engine together as an integrated solution.
At its core, c-treeACE uses a record-oriented, Indexed Sequential Access Method (ISAM) structure offering high speed indexing mechanisms over those files. Developers can use these direct access methods to design the data and index structures that closely parallel the needs of their application. This paradigm is sometimes referred to as an application-specific database or an embedded database because of the tightly coupled nature of the application and database.
The nature of c-treeACE allows it to be used in a range of products including: embedded systems that require limited disk and memory footprint and silent operation; shrink-wrap products developed by ISVs that require cross-platform support, minimal maintenance, and mass deployment; and enterprise systems that depend on performance and more precision control of database operations than a traditional enterprise database offers.
Two versions of the product are available. c-treeACE Express is freely available for development from FairCom's web site and supports only the client/server architecture. The client-side libraries are precompiled, making it easy to use for evaluation. c-treeACE Professional is licensed separately and supports all architectures and includes full source code for the client libraries and much of the source code for the server.
c-treeACE offers support for the following features:
- ACID-compliant transactions
- Disk-based and memory files controlled at the file level
- Configurable data and index cache sizes
- Automatic disaster recovery
- Partitioned files
- Realtime/Hot backups
- Replication API
- Stored procedures, triggers, and user defined functions
- Concurrent SQL and record-oriented ISAM access
- Graphical administrative tools and utilities
c-treeACE has a layered system architecture with different application programming interfaces (APIs) available to the developer at each layer. The lower layers have proprietary APIs that allow more direct control of data and index manipulation at the expense of added complexity whereas higher layers offer more industry standard APIs but may offer less precise control. Software developers can chose to use one API for the application or use multiple APIs concurrently.
Underpinning c-treeACE is an ISAM engine. Developers can use a native C API to access the engine directly. Because the ISAM API can be used to create applications with non-relational data structures, c-treeACE can be included as part of the NoSQL class of databases. Here, because the software can also be used to create databases that are in fact SQL/relational (particularly with the SQL layer discussed below), NoSQL would refer to a database offering "Not Only SQL" rather than one that excludes SQL.
The next layer up is what FairCom terms the 'c-treeDB' layer. Interfaces at this layer include C and C++ APIs, VCL components for use with Delphi and C++Builder, and .NET components. In this layer, the data begins to take on a more
Finally there is an optional SQL layer that allows SQL-92 compliant access to the database engine. At this layer, there are multiple API choices including an ADO.NET data provider, Type 4 JDBC driver, ODBC driver, PHP interface, DbExpress driver for Delphi and C++ Builder. Stored procedures—written in Java for cross-platform portability—are included at the SQL layer.
c-treeACE includes several different architectures or operational models for developers to choose from.
The client/server model available with c-treeACE uses a typical client/server database architecture. The client-side libraries are compiled into the application and then communicate with the server component (identified as the c-treeACE Server in FairCom parlance). The c-treeACE Express package that FairCom makes freely available for development via its web site supports only this model. FairCom offers licenses to the server component for both ISAM servers (supporting the ISAM and c-treeDB APIs) and SQL servers (supporting all APIs, including SQL).
This model is the same as the client/server model above, but the entire server engine can be dynamically linked directly with the application. When practical, this approach can be beneficial by avoiding interprocess communication between the client and server. The communication instead takes place across the stack.
In the standalone models, there is no separate server process to which applications communicate. Instead, a standalone library is built using c-treeACE and linked to the application. Data management operations are performed via one of the record-oriented APIs which then use the native runtime library routines.
Both single user and multiuser libraries can be built with c-treeACE. The multiuser support is a shared-file mode implementation where the operating system provides the locking rather than the server process. Resource contention can become an issue with the standalone multiuser model as concurrency requirements and network operations increase.
The features available with these models are significantly limited as compared to the client/server model. Neither the single user nor multiuser standalone models support SQL APIs, stored procedures, triggers, user defined functions, replication, realtime backup, automatic recovery, encryption, memory files, or partitioned files. Although there is support for transaction processing and data/index caching with the single user libraries, there is no support with the multiuser libraries..
A hybrid model exists that FairCom calls LOCLIB which allows a client to perform both local data storage via a standalone library as well as client/server access.
c-treeACE natively supports the following operating systems:
The product was originally developed by Dr. William Fairman and released as the 'c-tree File Handler' in 1984. The name originated from the fact that c-tree was an implementation of a B+ tree written for the then burgeoning microcomputer market in the C programming language.
The product underwent a name change in 1990 with the release of 'c-tree Plus' version 6 and then again in 2008 with the release of 'c-treeACE' (Advanced Core Engine) version 9. Along with the name change in 2008 came the release of 'c-treeACE Express'.
- FairCom Corporation
- MacTech: "Getting To Know C-tree Plus"
- Dr. Dobb's: "FairCom c-treeACE Aims To Bridge Both SQL and NoSQL"
- "Application-Specific Databases". SD. SD Times. Retrieved 25 August 2011.
- "FairCom Marries Speed of ISAM With Standard SQL". SD Times. Retrieved 2011-08-25.
- "c-treeACE Professional Operational Models". FairCom. Retrieved 2011-08-25.
- "Cross Platform Support". FairCom. Retrieved 2011-08-25.
- "Outstanding Alumni". Columbia Public Schools Foundation. Retrieved 2011-08-25.
- "A brief history of FairCom Corporation". FairCom Corporation. Retrieved 2011-08-25.
- "FairCom releases c-treeSQL Server and new edition of c-tree Plus incorporating an array of interface technology". FairCom Corporation. Retrieved 2011-08-25.
- "FairCom announces c-treeACE Express database engine". FairCom Corporation. Retrieved 2011-08-25.