Reintroducing Hstore for PostgreSQL
PostgreSQL 9.4 will be reintroducing Hstore as the column type of choice for document-style data. This supersedes PostgreSQL’s JSON support which was introduced in version 9.0. Being a string-based representation, JSON is significantly slower than the binary structure of HStore. And with the addition of Boolean and integer support, the new Hstore is semantically equivalent to JSON. In practical terms this allows two-way conversions between the formats using just a casting operator.
The original HStore format dates back to 2003 when it was introduced merely for storing key-value pairs. Prior to this version it wasn’t possible to use it for the efficient storage of tree-like structures like those found in JSON.
Early performance tests are promising. According to a presentation by Oleg Bartunov and Teodor Sigaev, PostgreSQL’s new Hstore format beat MongoDB on a data loading test 76s to 8 minutes. For reads using finely tuned indexes, they managed to run tests at 0.672 ms compared to 1 ms for MongoDB. These results are self-reported and will need to be verified by outside researchers.