Best Database System for Searching by Multiple Tags

I have dealt with tags systems before in MySql for a simple blog with a Tag table, a TagMap table and a Post table, but in my mind this is a very convoluted way of storing tags and relating them to posts. The query for getting posts by tag was equally convoluted.

Now that I am doing a project in Node.js, I am looking for a new way to store my data and a new database system. I have looked into CouchDB, but it seems to have problems searching for multiple tags and the concept of views seems too complicated for what I am trying to accomplish.

Is there a database system, preferably one that has a library/client out for node.js, that is efficient and that makes the whole tagging-ordeal seem intuitive?

I don't think you'll be able to do better than a relational database in this case.

If you need tag synonyms, take a look here for some ideas (but note that EXISTS should be rewritten as another JOIN due to the deficiencies in MySQL query optimizer). Without synonyms, this model can be further simplified.

The important point is that using techniques such as clustering and covering should provide ample performance for anything but absolutely huge amounts of data and concurrent users. One mistake that people seem to make is to use a surrogate key in the tag map table, which destroys the clustering.

Redis sets would probably work well here: create a set keyed by post ID consisting of tags or tag IDs, and a set keyed by tag (or tag ID) consisting of post IDs. Then you can use redis's built-in set intersection and union operators to quickly search based on multiple tags.