Receiving notifications about changes to items
Wednesday, March 8th, 2006To support the requirements of Chandler, the repository had to implement a richer set of notifications than what was originally offered with attribute monitors.
To support the requirements of Chandler, the repository had to implement a richer set of notifications than what was originally offered with attribute monitors.
A collection item is an item that wraps an abstract set of items or bi-directional item references.
During last week’s sprints I was asked to see how easy it was to import mail into Chandler from a local mailbox. Thanks to Python’s mailbox and email packages, the mailbox parsing was trivial. Similarly, Chandler’s domain model can represent email items and has a number of APIs that make creating such items from a raw email string very easy.
It’s been a while since I posted anything on the chandlerdb blog. That is now corrected with a few new posts about repository backup, recent performance improvements and version purging.
Chandler’s repository is versioned. Like a subversion source code repository, changes to items are saved into the repository as coherent versions. This enables to later merge together changes that occurred in different threads or processes instead of serializing changes by locking resources.
In the run up to the Chandler 0.6 release, a lot of performance improvements were made to the repository codebase. Many areas of Chandler were also reworked somewhat to make better use of performance critical repository features.
Chandler’s repository is intended to store a lot of data that one cannot afford to lose. It should come as no surprise that doing regular backups is strongly recommended. There are a few repository APIs, currently accessible from Chandler’s “Test” menu or from Chandler’s --restore command line option, that make it possible to backup and later restore a repository’s files.
A new type of value was added to the data model that combines sets of items using set arithmetic. Abstract sets of items do not store any item references but evaluate their operator against the sets or collections they wrap to implement appartenance tests and iteration. In addition, abstract sets notify their owner item whenever an item is added or removed from a backing collection.
(more…)Until recently, date and time value support was implemented in the data model with the help of Egenix’ mx extensions library. With the Python 2.3 release, new types for date and time values were introduced. The repository now makes use of them.
(more…)