I have some applications I want to write that have similar data needs and I'm having trouble figuring out which DBMS would be best. I want something open source, with a reasonable license (not MySQL).
One application is a "family information" application which is a combination contact, family tree, family history, and photo/metadata tracker. The data needs are thus fairly moderate (by modern standards).
Part of the problem is that I'm not entirely sure that what I want to do would be easy, or even possible in an RDBMS, which is pretty much all I'm familiar with. I might even need to use multiple DBMS's for different aspects.
The data I want to store contains three main parts: Parent nodes, data nodes, and properties.
A parent node consists of identifying information, a list of child nodes, and a set of properties.
A data (child) node contains some kind of content, which will either be text or binary data, and a set of properties.
Properties are key/value pairs, where the value is something reasonably simple - a primitive (boolean, byte, int, double, etc), date, enumerated type, or a reasonably short string. The properties are the part of this that I'm having the most trouble with - figuring out how to store properties of different types in a way where they can be transparently accessed despite the different data types.
Please recommend some kind of data storage library that would allow me to implement such a system with a minimum of difficulty in a Java Virtual Machine environment (Java and/or Scala).