News: NoDB: A prevalent object repository
NoDB is a prevalent object repository with indexing capabilities built on top of Prevayler and Lucene. NoDB is a very simple object repository. You can store, update, delete your object graph from the repository. You can perform queries over the object graph by the use of indexes. NoDB do not require extra configuration, just open the repository and store your objects. Bellow are some examples of using NoDB: Opening a repository and creating the index RepositoryManager manager = RepositoryManager.getInstance(); Repository repository = manager.openRepository("TestRepo", true); repository.createIndex(Person.class, "name"); repository.createIndex(Person.class, "lastName"); Querying an object by index QueryCriteria personsQuery = repository.createCriteria(Person.class). where (eq("name", "Darky")).maxResults(300); Result result = personsQuery.find(); You can found more info on the NoDB website http://nodb.googlecode.com/
- Posted by: Diego Miranda
- Posted on: July 06 2009 07:12 EDT
- Re: NoDB: A prevalent object repository by Christopher Brind on July 06 2009 09:08 EDT
- Re: NoDB: A prevalent object repository by Pedro Furlanetto on July 06 2009 11:42 EDT
Going to investigate for myself but questions that spring to mind are: * is that a singleton? * what is the footprint? * query by example? * SODA support? * OSGi friendly? * Android friendly? * Is it memory heavy (i.e. are the objects basically held in memory, or can they be offlined to disk and queried from there)? * How does it compare in performance to db4o? Cheers, Chris
Hi Christopher, NoDB is a new project, it does not have many features as db4o do. Anyway, i´ve tried to made NoDB very simple. In NoDB all the objects are kept hot in memory. Few weeks ago, i've been playing with PolePosition. In some cases NoDB is faster than Db4o but, as i said above, in NoDB all the objects lives in memory. If you are interesting in this little benchmark, i could upload the source code. Best regards! Diego.
What about centralization support? Is it out of the box, or do I have to build a server manually? What about replication and clusterization?
Hi Pedro, NoDB it is out of the box. You dont have to build a server. Replication and clusterization are in the roadmap for the next versions. Best regards Diego
Replication and clusterization are in the roadmap for the next versions.To achieve those features I suggest to give a look to Terracotta. I guess it could be a good idea to store the prevalent system in a distributed Terracotta heap. Another suggestion could be to provide your library with a statically typed DSL to query the repository as in the following example: criteria.where(on(Person.class).getName(), equalTo("John")).and(on(Person.class).getAddress().getState(), equalTo("Milan")); I did something similar in one of my project: http://code.google.com/p/lambdaj/ and if you like this idea I could help you with it. Anyway ... it looks a good project and I will continue to follow it. Bye Mario
Hi Mario! Thank you very much for your comments! I've already added a little DSL in NoDB. But don't hesitate in tell me what do you think about this. Any help is always wellcome :) Best regards Diego