DataNucleus AccessPlatform v3 provides an opportunity to bring some of our other datastore plugins closer to the standard of the more mature long-supported datastores (e.g RDBMS). In the case of HBase, the plugin provided with v2.0 offered basic persistence and querying, at best. In v3 this is already much improved.
- You can now run SchemaTool against HBase. This operates in either “create” or “delete” modes, and allows you to manage the schema required by your persistable classes.
- When a relationship was persisted with v2.0 it simply serialised the related object. This broke JDO/JPA cascade rules. In v3 the column for the relation in the owner stores the identity (or identities when persisting multi-value relations). This also provides correct cascading of persist and update.
- When a String field was persisted in v2.0 it was Java serialised, meaning that it was not readable with something like “hbase shell”. In v3.0 String/char fields are persisted as the bytes of the field value, hence readable.
- With v2.0 we provided value generation using “uuid”, “uuid-hex”, etc simple generators, but not accessible by default. In v3.0 the default (JDO “native”, JPA “auto”) is “uuid-hex”, and we also provide an “increment” generator (contrib from Peter Rainer).
- In v2.0 we only supported “application identity”. In v3.0 we also support “datastore identity” (surrogate identity column).
- In v2.0 we didn’t support storing a version against the object. In v3.0 we do allow this.
- You can now embed persistable fields into the table of the owning object, and also nested embedded fields.
- Now supports HBase 0.90
Obviously there is still much more that can be done – see the datastore features comparison table. One that will give more performance is to handle more of any query filter in the datastore, rather than just processing all in-memory. Contributions for this and other things are very welcome. But then we aren’t even at 3.0 Milestone 1 yet …