News for hackers. Stuff that matters.
Re:So, that was a bummer by houseabsolute on Tuesday October 05, 2010 @06:32PM (#1761834)
I'm also wondering why this kind of intervention is necessary at all. The NoSQL solution we use at work has load based automatic splitting, and I'd have thought (though I haven't confirmed) that this would be an obvious feature to include.
Re:So, that was a bummer by mcfunley on Tuesday October 05, 2010 @08:26PM (#1762195)
I would speculate that it's a poorly-chosen shard key. MongoDB's built-in sharding uses range-based indexing. If you choose user_id as your shard key, and those are autoincrementing integers, then you're screwed if newer users tend to be more active on average than older ones.
Re:So, that was a bummer by jrockway on Tuesday October 05, 2010 @09:09PM (#1762291)
Wait, people shard on a key other than something approximately random, like an sha1 hash!?
Re:So, that was a bummer by mcfunley on Tuesday October 05, 2010 @09:22PM (#1762338)
Where I work (Etsy) we keep an index server that maps each user to a shard on an individual basis. There are a number of advantages to it. For example, if one user generated a ton of activity they could in theory be moved to their own server. Approximately random works for the initial assignment.

Flickr works the same way (not by coincidence, since we have several former Flickr engineers on staff).

Re:So, that was a bummer by jrockway on Tuesday October 05, 2010 @10:41PM (#1762486)
Sounds like a good system. I've noticed that people tend to do things like shard based on even/odd, and then they realize that they need three databases.

I've never had either problem though... but if I ever need to shard I plan on doing it based on object ID. Then one request can be handled by multiple databases, "for free", increasing both throughput and response time.

Re:So, that was a bummer by fizx on Wednesday October 06, 2010 @12:23AM (#1762701)
Even/odd isn't the end of the world, but you would then be best jumping to mod 4.
Re:So, that was a bummer by moe on Wednesday October 06, 2010 @02:19AM (#1762945)
Actually for anonymous sharding (without a central index) a consistent hash is about the closest you can get to ideal distribution and flexibility. I haven't looked but I presume that's what mongo uses under the hood for their auto-sharding, too.
Re:So, that was a bummer by dmytton on Tuesday October 05, 2010 @06:52PM (#1761916)
Load based splitting is on the MongoDB roadmap, but doesn't exist yet.
Re:So, that was a bummer by fizx on Tuesday October 05, 2010 @08:11PM (#1762159)
Just because the feature exists, doesn't mean it works.
Re:So, that was a bummer by icey on Tuesday October 05, 2010 @06:34PM (#1761841)
Which NoSQL store do you use?
Re:So, that was a bummer by houseabsolute on Tuesday October 05, 2010 @06:38PM (#1761855)
Re:So, that was a bummer by staunch on Tuesday October 05, 2010 @08:26PM (#1762196)
That looks potentially useful in some cases. Can you send me the code/docs for that?
Re:So, that was a bummer by ddlatham on Tuesday October 05, 2010 @09:54PM (#1762404)
Re:So, that was a bummer by ifesdjeen on Wednesday October 06, 2010 @03:33AM (#1763083)
Does it work that well for production for you? Really, that's extremely interesting.
Re:So, that was a bummer by rb2k_ on Wednesday October 06, 2010 @02:07AM (#1762915)
Also look at dynamo based systems like cassandra and riak (riak seems to have a better load balancing at the moment, cassandra is a bit more "bumpy")