
On 10/10/12 09:18, Craig Sanders wrote:
On Thu, Oct 04, 2012 at 09:56:44AM +1000, Toby Corkindale wrote:
Hi, Just something interesting I noticed today..
As you've probably already seen, PostgreSQL 9.2 added support for storing JSON documents in a 'json' type field.
this is a cool and interesting feature but it will serve to encourage even more morons to avoid even basic/minimalist database normalisation methods.
i'm getting tired of seeing FOSS programs that use databases just stuff JSON or XML or CSV or similar into a text field.
their reasoning seems to be that the data will only ever be used by their own web app or via their REST API so there's no need to spend any time thinking about or designing the database schema (or maybe there's no reasoning and they're just ignorant and stupid). Data lock-in is no less irritating in FOSS apps than it is in proprietary apps.
also, why do something in the database server when you can do a half-arsed emulation of it 10,000 times less efficiently in your crappy php web app?
pg's support for JSON fields isn't a bad thing - overall, it's a good thing...it will mitigate some of the problems - but it won't do anything to educate web-dev morons about database design.
Nothing has stopped people putting arbitrary documents into TEXT or BYTEA fields before -- I've seen plenty of cases where people use Perl's Storable, Python's Pickles, YAML, or custom serialisation, and just dump that into a text field in the database. In one company I worked at, someone had even written a query-creator which would build the appropriate LIKE phrase to search within the serialised format! (But needless to say, it performed atrociously slowly, because you're doing a full table scan every time..) I agree with you, that this practice is usually indicative of poor design -- even if the database offers ways to index and query the document natively. (Which is still a big improvement though) However, I think you're missing a point. Sometimes you are really storing a whole document, or at least a large amount of very structured, self-contained data. For these cases, JSON storage is quite useful and document storage is a lot neater (and performant) than having to write a whole heap of code to deparse and reparse it into all the constituent components. -Toby