<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-15425053</id><updated>2012-01-07T19:24:30.478Z</updated><title type='text'>SimpleDBM - An Open Source Java Database Engine</title><subtitle type='html'>SimpleDBM is an Open Source Embeddable Database Engine written entirely in Java.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>61</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-15425053.post-5291011775269521047</id><published>2011-01-30T12:44:00.000Z</published><updated>2011-01-30T12:44:51.954Z</updated><title type='text'>Next version of SimpleDBM</title><summary type='text'>After a break, I have resumed work on creating SimpleDBM V2. This version is mostly a refactoring of the existing codebase to ensure:
Better project structure - break up the project into smaller modules.
Simple IOC container for auto wiring the modules.
TypeSystem now integral part of the core, hence some modules can take advantage of the Row structure; in the current version, the TypeSystem is </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/5291011775269521047/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=5291011775269521047&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5291011775269521047'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5291011775269521047'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2011/01/next-version-of-simpledbm.html' title='Next version of SimpleDBM'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-2755573534778164506</id><published>2010-05-02T12:31:00.000Z</published><updated>2010-05-02T12:31:25.846Z</updated><title type='text'>A Simple IOC Container</title><summary type='text'>All of the SimpleDBM modules are designed with constructor based dependency injection in mind. But so far, these dependencies have been manually coded. I want to move away from manual setting up of dependencies and was therefore looking for a small IOC container that would serve my needs. Unfortunately, all the available dependency injection frameworks appear to be bloated and huge; PicoContainer</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/2755573534778164506/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=2755573534778164506&amp;isPopup=true' title='2 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/2755573534778164506'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/2755573534778164506'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/05/simple-ioc-container.html' title='A Simple IOC Container'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-837317150929441455</id><published>2010-04-25T19:42:00.001Z</published><updated>2010-04-25T19:42:51.245Z</updated><title type='text'>Proposed license boilerplate</title><summary type='text'>Given below is the boilerplate license notice that will be add to SimpleDBM source files from version 2 onwards. This is based upon the boilerplate used by Mozilla.org. Note that I decided to add LGPL to the mix as well, so that SimpleDBM V2 will be triple licensed. Hopefully that will ensure compatibility with the vast majority of Open Source licenses. 

/** * DO NOT ALTER OR REMOVE COPYRIGHT </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/837317150929441455/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=837317150929441455&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/837317150929441455'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/837317150929441455'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/proposed-license-boilerplate.html' title='Proposed license boilerplate'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-5536495877657914422</id><published>2010-04-19T22:10:00.002Z</published><updated>2010-04-19T22:10:39.857Z</updated><title type='text'>Multi-licensing</title><summary type='text'>The next version of SimpleDBM will be available under the GPLv2 as now, as well as the Apache License. Dual licensing will allow people to use SimpleDBM in more flexible ways.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/5536495877657914422/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=5536495877657914422&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5536495877657914422'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5536495877657914422'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/multi-licensing.html' title='Multi-licensing'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-6179853535408643450</id><published>2010-04-18T23:52:00.001Z</published><updated>2010-04-18T23:52:32.013Z</updated><title type='text'>Network client server API released</title><summary type='text'>I am pleased to finally publish 1.0.18-ALPHA release of SimpleDBM. This release has following changes:
A network client server implementation that allows SimpleDBM to run as a standalone database server to which clients can connect remotely.
A sample application that demonstrates the use of the network API. The sample implements a simple discussion forum; front end has been created using Google </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/6179853535408643450/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=6179853535408643450&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/6179853535408643450'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/6179853535408643450'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/network-client-server-api-released.html' title='Network client server API released'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-7555205061504734749</id><published>2010-04-18T01:32:00.000Z</published><updated>2010-04-18T01:32:50.012Z</updated><title type='text'>Licensing revisited</title><summary type='text'>In a previous post I wrote about why I preferred GPL license for SimpleDBM. But I am no longer sure; my intention was always to ensure that SimpleDBM can be used by anyone without worrying about licensing issues, and I have no desire to put restrictions on other people's work. So if someone enhanced SimpleDBM, they should be free to do whatever they like with their enhancement, and although it </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/7555205061504734749/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=7555205061504734749&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7555205061504734749'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7555205061504734749'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/licensing-revisited.html' title='Licensing revisited'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-7605955690133605889</id><published>2010-04-10T22:43:00.001Z</published><updated>2010-04-10T22:46:39.485Z</updated><title type='text'>Roadmap</title><summary type='text'>I have been thinking about how SimpleDBM should evolve. When I started the project my intention was to eventually add support for SQL, but now I can't see this happening in the near term. SimpleDBM is not aimed at competing with other SQL databases; SQL is nice because of the ease with which tables can be queries, joined etc., but implementing an SQL layer is quite a lot of work, which I am not </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/7605955690133605889/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=7605955690133605889&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7605955690133605889'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7605955690133605889'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/roadmap.html' title='Roadmap'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-3126419981039870127</id><published>2010-04-06T23:32:00.000Z</published><updated>2010-04-06T23:32:21.536Z</updated><title type='text'>Sample Network Application</title><summary type='text'>It is taking longer than I anticipated to create a sample application. The main hurdle has been mastering Google Web Toolkit enough to create the user interface. I am hacking from the sample mail application available in the GWT distribution; but the code is increasingly becoming very different.

First, here is a screen shot from the web UI. Apologies for the rough edges; I am not a UI developer,</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/3126419981039870127/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=3126419981039870127&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3126419981039870127'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3126419981039870127'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/04/sample-network-application.html' title='Sample Network Application'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_gvl_tKpvvNw/S7vCOjAzjfI/AAAAAAAABJc/5viS8ItTHwI/s72-c/Screen+shot+2010-04-07+at+00.21.48.png' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-7987047077430905902</id><published>2010-03-21T23:57:00.000Z</published><updated>2010-03-21T23:57:32.605Z</updated><title type='text'>Network client/server update</title><summary type='text'>I am still testing the new network client server implementation. Apologies for the delay in publishing this enhancement.

I am also working on a simple sample web application to illustrate the network API. Learning all about GWT (Google Web Toolkit) which is a lot of fun.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/7987047077430905902/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=7987047077430905902&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7987047077430905902'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7987047077430905902'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2010/03/network-clientserver-update.html' title='Network client/server update'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-3848400586173228966</id><published>2009-12-20T11:25:00.000Z</published><updated>2009-12-20T11:25:50.263Z</updated><title type='text'>Network client server SimpleDBM</title><summary type='text'>I am happy to report that an initial implementation of network client server has been checked in. This will allow the SimpleDBM clients to use a thin client which will connect to a remote SimpleDBM server.

The client interface is a simplified version of the Database API.

The network protocol is based on a simple request/reply model. The messages are passed in the SimpleDBM serialization format.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/3848400586173228966/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=3848400586173228966&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3848400586173228966'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3848400586173228966'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/12/network-client-server-simpledbm.html' title='Network client server SimpleDBM'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-4491464101567186898</id><published>2009-10-11T18:09:00.000Z</published><updated>2009-10-11T18:09:02.815Z</updated><title type='text'>Update on Data Dictionary implementation</title><summary type='text'>I described the implementation of the data dictionary in a previous post. I have updated the implementation to include support for dropping tables.

I stated in my last post that the creation of the table definitions would be handled as post commit actions. In the end this wasn't necessary, and the table creation is logged against the page 0 of the virtual container 0. This container is </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/4491464101567186898/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=4491464101567186898&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/4491464101567186898'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/4491464101567186898'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/10/update-on-data-dictionary.html' title='Update on Data Dictionary implementation'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-3349929621013778630</id><published>2009-07-04T16:29:00.002Z</published><updated>2009-07-04T16:34:00.579Z</updated><title type='text'>From Subversion to Mercurial</title><summary type='text'>SimpleDBM source code repository has been migrated from Subversion to Mercurial. For a somewhat rude and OTT presentation on the benefits of distributed version control systems over traditional centralized systems see the Linus Torvald's presentation on GIT.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/3349929621013778630/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=3349929621013778630&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3349929621013778630'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3349929621013778630'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/07/from-subversion-to-mercurial.html' title='From Subversion to Mercurial'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-5161451070341580951</id><published>2009-04-12T15:53:00.003Z</published><updated>2009-04-12T16:06:14.841Z</updated><title type='text'>What next?</title><summary type='text'>The SimpleDBM core database engine has been out for a while, and although I am still working on improving the robustness of the code, writing more test cases, etc., it is also time to start thinking about what next.Couple of areas interest me.A simple SQL layer so that it becomes easier to write code against the database. Unlike other projects, I am not interested in a full-blown SQL </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/5161451070341580951/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=5161451070341580951&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5161451070341580951'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5161451070341580951'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/04/what-next.html' title='What next?'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-185221992791850532</id><published>2009-03-31T22:28:00.007Z</published><updated>2009-04-12T15:51:18.238Z</updated><title type='text'>Dwarfs standing on the shoulders of giants</title><summary type='text'>As I mentioned in a previous post, when building SimpleDBM I have used design ideas that I have picked from various technical research papers as well as other OpenSource projects. I would like to list some of the influences here, and acknowledge my indebtedness.Papers from IBM's System-R research project have influenced the role of the database engine in SimpleDBM. I have named the core engine as</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/185221992791850532/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=185221992791850532&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/185221992791850532'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/185221992791850532'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/03/dwarfs-standing-on-shoulders-of-giants.html' title='Dwarfs standing on the shoulders of giants'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-1375806002485026103</id><published>2009-03-31T22:18:00.002Z</published><updated>2009-03-31T22:27:32.687Z</updated><title type='text'>Delayed release</title><summary type='text'>The next BETA release of SimpleDBM has been delayed due to my desire to re-factor some of the code. The re-factoring has been focused on following:Removing all singletons - even Loggers. Unfortunately, Log4J and other logging packages all use singletons, so this is not completely possible unless I replace the entire logging package.Ensuring that the serialization mechanism uses constructor based </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/1375806002485026103/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=1375806002485026103&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/1375806002485026103'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/1375806002485026103'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2009/03/delayed-release.html' title='Delayed release'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-8699042932427789627</id><published>2008-08-23T18:55:00.008Z</published><updated>2008-09-18T21:49:49.808Z</updated><title type='text'>A History of SimpleDBM</title><summary type='text'>The SimpleDBM project started as the DM1 project in August 2001. Initially, I started writing the database code in C. A year later, I ported the code to C++. Here is what I wrote at the time about my switch to C++:I decided to port the product to C++ primarily for following reasons:I wanted to use the automatic construction and destruction facility in C++. I think this is one of the coolest </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/8699042932427789627/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=8699042932427789627&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/8699042932427789627'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/8699042932427789627'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2008/08/history-of-simpledbm.html' title='A History of SimpleDBM'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-7387757282464255640</id><published>2008-07-09T22:15:00.001Z</published><updated>2008-07-09T22:17:05.437Z</updated><title type='text'>SimpleDBM release 1.0.8 BETA is out</title><summary type='text'>At long last, I have put together the 1.0.8 BETA release. This contains the experimental TypeSystem and Database API module.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/7387757282464255640/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=7387757282464255640&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7387757282464255640'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7387757282464255640'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2008/07/simpledbm-release-108-beta-is-out.html' title='SimpleDBM release 1.0.8 BETA is out'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-636586684038529948</id><published>2008-07-03T08:33:00.003Z</published><updated>2008-07-03T09:03:27.644Z</updated><title type='text'>Update on SimpleDBM's Data Dictionary</title><summary type='text'>I have chosen to implement option 3 as described in a previous post. For each table, a special container is created, which is used to store not only the table structure but also structures of all associated indexes. Special containers are created for indexes as well but these contain pointers to the table structures. (The reason we need the index definition containers is that during recovery an </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/636586684038529948/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=636586684038529948&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/636586684038529948'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/636586684038529948'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2008/07/update-on-simpledbms-data-dictionary.html' title='Update on SimpleDBM&apos;s Data Dictionary'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-3052983236909949405</id><published>2008-02-27T21:49:00.003Z</published><updated>2008-02-27T22:15:36.206Z</updated><title type='text'>SimpleDBM update</title><summary type='text'>SimpleDBM project work has been slow for the past couple of months. This is because I have decided to develop SimpleDBM as a plug-in storage engine for Apache Derby, as an alternative to the Derby Store implementation. If anyone is interested in tracking this work, please visit the Apache JIRA system and look for DERBY-3351.There are a few problems to be overcome for this to happen. One of this </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/3052983236909949405/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=3052983236909949405&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3052983236909949405'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/3052983236909949405'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2008/02/simpledbm-update.html' title='SimpleDBM update'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-6058798056544070167</id><published>2007-12-29T10:35:00.000Z</published><updated>2007-12-29T12:25:45.701Z</updated><title type='text'>Implementing System Catalog or Data Dictionary</title><summary type='text'>It is the classic chicken and egg problem.I would like to implement the system catalog in database tables. However, the system catalog will contain information that is a pre-requisite for working with tables. I do not know how other database implementations handle this cyclic relationship. It is made more difficult for SimpleDBM because the core database engine has no knowledge of the data </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/6058798056544070167/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=6058798056544070167&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/6058798056544070167'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/6058798056544070167'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2007/12/implementing-system-catalog-or-data.html' title='Implementing System Catalog or Data Dictionary'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-560904413934830735</id><published>2007-11-03T01:41:00.000Z</published><updated>2007-11-03T01:50:23.135Z</updated><title type='text'>New release 1.0.6</title><summary type='text'>A new SimpleDBM RSS release (1.0.6 BETA) is out. This release contains an important bug fix to the Buffer Manager. The release can be downloaded from www.simpledbm.org.Along with this release, there is also updated documentation. The User Manual is for developers who wish to use the SimpleDBM RSS component within their own projects. The Developer's Guide is for hackers who want to understand how </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/560904413934830735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=560904413934830735&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/560904413934830735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/560904413934830735'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2007/11/new-release-106.html' title='New release 1.0.6'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-1383139049674750322</id><published>2007-09-14T23:06:00.000Z</published><updated>2007-11-03T02:33:46.076Z</updated><title type='text'>How portable is Java code?</title><summary type='text'>In my last blog entry, I mentioned the differences in file locking behaviour I found between Sun's Windows JDK and Mac JDK. Well, I recently acquired a Dell server, and am running SLES 10.1 64-bit edition on it. The default Java 5 SDK that comes with SLES 10.1 is IBM's JDK 5 SR3. SimpleDBM fails to pass all its test cases under this JVM. All tests pass successfully when I run using Sun's Java 6 </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/1383139049674750322/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=1383139049674750322&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/1383139049674750322'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/1383139049674750322'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2007/09/how-portable-is-java-code.html' title='How portable is Java code?'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-7668449087996345751</id><published>2007-09-14T00:24:00.000Z</published><updated>2007-09-14T00:47:31.763Z</updated><title type='text'>Java on Mac</title><summary type='text'>Recently bought an iMac - with 24inch screen, and this is now my development platform for simpledbm. I am using JDK 5 and Eclipse 3.3.So far one test case has failed. Upon investigation, found that the behaviour of FileChannel locking is different on the Mac. It seems that Mac JVM allows multiple threads within the same JVM to acquire exclusive locks on a file concurrently - whereas on Windows, </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/7668449087996345751/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=7668449087996345751&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7668449087996345751'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/7668449087996345751'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2007/09/java-on-mac.html' title='Java on Mac'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-8431959818233027973</id><published>2007-06-24T00:16:00.000Z</published><updated>2007-06-24T00:27:27.753Z</updated><title type='text'>SimpleDBM Beta release is out</title><summary type='text'>At long last, an early Beta release of SimpleDBM is out. Downloads are available from SimpleDBM project website. A User Manual is also available.Due to work pressures, progress has been very slow during the last one year. I am now hoping to build a few sample applications. Testing is still a priority as there are still not enough test cases in some areas, such as the Tuple Manager module, and in </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/8431959818233027973/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=8431959818233027973&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/8431959818233027973'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/8431959818233027973'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2007/06/simpledbm-beta-release-is-out.html' title='SimpleDBM Beta release is out'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-5037937988377667867</id><published>2006-11-29T00:39:00.000Z</published><updated>2006-11-29T01:03:54.656Z</updated><title type='text'>Why another database manager?</title><summary type='text'>A friend asked me recently why I spent my time implementing a DBMS, when there are already a number of open source databases. It is a good question because clearly I am not breaking any new ground here. In fact, I find myself incapable of inventing great new technology. Most of what I am implementing is well known stuff. I am a software engineer, rather than a scientist, going by the definitions </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/5037937988377667867/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=5037937988377667867&amp;isPopup=true' title='3 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5037937988377667867'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5037937988377667867'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/11/why-another-database-manager.html' title='Why another database manager?'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>3</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-24422729053269231</id><published>2006-11-28T21:50:00.000Z</published><updated>2006-11-29T00:35:31.542Z</updated><title type='text'>Premature Optimisation</title><summary type='text'>Here is an example of C.A.R.Hoare's statement that premature optimization is the root of all evils.In implementing the Lock Manager in SimpleDBM, I was concerned about the impact thread synchronisation would have on the scalability of the Lock Manager. The Lock Manager uses a hash table to speed up lookups of the locks. Many implementations of Lock Managers synchronize the entire hash table while</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/24422729053269231/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=24422729053269231&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/24422729053269231'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/24422729053269231'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/11/premature-optimisation.html' title='Premature Optimisation'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-5303839081181320009</id><published>2006-11-16T13:46:00.000Z</published><updated>2006-11-16T14:58:46.732Z</updated><title type='text'>Lock Manager updates</title><summary type='text'>SimpleDBM's Lock Manager is based upon the algorithms described in Transaction Processing: Concepts and Techniques. Until now, the Lock Manager did not have support for deadlock detection. A simple timeout mechanism was used to abort transactions that were in a deadlock. Yesterday I decided to start implementing a deadlock detector. As I was researching this, I discovered a problem in the way </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/5303839081181320009/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=5303839081181320009&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5303839081181320009'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/5303839081181320009'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/11/lock-manager-updates.html' title='Lock Manager updates'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-116268061907983426</id><published>2006-11-04T22:39:00.000Z</published><updated>2006-11-04T22:47:27.020Z</updated><title type='text'>New source repository for SimpleDBM</title><summary type='text'>SimpleDBM has a new source code repository. I moved the source code from ObjectWeb's repository to Google Code because I found the ObjectWeb repository somewhat slow and unresponsive. The SimpleDBM web pages are still hosted at ObjectWeb.In the past few months, SimpleDBM's source code repository has move from java.net to ObjectWeb to Google Code, which I hope will be its final resting place. </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/116268061907983426/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=116268061907983426&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116268061907983426'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116268061907983426'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/11/new-source-repository-for-simpledbm.html' title='New source repository for SimpleDBM'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-116243178828221318</id><published>2006-11-02T01:30:00.000Z</published><updated>2006-11-04T22:44:41.413Z</updated><title type='text'>Package structure</title><summary type='text'>There has been a revision in the package structure within SimpleDBM.In the earlier structure, the API and the implementation of a module were designed to be together. Hence, if there was a module named test, the packages would have been org.simpledbm.rss.test for the API, and org.simpledbm.rss.test.impl for the implementation.The current structure is more favoured towards separating the whole of </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/116243178828221318/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=116243178828221318&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116243178828221318'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116243178828221318'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/11/package-structure.html' title='Package structure'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-116214780817536194</id><published>2006-10-29T18:34:00.000Z</published><updated>2006-11-04T22:44:41.346Z</updated><title type='text'>Unit testing and MVCC in Berkeley DB</title><summary type='text'>After a break of several months, I am about to start working on SimpleDBM again. I am determined not to add any new functionality until existing functionality is thoroughly tested and fully documented.Currently I am working on improving the unit test cases for the BTree module. This is easily the most complex module in SimpleDBM, and producing comprehensive unit test cases is a significant task </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/116214780817536194/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=116214780817536194&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116214780817536194'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/116214780817536194'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/10/unit-testing-and-mvcc-in-berkeley-db.html' title='Unit testing and MVCC in Berkeley DB'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-115002017989671230</id><published>2006-06-11T09:56:00.000Z</published><updated>2006-11-04T22:44:41.283Z</updated><title type='text'>SimpleDBM moving to ObjectWeb</title><summary type='text'>SimpleDBM is moving to ObjectWeb. The reasons for this move are:ObjectWeb specializes in building middleware solutions. I hope to build a community of users and developers who are like-minded and interested in middleware technologies.Java.net is run by and has too much focus on Sun Microsystems. In some ways it is a propaganda tool for Sun. I wanted a more open environment for SimpleDBM, where </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/115002017989671230/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=115002017989671230&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/115002017989671230'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/115002017989671230'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/06/simpledbm-moving-to-objectweb.html' title='SimpleDBM moving to ObjectWeb'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-114419459393432383</id><published>2006-04-04T23:33:00.000Z</published><updated>2006-11-04T22:44:41.214Z</updated><title type='text'>Testing</title><summary type='text'>Due to changes in my work life, I have not been able to devote much time to SimpleDBM in recent weeks. Things are getting back to normal slowly and I am beginning to work on some of the outstanding tasks. The main focus is to provide a usable RSS component,  which is feature complete, but needs more test cases, and more testing. Although test coverage is a useful measure of the effectiveness of </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/114419459393432383/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=114419459393432383&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/114419459393432383'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/114419459393432383'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/04/testing.html' title='Testing'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-114047704768235315</id><published>2006-02-20T23:03:00.000Z</published><updated>2006-11-04T22:44:41.140Z</updated><title type='text'>Tuple Manager implementation is feature complete</title><summary type='text'>Recently completed the implementation of Tuple Scans. Unlike Index Scans which use next key locking to avoid phantom reads, the Tuple Scan implementation does not protect the gap between one tuple and the next. This means that Tuple Scans cannot provide strictly Serializable behaviour. I wonder if this will be an issue later on.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/114047704768235315/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=114047704768235315&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/114047704768235315'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/114047704768235315'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/02/tuple-manager-implementation-is.html' title='Tuple Manager implementation is feature complete'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113841223023532735</id><published>2006-01-28T01:22:00.000Z</published><updated>2006-11-04T22:44:41.080Z</updated><title type='text'>On licensing</title><summary type='text'>SimpleDBM is licensed under GPL V2 or later. I decided to use GPL because I believe in the values that the GNU movement stands for. It is a pity that so much FUD is generated regarding the GPL, and more pity that there is such a proliferation of OpenSource licences. If GPL was Business Unfriendly, then Linux would never have been successful.When GPL V3 comes out finally, I will adopt it for </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113841223023532735/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113841223023532735&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113841223023532735'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113841223023532735'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/01/on-licensing.html' title='On licensing'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113803365330572096</id><published>2006-01-23T16:19:00.000Z</published><updated>2006-11-04T22:44:41.016Z</updated><title type='text'>Priorities for January</title><summary type='text'>This month I am working on finishing the Developer's Guide, and also plan to update the Javadoc documentation. While updating the documentation I realized that I should not have used the term BTree when defining the interface for the Index Module. A BTree is an implementation strategy for Indexes, therefore, it is better to use a more generic term when specifying the interface. I am refactoring </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113803365330572096/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113803365330572096&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113803365330572096'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113803365330572096'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/01/priorities-for-january.html' title='Priorities for January'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113720228337138817</id><published>2006-01-14T01:23:00.000Z</published><updated>2006-11-04T22:44:40.954Z</updated><title type='text'>Multiversion Concurrency</title><summary type='text'>Some time ago, I promised to write about some of the techniques used in Oracle. A very early draft of a paper on Multi-Version concurrency is now available. It discussed MVCC implementations in PostgreSQL and Oracle.SimpleDBM does not implement MVCC on purpose, as I wanted to understand traditional implementations before attempting to implement MVCC. Perhaps one day, a different version of </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113720228337138817/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113720228337138817&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113720228337138817'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113720228337138817'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/01/multiversion-concurrency.html' title='Multiversion Concurrency'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113711479047577637</id><published>2006-01-13T01:08:00.000Z</published><updated>2006-11-04T22:44:40.892Z</updated><title type='text'>Documentation moving to LaTeX</title><summary type='text'>I am ashamed to say that I just discovered LaTeX. Of course, I knew about TeX but never thought I would use it ... well, I have just converted the SimpleDBM Reference Manual to LaTeX, and I love the results. The output is so much better, and the document looks professional. Here's the link to the PDF output.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113711479047577637/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113711479047577637&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113711479047577637'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113711479047577637'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/01/documentation-moving-to-latex.html' title='Documentation moving to LaTeX'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113658623178362604</id><published>2006-01-06T22:06:00.000Z</published><updated>2006-11-04T22:44:40.832Z</updated><title type='text'>More on Exceptions</title><summary type='text'>In a previous post, I blogged about why I favour Checked Exceptions over Unchecked ones. Today, I'll talk about how I am circumventing some of the issues with Checked Exceptions.The big advantage with Checked Exceptions is that the method signature tells you what Exceptions are likely to be thrown. Great as this is, it is also a liability, because any change in the Exception specification can </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113658623178362604/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113658623178362604&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113658623178362604'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113658623178362604'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2006/01/more-on-exceptions.html' title='More on Exceptions'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113455458385812474</id><published>2005-12-14T09:50:00.000Z</published><updated>2006-11-04T22:44:40.769Z</updated><title type='text'>Free Space Management</title><summary type='text'>Despite my previous resolve, I have started work on the Tuple Manager module this month. I'll talk about some of the issues and challenges in this module.The Tuple Manager module provides a low-level interface for managing persistence of table rows. It is low-level in the sense that this module has no knowledge of what is contained in a table row. I use the term tuple instead of table row, but </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113455458385812474/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113455458385812474&amp;isPopup=true' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113455458385812474'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113455458385812474'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/12/free-space-management.html' title='Free Space Management'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113379665955733968</id><published>2005-12-05T15:20:00.000Z</published><updated>2006-11-04T22:44:40.704Z</updated><title type='text'>December Priorities</title><summary type='text'>The priority for December is to complete the documentation and create sample programs. Both of these are intended to help new developers to get started with SimpleDBM.So far, I have created a BTreeDemo sample - here is a screenshot. The demo program allows a user to interactively manipulate a BTree index. The program creates two threads and allows user to switch from one to the other. This is a </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113379665955733968/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113379665955733968&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113379665955733968'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113379665955733968'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/12/december-priorities.html' title='December Priorities'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113205758257387101</id><published>2005-11-15T11:45:00.000Z</published><updated>2006-11-04T22:44:40.643Z</updated><title type='text'>Design choices - flexibility versus performance part 2</title><summary type='text'>When designing the interface for the BTree module, there are some conflicting priorities.An important goal is to ensure that the interface is reusable and makes as little assumptions about the content of "keys" and "values" as possible. Some of the points to consider are:a) Should the BTree module be aware of the type system available in the system?b) Should it be aware of how multiple attribute </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113205758257387101/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113205758257387101&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113205758257387101'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113205758257387101'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/11/design-choices-flexibility-versus.html' title='Design choices - flexibility versus performance part 2'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113161886301628880</id><published>2005-11-10T10:16:00.000Z</published><updated>2006-11-04T22:44:40.584Z</updated><title type='text'>Refactoring</title><summary type='text'>In a major refactoring exercise I have split the SimpleDBM modules into two higher level packages. The Latch Manager, the Object Registry and the Util packages all go under the package org.simpledbm.common. The rest of the packages go under org.simpledbm.rss. I decided to use the acronym RSS for the low level data management API in honour of System R. System R called its low level API Research </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113161886301628880/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113161886301628880&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113161886301628880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113161886301628880'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/11/refactoring.html' title='Refactoring'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113137909317307209</id><published>2005-11-07T15:51:00.000Z</published><updated>2006-11-04T22:44:40.522Z</updated><title type='text'>BTree Implementation Progress Report Part 4</title><summary type='text'>BTree scans are now available as well. This means that the BTree implementation is feature complete, although, there are still some areas that need more work.For the rest of November, I am going to concentrate on improving the code, refactoring bits that I don't like, updating documentation, and generally cleaning up the code. All this in preparation for a release of the code towards the end of </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113137909317307209/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113137909317307209&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113137909317307209'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113137909317307209'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/11/btree-implementation-progress-report_07.html' title='BTree Implementation Progress Report Part 4'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113093687634320699</id><published>2005-11-02T12:54:00.000Z</published><updated>2006-11-04T22:44:40.451Z</updated><title type='text'>BTree Implementation Progress Report Part 3</title><summary type='text'>Both insert key and delete key operations are now available. More test cases are being written; in order to test lock conflicts when the same key is concurrently inserted/deleted by different transactions, the new test cases have to use multiple threads. It is harder to debug such test cases, but Eclipse makes it easy. I simply run the JUnit tests in debug mode and set break points at appropriate</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113093687634320699/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113093687634320699&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113093687634320699'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113093687634320699'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/11/btree-implementation-progress-report.html' title='BTree Implementation Progress Report Part 3'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-113046002413171355</id><published>2005-10-28T00:29:00.000Z</published><updated>2006-11-04T22:44:40.389Z</updated><title type='text'>BTree Implementation Progress Report Part 2</title><summary type='text'>Currently I am busy testing the code for inserting keys into the BTree. My testing methodology is:Write a JUnit test case.Debug the code, stepping through the entire test. Fix any bugs and retest until test runs okay.Out of the 16 test cases written so far, only 4 are on insert - with many more to come. To facilitate testing I need to construct trees with specific properties. The way I have </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/113046002413171355/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=113046002413171355&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113046002413171355'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/113046002413171355'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/10/btree-implementation-progress-report_28.html' title='BTree Implementation Progress Report Part 2'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112921132580569605</id><published>2005-10-13T13:40:00.000Z</published><updated>2006-11-04T22:44:40.331Z</updated><title type='text'>BTree Implementation Progress Report</title><summary type='text'>I have been working hard on getting the BTree implementation completed. It is about 75% complete, however, delivery will take longer as I need to ensure that adequate test cases are available to verify the correctness of the algorithms. Already, this is probably the largest module. It will also be one of the most complex.As mentioned before, I am implementing the B-link tree algorithm as </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112921132580569605/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112921132580569605&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112921132580569605'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112921132580569605'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/10/btree-implementation-progress-report.html' title='BTree Implementation Progress Report'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112821343393860223</id><published>2005-10-02T00:15:00.000Z</published><updated>2006-11-04T22:44:40.267Z</updated><title type='text'>Database Technology camps</title><summary type='text'>Mainstream Relational Database technology is split into two camps.On the one hand are the systems that are directly or indirectly based upon techniques and algorithms derived from IBM's System R project. Most published research also falls into this group.In the second camp are systems that have been inspired by Oracle. Oracle has a very interesting history. Although Oracle started with the </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112821343393860223/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112821343393860223&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112821343393860223'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112821343393860223'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/10/database-technology-camps.html' title='Database Technology camps'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112808995925738091</id><published>2005-09-30T13:21:00.000Z</published><updated>2006-11-04T22:44:40.207Z</updated><title type='text'>Design choices - flexibility versus performance</title><summary type='text'>One of the design choices I made in SimpleDBM is to build the system as a collection of modules, and keep the modules loosely coupled via interfaces. There is also a hierarchy within the modules;  some modules come before others, and provide services used by other modules. It is very important to enforce this hierarchy, because otherwise, the dependencies between the modules would become cyclical</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112808995925738091/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112808995925738091&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112808995925738091'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112808995925738091'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/design-choices-flexibility-versus.html' title='Design choices - flexibility versus performance'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112808605328906201</id><published>2005-09-30T13:00:00.000Z</published><updated>2006-11-04T22:44:40.148Z</updated><title type='text'>Testing</title><summary type='text'>One constraint I have placed upon myself when coding is that I will not start work on a new module until I have created and executed test cases for the module I am currently working on. This slows me down, but the payoff is tremendous.Writing test cases for a module often takes more time than coding the module itself. I think that this is not unusual, and any project that is serious about testing</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112808605328906201/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112808605328906201&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112808605328906201'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112808605328906201'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/testing.html' title='Testing'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112682502194176402</id><published>2005-09-15T22:42:00.000Z</published><updated>2006-11-04T22:44:40.086Z</updated><title type='text'>Page oriented redo/undo versus Logical Undo</title><summary type='text'>ARIES uses the term page-oriented redo/undo to describe logging that is always applied to a specific page. This means that if some page P1 generated a undo/redo log record L1, then during redo, the redo portion of L1 will be applied to P1, and during undo, the undo portion of L1 will be applied to P1.The term Logical Undo is used to describe logging where the undo action may not always be applied</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112682502194176402/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112682502194176402&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112682502194176402'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112682502194176402'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/page-oriented-redoundo-versus-logical.html' title='Page oriented redo/undo versus Logical Undo'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112595860416752406</id><published>2005-09-05T21:39:00.000Z</published><updated>2006-11-04T22:44:40.008Z</updated><title type='text'>In favour of Checked Exceptions</title><summary type='text'>I said in a previous post that I favour Checked Exceptions over Unchecked ones. I will try to explain my reasons for doing so.A good discussion of the problems with Checked Exceptions is in this article by Brian Goetz. The main problems can be summarized as:Unnecessary exposure of implementation details.Unstable method signatures.Unreadable code.Exception swallowing.Too much Exception </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112595860416752406/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112595860416752406&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112595860416752406'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112595860416752406'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/in-favour-of-checked-exceptions.html' title='In favour of Checked Exceptions'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112565413824809145</id><published>2005-09-02T09:35:00.000Z</published><updated>2006-11-04T22:44:39.948Z</updated><title type='text'>BTrees and Logical Undos</title><summary type='text'>Certain BTree operations require Logical Undo to be performed during rollbacks and restart recovery. This is because, in a BTree, keys can move from one page to another, and therefore an undo operation may have to be applied to a different page from the one where the original action took place.To take an example, suppose transaction T1 deletes the key D from page P1. Another transaction T2 comes </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112565413824809145/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112565413824809145&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112565413824809145'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112565413824809145'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/btrees-and-logical-undos.html' title='BTrees and Logical Undos'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112561788823344686</id><published>2005-09-01T22:36:00.000Z</published><updated>2006-11-04T22:44:39.880Z</updated><title type='text'>Space Management</title><summary type='text'>This week I am working on the Space Manager module which will handle page allocation in containers. This module is not so exciting, it is tedious work with lots of little details all of which have to be right for it to work correctly. While working on this, I did have some interesting experiences though.I am a firm believer in Checked Exceptions. I think Unchecked Exceptions should be used very </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112561788823344686/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112561788823344686&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112561788823344686'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112561788823344686'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/09/space-management.html' title='Space Management'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112526897379583023</id><published>2005-08-28T22:08:00.000Z</published><updated>2006-11-04T22:44:39.822Z</updated><title type='text'>More on Transaction Manager</title><summary type='text'>After many hours of debugging, I finally have a version of the Transaction Manager that successfully handles the BitMgr Test. The BitMgr is modeled after the OneBit Resource Manager described in Transaction Processing: Concepts and Techniques. It uses a single data page, containing a set of bits that can either be on or off. Despite the simple design, the One BitMgr allows many of the features of</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112526897379583023/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112526897379583023&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112526897379583023'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112526897379583023'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/more-on-transaction-manager.html' title='More on Transaction Manager'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112483836868573233</id><published>2005-08-23T22:48:00.000Z</published><updated>2006-11-04T22:44:39.761Z</updated><title type='text'>SimpleDBM's Transaction Manager</title><summary type='text'>This week I am working on the Transaction Manager for SimpleDBM. The Transaction Manager is based upon the well known algorithm known as ARIES. There is a freely available paper at ARIES inventor C.Mohan's website that describes ARIES in quite a lot of detail.I wrote a short description of ARIES, which can be found at Apache Derby website.ARIES is based upon the recovery algorithms used in IBM's </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112483836868573233/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112483836868573233&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112483836868573233'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112483836868573233'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/simpledbms-transaction-manager.html' title='SimpleDBM&apos;s Transaction Manager'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112475798258416049</id><published>2005-08-23T00:23:00.000Z</published><updated>2006-11-04T22:44:39.703Z</updated><title type='text'>Confusion with terminology and Latch implementation</title><summary type='text'>The terms Lock and Log have very specific meaning in a DBMS. A DBMS Lock is a dynamically allocated synchronisation primitive, supporting multiple lock modes, used to manage concurrent access to Table rows. Locks are allocated as part of a transaction and retained until the transaction commits. Unfortunately, the term Lock is also used in a programming language like Java to represent Monitors and</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112475798258416049/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112475798258416049&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112475798258416049'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112475798258416049'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/confusion-with-terminology-and-latch.html' title='Confusion with terminology and Latch implementation'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112465815699331146</id><published>2005-08-21T20:36:00.000Z</published><updated>2006-11-04T22:44:39.646Z</updated><title type='text'>Fine grained locking and Linked Lists</title><summary type='text'>The Buffer Manager in SimpleDBM uses a number of different locks in order to obtain fine-grained locking. The assumption is that with fine-grained locking, concurrency will be higher and the system will scale better with larger volumes and greater number of CPUs. However, whether this is actually achieved depends largely on the efficiency of the locks. It would be interesting to create a </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112465815699331146/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112465815699331146&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112465815699331146'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112465815699331146'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/fine-grained-locking-and-linked-lists.html' title='Fine grained locking and Linked Lists'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112447798825529447</id><published>2005-08-19T18:57:00.000Z</published><updated>2006-11-04T22:44:39.582Z</updated><title type='text'>Buffer Manager implementation</title><summary type='text'>Just completed the initial port of the Buffer Manager. Also checked in all the source code in the UNSTABLE_V100 branch.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112447798825529447/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112447798825529447&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112447798825529447'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112447798825529447'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/buffer-manager-implementation.html' title='Buffer Manager implementation'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112406162606556369</id><published>2005-08-14T23:18:00.000Z</published><updated>2006-11-04T22:44:39.524Z</updated><title type='text'>Buffer Manager coming soon</title><summary type='text'>This week I am working on porting the Buffer Manager module. I expect to upload the code for it by the end of the week.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112406162606556369/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112406162606556369&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112406162606556369'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112406162606556369'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/buffer-manager-coming-soon.html' title='Buffer Manager coming soon'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112405914641392524</id><published>2005-08-14T22:04:00.000Z</published><updated>2006-11-04T22:44:39.462Z</updated><title type='text'>Why Java?</title><summary type='text'>I had started the DBMS project DM1 back in 2002 using C++.  I said then that I had chosen to code DM1 in C++ because of lack of certain features in Java, such as pointers and efficient array handling. It seemed to me that a DBMS needed a language that allowed full control of memory.SimpleDBM is a pure Java project. So what has triggered the change from C++ to Java?Firstly, I no longer think that </summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112405914641392524/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112405914641392524&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112405914641392524'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112405914641392524'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/why-java.html' title='Why Java?'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-15425053.post-112405496660018658</id><published>2005-08-14T21:24:00.000Z</published><updated>2006-11-04T22:44:39.393Z</updated><title type='text'>Welcome</title><summary type='text'>Welcome to the official weblog for the SimpleDBM project. SimpleDBM is a new project that aims to implement relational database manager in Java. Please visit the SimpleDBM website for further details about the project.</summary><link rel='replies' type='application/atom+xml' href='http://simpledbm.blogspot.com/feeds/112405496660018658/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=15425053&amp;postID=112405496660018658&amp;isPopup=true' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112405496660018658'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/15425053/posts/default/112405496660018658'/><link rel='alternate' type='text/html' href='http://simpledbm.blogspot.com/2005/08/welcome.html' title='Welcome'/><author><name>Dibyendu Majumdar</name><uri>https://profiles.google.com/104970145946261316025</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
