SQL vs NoSQL: The Problem of Data
http://highscalability.com/blog/2012/1/24/the-state-of-nosql-in-2012.html :: High Scalability - High Scalability - The State of NoSQL in 2012
Similar problems:
Our thinking, exactly:
http://mobiledrupal.com/building-mobile-app-api-using-drupal-nodejs-and-mongodb :: Building a mobile app API using Drupal, Node.js and MongoDB | Mobile Drupal
Instagram
http://instagram-engineering.tumblr.com/post/13649370142/what-powers-instagram-hundreds-of-instances-dozens-of » What Powers Instagram: Hundreds of Instances, Dozens of Technologies - Instagram Engineering
http://instagram-engineering.tumblr.com/post/10853187575/sharding-ids-at-instagram » Sharding & IDs at Instagram - Instagram Engineering
http://instagram-engineering.tumblr.com/post/12202313862/storing-hundreds-of-millions-of-simple-key-value-pairs » Storing hundreds of millions of simple key-value pairs in Redis - Instagram Engineering
Flickr
Normalization is for sissies.
http://code.flickr.com/blog/2010/02/08/using-abusing-and-scaling-mysql-at-flickr/ » Code: Flickr Developer Blog » Using, Abusing and Scaling MySQL at Flickr
SQL
MySQL
HandlerSocket is a NoSQL plugin for MySQL
http://yoshinorimatsunobu.blogspot.com/2010/10/using-mysql-as-nosql-story-for.html :: Yoshinori Matsunobu's blog: Using MySQL as a NoSQL - A story for exceeding 750,000 qps on a commodity server
https://github.com/DeNADev/HandlerSocket-Plugin-for-MySQL :: DeNADev/HandlerSocket-Plugin-for-MySQL
http://www.mysqlperformanceblog.com/2011/03/28/whats-up-with-handlersocket/ :: What’s up with HandlerSocket? - MySQL Performance Blog
PHP Application Sharding
http://code.google.com/p/shard-query/ :: shard-query - Shard-Query is a distributed parallel query engine for MySQL - Google Project Hosting
http://code.google.com/p/php-sql-parser/ :: php-sql-parser - A pure PHP SQL (non validating) parser w/ focus on MySQL dialect of SQL - Google Project Hosting
Drizzle http://www.drizzle.org/ » Drizzle | A database for the cloud http://nosql.mypopescu.com/post/296876437/drizzle-replication-nosql-hybrid-solutions » Drizzle Replication: Opening the Doors to Hybrid Solutions • myNoSQL
TokuDB Engine: http://stackoverflow.com/questions/1746842/mysql-has-anyone-used-the-tokudb-storage-engine » database - MySQL: Has anyone used the TokuDB storage engine? - Stack Overflow http://nosql.mypopescu.com/post/296876437/drizzle-replication-nosql-hybrid-solutions » Drizzle Replication: Opening the Doors to Hybrid Solutions • myNoSQL
NoSQL
http://nosql-database.org/ » NOSQL Databases http://highscalability.com/blog/2010/12/6/what-the-heck-are-you-actually-using-nosql-for.html :: High Scalability - High Scalability - What the heck are you actually using NoSQL for? http://highscalability.com/blog/2011/6/20/35-use-cases-for-choosing-your-next-nosql-database.html :: High Scalability - High Scalability - 35+ Use Cases for Choosing Your Next NoSQL Database http://nosql.mypopescu.com/kb/nosql » NoSQL • myNoSQL NoRAM DB => “If It Does Not Fit in RAM, I Will Quietly Die For You”
http://blogs.msdn.com/b/usisvde/archive/2012/04/05/getting-acquainted-with-nosql-on-windows-azure.aspx :: Getting Acquainted with NoSQL on Windows Azure - US ISV Evangelism - Site Home - MSDN Blogs http://www.thewindowsclub.com/difference-sql-nosql-comparision :: Difference between SQL and NoSQL : A Comparison http://highlyscalable.wordpress.com/2012/03/01/nosql-data-modeling-techniques/ :: NoSQL Data Modeling Techniques « Highly Scalable Blog
Relational modeling is typically driven by the structure of available data. The main design theme is ”What answers do I have?”. NoSQL data modeling is typically driven by application-specific access patterns, i.e. the types of queries to be supported. The main design theme is ”What questions do I have?”
A must watch: http://nosql.mypopescu.com/post/1016320617/mongodb-is-web-scale# » MongoDB is Web Scale • myNoSQL http://nosql.mypopescu.com/post/541365394do/about-the-nosql-hype-cycle » About the NoSQL Hype Cycle • myNoSQL
Con’s: Does not guarantee ACID: after the INSERT is completed in SELECT: a different value can be retrieved http://www.cubrid.org/blog/dev-platform/nosql-benchmarking/ :: NoSQL Benchmarking | CUBRID Blog
Redis and mongodb users might be somewhat surprised to learn that, by default, they can lose your
data should the process crash or shut down. While you can configure them to work around this issue,
you're going to slow things down substantially doing so and therefore lose the big advantage they've been designed to provide.
Searchability (I couldn't think of a better term) - Key-value stores are typically not designed to be easy to search.
http://java.dzone.com/articles/should-i-use-mongodb-couchdb :: Should I use MongoDB, CouchDB, or Redis? | Javalobby
Landscape: http://www.vineetgupta.com/2010/01/nosql-databases-part-1-landscape/ » NoSql Databases – Part 1 – Landscape » Vineet Gupta http://blog.knuthaugen.no/2010/03/the-nosql-landscape.html :: Analysis of the NoSQL Landscape - All About the Code http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis :: Cassandra vs MongoDB vs CouchDB vs Redis vs Riak vs HBase vs Couchbase vs Hypertable vs ElasticSearch vs Accumulo vs VoltDB vs Scalaris comparison :: Software architect Kristof Kovacs http://stackoverflow.com/questions/4720508/redis-couchdb-or-cassandra :: nosql - Redis, CouchDB or Cassandra? - Stack Overflow
Best explanation of key/value store: http://redis.io/topics/twitter-clone » A case study: Design and implementation of a simple Twitter clone using only the Redis key-value store as database and PHP – Redis
This may appear strange at first, but remember that we are only able to access data by key!
It's not possible to tell Redis to return the key that holds a specific value. This is also our strength,
this new paradigm is forcing us to organize the data so that everything is accessible by primary key,
speaking with relational DBs language.
MapReduce Explained
http://ayende.com/blog/4435/map-reduce-a-visual-explanation » Map / Reduce – A visual explanation - Ayende @ Rahien
http://benbuckman.net/tech/12/06/understanding-mapreduce-mongodb-nodejs-php-and-drupal :: Understanding MapReduce in MongoDB, with Node.js, PHP (and Drupal) | Tech Blog by New Leaf Digital | Ben Buckman.net
Translate SQL to NoSQL MapReduce
http://nosql.mypopescu.com/post/392418792/translate-sql-to-mongodb-mapreduce » Translate SQL to MongoDB MapReduce • myNoSQL
http://rickosborne.org/download/SQL-to-MongoDB.pdf » rickosborne.org/download/SQL-to-MongoDB.pdf
http://rickosborne.org/blog/2010/02/playing-around-with-mongodb-and-mapreduce-functions/ » Playing around with MongoDB and MapReduce functions » rick osborne dot org
http://horicky.blogspot.com/2010/08/designing-algorithmis-for-map-reduce.html » Pragmatic Programming Techniques: Designing algorithms for Map Reduce
Technology details:
http://www.slideshare.net/guestdfd1ec/design-patterns-for-distributed-nonrelational-databases » Design Patterns for Distributed Non-Relational Databases
http://horicky.blogspot.com/2009/11/nosql-patterns.html » Pragmatic Programming Techniques: NOSQL Patterns
http://www.slideshare.net/dstainer/introduction-to-nosql-databases » Introduction to NoSQL Databases
CouchDB
CouchDB and MongoDB: http://rickosborne.org/blog/2010/02/sql-or-nosql/ :: SQL or NoSQL? » rick osborne dot org
Redis
Cons
- Client-side sharding (consistent hashing or custom distribution strategies)
- Data must fit in memory
- Pipelining is great
http://www.ustream.tv/recorded/11435693 :: Intro to Redis, Recorded on 12/14/10 joyent on USTREAM. Technology
Explained:
https://groups.google.com/forum/?fromgroups#!topic/redis-db/q7EdSUejzaU :: Predis vs. phpRedis, pipelining, clustering and others - Google Groups
http://redis.io/topics/twitter-clone » A case study: Design and implementation of a simple Twitter clone using only the Redis key-value store as database and PHP – Redis
http://simonwillison.net/static/2010/redis-tutorial/ » Redis tutorial, April 2010 - by Simon Willison
http://try.redis-db.com/ » Try Redis
Who’s Online?
http://www.lukemelia.com/blog/archives/2010/01/17/redis-in-practice-whos-online/ » Luke Melia » Redis in Practice: Who’s Online?
Autocomplete in NoSQL:
http://patshaughnessy.net/2011/11/29/two-ways-of-using-redis-to-build-a-nosql-autocomplete-search-index » Two ways of using Redis to build a NoSQL autocomplete search index - Pat Shaughnessy
https://github.com/seatgeek/soulmate/ » seatgeek/soulmate
http://www.varunpant.com/posts/auto-complete-with-redis-python » Varun Pant
Full Text Search
http://playnice.ly/blog/2010/05/05/a-fast-fuzzy-full-text-index-using-redis/ » A fast, fuzzy, full-text index using RedisPlayNice.ly | PlayNice.ly
http://playnice.ly/blog/2010/05/24/redis-multi-field-searching-and-filtering/ » Redis multi-field searching and filteringPlayNice.ly | PlayNice.ly
http://nosql.mypopescu.com/post/683472484/redis-and-a-full-text-indexing-solution » Redis and a Full Text Indexing Solution • myNoSQL
Pub/Sub
http://stackoverflow.com/questions/6192177/redis-pub-sub-with-reliability :: Redis Pub/Sub with Reliability - Stack Overflow
MongoDB & Redis
http://masonoise.wordpress.com/2010/01/30/comparing-mongodb-and-redis-part-1/ :: Comparing MongoDB and Redis, Part 1 | While I Pondered…
http://masonoise.wordpress.com/2010/02/02/comparing-mongodb-and-redis-part-2/ :: Comparing MongoDB and Redis, Part 2 | While I Pondered…
[Prebuilt Redis Windows binaries](https://github.com/dmajkic/redis)
Hbase/Hadoop
http://nosql.mypopescu.com/post/15561851616/hadoop-distributed-file-system-hdfs-a-cartoon-is-worth » Hadoop Distributed File System HDFS: A Cartoon Is Worth A • myNoSQL
MongoDB
MongoDB is the leading alternative.
http://www.mongodb.org/display/DOCS/Production+Deployments :: Production Deployments - MongoDB
Great Interactive Small Tutorial + The Little MongoDB Book
http://mongly.com/ » The MongoDB Collection
Geospatial Indexing
Foursquare was using MongoDB.
http://architects.dzone.com/articles/challenges-mongodb-geospatial :: Challenges of MongoDB, Geospatial Indexing, and Advanced Queries | Architects Zone
http://ralphbarbagallo.com/2011/04/02/an-overview-of-geospatial-databases/ :: An Overview of Geospatial Databases « Ralph Barbagallo's Self Indulgent Blog
http://labs.laulima.com/how-to-import-7-million-locations-from-geonames-to-mysql-then-into-mongodb-so-they-be-compared-and-optimized-for-location-queries/ :: Lau-Labs | Blog | How To: Import 7 Million Locations from GeoNames to MySQL, then into MongoDB so they can be compared and optimized for Location Queries
Scalability
http://stackoverflow.com/questions/5667820/setting-up-mongodb-for-sharding-scalability » nosql - setting up mongodb for sharding/scalability? - Stack Overflow
Most important feature of Mongo is that you don't have to modify application code to switch to sharded setup.
MongoDB is FAST
http://milancermak.posterous.com/benchmarking-tornados-sessions-0 » Benchmarking Tornado's sessions - A digital Moleskine
http://tumblr.devdazed.com/post/2737860983/mongo-vs-redis-the-increment-battle » Mongo Vs Redis, the Increment Battle - DevDazed
Redis is roughly faster than MongoDB: 2x write, 3x read.
http://stackoverflow.com/questions/5252577/how-much-faster-is-redis-than-mongodb » benchmarking - How much faster is Redis than mongoDB? - Stack Overflow
Problems:
- Global lock and huge memory requirements
- MongoDB should be used as a medium or small-sized storage system
- Missing Records? 2010. Solved.
http://www.blue74.com/2010/06/scatter/were-back-so-long-mongodb/ :: We’re Back… so long MongoDB! | Blue74
- Optimize indexes
http://serverfault.com/questions/335263/outgrew-mongodb-now-what :: Outgrew MongoDB … now what? - Server Fault
http://www.10gen.com/presentations/mongosf2011/schemascale :: 10gen - MongoDB Presentations - Schema Design at Scale
PHP + MongoDB
http://blog.mongodb.org/post/24960636131/mongodb-for-the-php-mind-part-1 :: The MongoDB NoSQL Database Blog, MongoDB for the PHP Mind, Part 1
http://blog.mongodb.org/post/26903435041/mongodb-for-the-php-mind-part-2 :: The MongoDB NoSQL Database Blog, MongoDB for the PHP Mind, Part 2
http://prajwal-tuladhar.net.np/2009/11/15/496/mapreduce-api-for-mongodb/ :: Prajwal Tuladhar’s Blog » MapReduce API for MongoDB
Why?
http://www.mongodb.org/display/DOCS/Use+Cases :: Use Cases - MongoDB
MongoDB keeps as much in memory as possible while still keeping it usable. I make this point
because Redis provides the speed of memory but without the tools you would find in an SQL database.
Advanced Architecture Examples http://highscalability.com/blog/2011/11/29/datasift-architecture-realtime-datamining-at-120000-tweets-p.html » High Scalability - High Scalability - DataSift Architecture: Realtime Datamining at 120,000 Tweets Per Second
http://porcelli.com.br/archiv/nosql-for-beginners/ :: nosql for beginners | porcelli’s adventures in wonderland
Scaling
http://highscalability.com/blog/2011/9/13/must-see-5-steps-to-scaling-mongodb-or-any-db-in-8-minutes.html :: High Scalability - High Scalability - Must see: 5 Steps to Scaling MongoDB (Or Any DB) in 8 Minutes