Jos Nieuwenhuis


Performance van Embedded Databases

Voor een desktop applicatie wil ik gebruik maken van een embedded database. Hiervan bestaan er echter verschillende, elk zo met hun eigen toepassingsgebied. Mijn aandacht ging uit naar een database die snel is. Om erachter te komen welke database het snelste is. De volgende heb ik vergeleken:

Lucene en HashMap zijn eigenlijk geen embedded databases, maar je kunt ze wel gebruiken om gegevens in op te slaan. In elk van de databases heb ik het volgende Java object opgeslagen:

public class Book {
	List authors;
	String isbn;
	String title;
	String publisher;
	String description;
	String edition;
	Date publicationDate;
	String ean;
	int numberOfPages;
	String imageUrl;
	String year;

	//Getters and Setters ..
}

De code voor het opslaan, lezen, wijzigen en verwijderen is gebaseerd op de voorbeeld code die ik van de websites van de verschillende producten te vinden is. Elke implementatie heeft de volgende interface:

public interface BookDAO {
    public abstract boolean create(Book book);
    public abstract boolean update(Book book);
    public abstract boolean delete(Book book);
    public abstract Book findByISBN(String isbn);
}

De performance testen werden uitgevoerd met behulp van JMeter JavaSampler die vanuit een maven project wordt aangeroepen met behulp van de Maven JMeter plugin (deze heb ik zelf nog moeten wijzigen om rekening te houden met classpath dependencies). Mijn test set bestaat uit 1137 records. Deze werden eerst opgeslagen, vervolgens gelezen, aangepast en tenslotte verwijderd. Onderstaande tabel toont de gemiddelde tijd om een actie uit te voeren.

Data store Operation Average duration
in milliseconds
Berkeley DB Create 0.52
Read 0.44
Update 0.65
Delete 0.53
Java DB Create 1.13
Read 0.51
Update 1.44
Delete 1.19
DB4O Create 0.52
Read 18.18
Update 19.43
Delete 11.72
Lucene Create 0.44
Read 0.33
Update 0.40
Delete 0.07
Neo4J Create 104.94
Read 2.12
Update 0.65
Delete 52.41
HashMap Create 0.04
Read 0.03
Update 0.04
Delete 0.04

Uit de resultaten kun je concluderen dat zowel Lucene als Berkeley DB heel snel zijn.

Datum: 20 maart 2010 - Java

Geen reacties

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.