Friday, June 25, 2010

Topics for Upcoming ZODB Book

There are several aspects of using the ZODB which need unusually in-depth coverage. What may be surprising to some readers is that these are supporting libraries of the ZODB. The most important of these libraries which could be used outside of the context of the ZODB is transaction. The transaction library for the ZODB is the most robust generic transaction library available in the Python world. It is library-oriented and easier to include into any python program than the deeply integrated transaction frameworks such as MTS or JTA. Why django and turbogears does not use the transaction package has puzzled me.

Debugging approaches with the ZODB is vital. The majority of users reading this book will be familiar with RDBMS/SQL. Since ZODB is NoSQL this audience will need to understand how to use a new tool chain to accomplish debugging. An example of this would be: If you are using MSSQLServer you can run the SQL Profiler and watch the SQL statements being executed as your program sends them. The ZODB does not have a traditional client/server architecture such as SQL. This means that debugging requires a different tactic. (Looking for some experienced ZODB developers to blog on debugging approaches;)

Another important characteristic of the ZODB which will need to be documented thoroughly will be concurrency and conflict resolution. Currently the ZODB is transactional (rumors in making this optional?). The current transaction requirement is at odds with most of NoSQL and one of the reasons the ZODB community does not more closely associate itself with the movement. Real world applications have concurrent updates. Newbies who do not use conflict-aware data structures can run into problems. This is a well known problem set and can be made approachable with documentation incrementally introducing people to the concepts. It is easy for experienced developers to dive into the inner-workings of technology and turn off new users. This is probably the topic we want the most focus.

Partitioning databases, BLOBs, and Import/Export are native ZODB topics that will also be documented. What other features of the ZODB do you think should be documented? What priorities would you give each feature of the ZODB?


  1. Puzzle no longer! Turbogears 2 uses transaction, repoze.tm2 and zope.sqlalchemy.

  2. This comment has been removed by the author.