Molecule Database Framework - MDF


  • New version of Bingo Chemical Cartridge is available for PostgreSQL 9.4

I wrote a migration guide to migrate a PostgreSQL 9.2 MDF database to 9.4 with new Bingo version. This was done on Windows 7.


Molecule Database Framework is a framework for rapidly creating applications that need to store and search for chemical structures in a relational database. It is based on Spring-Data Framework and uses the Indigo Toolkit and Bingo PostgreSQL Cartridge for enabling chemistry features.

Help and Support

See Molecule Database Framework Wiki for more detailed information and code samples.

You can find JavaDoc of current release in the Downloads Section.

There is also a simple demonstration Web Application called MDF Simple Web App which can be used as a reference.

Installation / Usage

See Molecule Database Framework Tutorial for Installation instructions. You will need to install PostgreSQL and Bingo PostgreSQL Cartridge and create a new Maven Project. Maven is not required but it will make handling of dependencies much easier.

Note that the releases on SonaType and Maven Central are electronically signed. To avoid too much clutter on the downloads section, it only contains the digital signature for the jar containing the code but not for the sources or JavaDoc jars.

If you get the jar from the Downloads Section. You will also find the digital signature for the jar and the the public key for verification. To do this you will need a GPG distribution like gpg4win.

See Importing a public certificate and Checking a signature for further information. Note that this verification is purley optional.


MDF is free as in libre and has no license costs. With MDF you can rapidly create free chemical structure search enabled database applications. Since version 1.1.0 Salt handling is available.

Chemical Structure Search Features

MDF uses Bingo PostgreSQL Cartridge and exposed most of the cartridges functionality.

  • Full Structure Search
  • Sub Structure Search
  • SMARTS Search
  • Chemical Formula Search
  • Similarity search (different algorithms like tanimoto, upper and lower bound)

These searches are offered through service methods that allow:

  • Paging and Sorting
  • Predicates (filters)

QueryDSL predicates allow to limit the structure search on other properties of the searched entity.


MDF is integrated with Spring Security. It offers method level security at the service layer. The security feature is optional and can be enabled in configuration.


MDF uses Spring in it's core and hence can very easily be used in tomcat. There is no need for a full blown Java EE Application server. If required MDF (actually Spring) can be configured to use JTA Transaction Manager, be it a standalone (atomikos, bitronix,...) or one provided by the Application Server.

Rapid Development

Creating a basic chemical structure search enabled back-end is very quick, in minutes with a simple data model. You will spend by far the biggest amount of time developing the User Interface, be it web or client-based. For enabling chemistry you only need to extend the provided abstract classes (entity, repository, service) to which you add your custom data fields and search methods and then storing, searching and chemical structure search will be automatically be enabled. The developer does not require much chemistry knowledge.


Right now only me: Joos Kiener


Best contribution you can make is to add more tests, be it unit or integration tests. Coverage is far from complete and what is missing the most are tests for "bad" input, eg. "testing for failure".

Unit Tests use mockito for mocking.

Maven Repositories

Full Releases are available on the Maven Central Repository.

If you wish to work with SNAPSHOT releases of MDF you need to add


to your projects repositories.

For SNAPSHOT releases see the SNAPSHOT Repository on SonaType. See POM in src for all dependencies (Spring-Data, Hibernate, others). Note: There is no guarantee that Source code and SNAPSHOT are in-sync.


All Dependencies are managed by Maven. It is suggested you use Maven too or a build tool capable of using Maven repositories like Apache Ivy or Gradle.

Testing, Bugs and Stability

MDF should run fine. Most test are integration tests and it is hence assured that the components do work together in an intended way. What is missing is extensive testing with "bad" input.

Currently (July 2014) I do not know any fully released productive application that uses MDF. So it's fair to mention that you might run into early adopter issues.