tag:blogger.com,1999:blog-154250532024-03-12T23:38:46.355ZSimpleDBM - An Open Source Java Database EngineSimpleDBM is an Open Source Embeddable Database Engine written entirely in Java.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.comBlogger65125tag:blogger.com,1999:blog-15425053.post-17610521026412804212015-07-18T14:10:00.000Z2015-07-18T14:10:17.488ZSimpleDBM migrated to GitHub
As Google decided to shut down the project hosting service I have been forced to find a new home for SimpleDBM. So SimpleDBM is now hosted at the following github site:
https://github.com/dibyendumajumdar/simpledbm
Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-61120874392402949202014-08-01T07:30:00.003Z2014-08-01T07:30:59.650ZSimpleDBM is now licensed under Apache License 2.0
I am pleased to announce that as of v1.0.23 the license is changing to Apache License 2.0. The new release is available in Maven Central.
See my earlier post for the rationale for this change.
Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-55680986338732554582013-05-22T22:33:00.001Z2013-05-22T22:33:57.126ZSimpleDBM now available in Maven Central
I am pleased to announce that I have finally managed to get SimpleDBM (v 1.0.22) uploaded to Maven Central. This should make it much easier for people to use SimpleDBM in their projects.
I am working on fixing the build systems of the sample projects - the source repository has fixes for btreedemo and tupledemo samples.
Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-68037374600819949862012-07-09T21:45:00.001Z2012-07-09T21:47:42.514ZPerformance optimisations in typesystem
The new typesystem in v2 will only support following types:
bool
int
long
double
utf8 string
varbyte (raw)
The older version had types like BigInteger, BigDecimal, Date, VarChar.
The new typesystem attempts to be closer to native types, both for performance reasons and also so that ports to C like languages is easier.
Another major change is the way the row data is serialised.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-52910117752695210472011-01-30T12:44:00.000Z2011-01-30T12:44:51.954ZNext version of SimpleDBMAfter 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-27555735347781645062010-05-02T12:31:00.000Z2010-05-02T12:31:25.846ZA Simple IOC ContainerAll 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; PicoContainerDibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com2tag:blogger.com,1999:blog-15425053.post-8373171509294414552010-04-25T19:42:00.001Z2010-04-25T19:42:51.245ZProposed license boilerplateGiven 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-55364958776579144222010-04-19T22:10:00.002Z2010-04-19T22:10:39.857ZMulti-licensingThe 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.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-61798535354086434502010-04-18T23:52:00.001Z2010-04-18T23:52:32.013ZNetwork client server API releasedI 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-75552050615047347492010-04-18T01:32:00.000Z2010-04-18T01:32:50.012ZLicensing revisitedIn 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-76059556901336058892010-04-10T22:43:00.001Z2010-04-10T22:46:39.485ZRoadmapI 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-31264199810398701272010-04-06T23:32:00.000Z2010-04-06T23:32:21.536ZSample Network ApplicationIt 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,Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-79870470774309059022010-03-21T23:57:00.000Z2010-03-21T23:57:32.605ZNetwork client/server updateI 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.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-38484005861732289662009-12-20T11:25:00.000Z2009-12-20T11:25:50.263ZNetwork client server SimpleDBMI 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.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-44914641015671868982009-10-11T18:09:00.000Z2009-10-11T18:09:02.815ZUpdate on Data Dictionary implementationI 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-33499296210137786302009-07-04T16:29:00.002Z2009-07-04T16:34:00.579ZFrom Subversion to MercurialSimpleDBM 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.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-51614510703415809512009-04-12T15:53:00.003Z2009-04-12T16:06:14.841ZWhat next?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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-1852219927918505322009-03-31T22:28:00.007Z2009-04-12T15:51:18.238ZDwarfs standing on the shoulders of giantsAs 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 asDibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-13758060024850261032009-03-31T22:18:00.002Z2009-03-31T22:27:32.687ZDelayed releaseThe 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-86990429324277896272008-08-23T18:55:00.008Z2008-09-18T21:49:49.808ZA History of SimpleDBMThe 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-73877572824642556402008-07-09T22:15:00.001Z2008-07-09T22:17:05.437ZSimpleDBM release 1.0.8 BETA is outAt long last, I have put together the 1.0.8 BETA release. This contains the experimental TypeSystem and Database API module.Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-6365866840385299482008-07-03T08:33:00.003Z2008-07-03T09:03:27.644ZUpdate on SimpleDBM's Data DictionaryI 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-30529832369099494052008-02-27T21:49:00.003Z2008-02-27T22:15:36.206ZSimpleDBM updateSimpleDBM 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com1tag:blogger.com,1999:blog-15425053.post-60587980565440701672007-12-29T10:35:00.000Z2007-12-29T12:25:45.701ZImplementing System Catalog or Data DictionaryIt 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0tag:blogger.com,1999:blog-15425053.post-5609044139348307352007-11-03T01:41:00.000Z2007-11-03T01:50:23.135ZNew release 1.0.6A 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 Dibyendu Majumdarhttp://www.blogger.com/profile/08417788730731238290noreply@blogger.com0