AllegroCache - Object Persistence in Lisp

AllegroCache is a high-performance, dynamic object caching database system. It allows programmers to work directly with objects as if they were in memory while in fact the object data is always stored persistently. It supports a full transaction model with long and short transactions, and meets the classic ACID requirements for a reliable and robust database. It automatically maintains referential integrity of complex data objects. AllegroCache provides 64-bit real-time data caching on the application memory to achieve very high data access throughput by applications over as large a data set as necessary.

AllegroCache Update

Building on the successful introduction of AllegroCache, initially with the release of ACL 8.0, Franz continues to add customer driven features to ensure their commercial advantage. Though it is included with ACL, AllegroCache is a rapidly evolving product and not tied to the ACL release cycle. You can easily insure you are working with the latest version by evaluating a require update form when you start ACL. The functionality in each new version is documented in the AllegroCache Reference Manual.

AllegroCache Features

New features in v4.0

  • Improved storage of large objects -- The underlying btree files now store and reclaim space for large objects more efficiently.
  • Some of the new features since the initial release include:

    • SMP Optimized -- perform simultaneous operations on index btrees
    • Compressed Indexes -- reduces database size by up to 50%
    • Regex Cursors -- efficiently match string values against regular expressions
    • Bulk Loading -- Improved performance adding objects to the database
    • Transaction Logging -- Restore databases after power failure or disk crash
    • Expression Cursors -- Iterate over a set of instances that satisfy a predicate over multiple slots of an instance
    • Range Queries -- Retrieve objects with slots that match a range of values
    • Improved Back End Btrees -- Better performance and efficiency
    • Overall Performance Improvments

    AllegroCache Features

    • Persistent CLOS Objects in Allegro Common Lisp -- Class definitions are stored as first class objects in the database
    • Dynamic Schema Evolution -- Redefine classes on the fly, persistent objects are lazily updated when accessed
    • Standalone & Client Server -- Single user on local disk or multiple clients talking to single server over sockets
    • Native lisp btrees -- Comparable in speed with BerkeleyDB, with more control
    • Transactional model -- All ACID features, commit/rollback, and optimistic concurrency
    • Supports databases with billions of objects (and Terabytes of Data)
    • Convenient macros to loop over classes, maps and sets
    • Indexed slots -- A mapping from slot-values to objects, retrieve objects and object ids (oid)
    • Maps -- Transactionally safe persistent hashtables
    • Sets -- Persistent large collections of objects
    • Supports most common datatypes -- Including unsigned-byte 8 arrays, maps and sets
    • Object ID's unique for the lifetime of the database -- User accessible
    • Dump the database into XML files
    • Restore database from the XML dump
    • User controlled caching -- For the size of the btrees and the total number of objects stored in the cache

What people are saying about AllegroCache

What people are saying about AllegroCache

"I would like to point out that so far no other database has shown the speed or ease of use that I find using AllegroCache." ......Wesley Kerr

"With AllegroCache, it's almost too easy to create objects." ......John Foderaro

"For many tasks, using an RDBMS is like using a hammer when a screwdriver is needed. If your application has to deal with persisting and querying complex data structures, the combination of AllegroCache and Allegro Prolog makes the job of managing your data a whole lot easier." ...... Bill Clementson

"AllegroCache is the heart of our rule-based Department of Defense solicitation selection system (winStoic). Configured in Client/Server mode, AC processes several million EDI (Electronic Data Interchange) segments every month and on a standard server. Its unique ability to dynamically resolve changing schema has allowed us to extend functionality, on live data, accelerating the introduction of critical functionality from weeks using traditional DBMS systems to hours. Because we interface with a half dozen real-time, web-based services via XML and SOAP, ACÒ³ ability to work arbitrate numerous asynchronous connections has obviated the need for thousands of lines of cumbersome synchronization code. Last, because AC is built on top of CLOS, its interface is simple and intuitive." ...... Glenn House, President 2Is Inc.

"AllegroCache perfectly closes the gap between CLOS and object persistence. Following in the best traditions of Common Lisp and CLOS, AllegroCache offers power and flexibility wrapped in a simple and straightforward API. AllegroCache just feels right, embodying another example of Christopher Alexander's "quality without a name" which is sought after in software design and engineering worlds, however Franz Inc. also puts a good name to this quality product." ......Konstantin Zakharov

"We successfully integrated it inside PEPITo in less than a day. At this stage, we can use AllegroCache just like any other data source (excel, mysql, odbc) with the difference that AllegroCache provides us with a real object-oriented database. It means that the user can 'play' with the objects, perform actions on objects that have a direct impact on the data, implement complex relationships between objects, etc... The powerful 'rollback' mechanism provides the possibility to try something, look at the result and rollback if it is not satisfying." ..... Laurent Eschenauer. R and D Engineer, PEPITe S.A.

"How I'd sum up AllegroCache: the database interface is so simple it's almost invisible. What amazes me is how much power that simple stuff has; you just program Lisp and don't really think about it." ...... Byron Fast, Boomtree Inc.


"The Common Lisp community doesn't have a common story when it comes to object persistence as an orthogonal feature to the language. We don't even have a standard way to do object serialization or industrial-grade B+trees as a native data structure. Franz decided to explore a new object-oriented database design, AllegroCache, for Lisp application developers. Several people have pointed out to us that the majority of the IT industry is moving in the direction of Object Relational Mappings on top of relational databases, and that our object-oriented database might be the wrong thing at the wrong time. While those concerns are not without merit, they overlook some critical developments in the IT industry especially regarding the Lisp community. First of all..." Jans Aasman and John Foderaro (ILC 2005 paper, html)

White Papers, Demonstrations, Presentations

AllegroCache White Paper

AllegroCache White Paper

AllegroCache Presentation

This is a slide presentation that introduces AllegroCache.

AllegroCache Presentation 20 Minutes.

AllegroCache Demonstration

This is an AllegroCache product demonstration. It is not meant to be a comprehensive training class on AllegroCache, rather an informal overview in under 25 minutes to get you started. Please refer to the user documentation for all of the details.

AllegroCache Demonstration 24 minutes

Get the files referred to in the demo here.

AllegroCache Documentation

Latest version of AllegroCache

The latest versions of AllegroCache can be downloaded here.

System Requirements:

To use AllegroCache, you will need to have Allegro CL 8.0 or greater installed. If you do not have a current license, please email sales@franz.com or call (510) 452-2000.

Copyright © 2023 Franz Inc., All Rights Reserved | Privacy Statement Twitter