Why Flowdock migrated from Cassandra to MongoDB
blog.nodeta.fi
blog.nodeta.fi
We've seen this, ironically, in reference to many MongoDB horror stories, so it's interesting that in this case it's the case where someone is moving to MongoDB.
Anyone who chooses an early product would hopefully understand that they will be experiencing issues and will be upgrading the product many times as issues are found and fixed.
Here are some of the changelog entries from 0.6.2 that are relevant to high-volume sites:
- improve default JVM GC options (CASSANDRA-1014)
- better defaults for flush sorter + writer executor queue sizes (CASSANDRA-1100)
- added Collections.shuffle(splits) before returning the splits in ColumnFamilyInputFormat (CASSANDRA-1096)
- StreamingService.StreamDestinations wouldn't empty itself after streaming finished (CASSANDRA-1076)
- Add option to turn off Hinted Handoff (CASSANDRA-894)
- split CommitLogExecutorService into BatchCommitLogExecutorService and PeriodicCommitLogExecutorService (CASSANDRA-1014)
from 0.6.3:
- add ability to lower compaction priority (CASSANDRA-1181)
... and 0.6.4:
- extend option to lower compaction priority to hinted handoff as well (CASSANDRA-1260)
- pre-emptively drop requests that cannot be processed within RPCTimeout (CASSANDRA-685)
If that's so much greek to you, I'll be doing explanations of these over on the Riptano blog in the next few days, like the one I did for 0.6.1 here: http://riptano.com/blog/annotated-changelog-cassandra-061
(sorry for excessive spacing. how do you get HN to format bullets?)
Do you have more information?
> db.test.insert({"foo.bar": 1}); Mon Jul 26 14:24:39 JS Error: uncaught exception: can't have . in field names [foo.bar]
After all that's only natural, because the dot notation is supported in queries.
For example, consider storing an e-mail in MongoDB:
{ content: "<p>HTML mail. <img src="cid:1234.0" alt="from attachment"/></p>", attachments: { "1234.0": { some details about the attachment } } }
This is not legal, but in this case it's of course easy to work around (have attachments in an array and have the CID as a value instead of a key).