How Netflix loaded 1 billion rows into SimpleDB
practicalcloudcomputing.com
practicalcloudcomputing.com
After talking with SDB folks, they recommended that I shard my data because each domain maps to a different network computer cluster. I'm glad it's the first recommendation in the OP list because it seriously is the best thing you can do.
Another trick that I experimented with: use multiple EC2 instance to write to the same domain. I managed to convince myself that the throttling is per EC2 instance per domain, not a global per domain. However, cost ruled this solution out.
Reading was much more consistent but was also throttled, especially at high write-loads. The solution was two-fold:
1. Cache everything "indefinitely" and break the cache when you know its contents will change. For the real time stuff, you can't cache. I used memcached, and looked at other solutions like Tokyo Tyrant, memcachedb and redis. Use what you feel comfortable using really.
2. Read as little as possible. Doing a "select * from domain where..." is horrible compared to doing "select attribute1, attribute2 from domain where...". Once you read, cache.
http://practicalcloudcomputing.com/post/284222088/forklift-1...
Very interesting that Oracle became the bottleneck.
If, for instance, you were pulling this data out of an Oracle instance designed to be a cheap, historical archive, on minimal hardware and cheap disk, then yeah, it can be very limiting in performance.
If you're pulling it out of a production database, and have the priority levels set such that the data suck won't affect production users/usage, then again, that bottleneck is by design.
I'm taking that statement as something that's a comment on the system, rather than a slam on Oracle's technology and capabilities.
Oracle seems to be built with just one goal. Pay the salaries of people who do nothing but consult on Oracle. We run a Production Grade Oracle instance with high quality hardware and it still won't perform as well as an equivalent mysql db does.
(This opinion is purely subjective based on personal experience and should be understood with that in mind. I'm very soured on Oracle right now :-( )
See customer profiles for SenSage at http://sensage.com/customers/customer-profiles.php. Various customers collect and store up to 200GB of raw text log files (400 million records at generous 500bytes/line estimate) broken into records ... PER DAY ... with 2 to 5 or even more years of data online available for analysis ... fast analysis ... one example is an 8-billion-record query in 2 minutes.
to the best of my knowledge, oracle was the bottleneck because the oracle instance is an actual high volume production database and the IR process was restrained to minimize the impact to production users.
And also how is SenSage doing overall? I don't hear much in the press these days and assume either (a) not going so well; or more hopefully (b) they and their customers find each other in more private circles and there's no need to grab all the headlines.
I care because I worked on the product for almost 4 years starting from when we were in a living room/den/kitchen in Berkeley. Good times.