What NoSQL Store Should I Use? The Right Tool for Your Use Case
来源:互联网 发布:蒙泰5.1软件下载 编辑:程序博客网 时间:2024/05/18 20:50
As NoSQL data models continue to prove their worth in high-profile web properties and enterprise settings, developers and architects need a basic framework that helps them organize and differentiate these data stores according to their capabilities so that they can find out where to direct their more in-depth research.
Nathan Hurst's Visual Guide to NoSQL Systems is an excellent way to start your search for one, or many solutions. However, with the emergence of polyglot persistence, you don't necessarily need to choose just one data store, and now that we have data persistence available in hosted services, what's to stop us from trying many systems by popping them in and out of our custom platform? Heroku's Adam Wiggins recently wrote a great post that indicated which persistence solutions might work best in certain use cases:
- Frequently-written, rarely read statistical data (for example, a web hit counter) should use an in-memory key/value store like Redis, or an update-in-place document store like MongoDB.
- Big Data (like weather stats or business analytics) will work best in a freeform, distributed db system like Hadoop.
- Binary assets (such as MP3s and PDFs) find a good home in a datastore that can serve directly to the user’s browser, like Amazon S3.
- Transient data (like web sessions, locks, or short-term stats) should be kept in a transient datastore like Memcache. (Traditionally we haven’t grouped memcached into the database family, but NoSQL has broadened our thinking on this subject.)
- If you need to be able to replicate your data set to multiple locations (such as syncing a music database between a web app and a mobile device), you’ll want the replication features ofCouchDB.
- High availability apps, where minimizing downtime is critical, will find great utility in the automatically clustered, redundant setup of datastores like Casandra and Riak.
Nathan Hurst's Visual Guide to NoSQL Systems uses a triangular diagram to visualize the specialization domains of each data model and its tradeoffs.
from Nathan Hurst's Blog
Each corner represents a primary attribute of a system, and every model covers two of the three attributes:
- Consistency means that each client always has the same view of the data.
- Availability means that all clients can always read and write.
- Partition tolerance means that the system works well across physical network partitions.
RDBMSs (Postgres, MySQL, etc.) have both Consistency and Availability
Cassandra, Voldemort, CouchDB, and Riak are some of the models that have Availability and Partition tolerance.
BigTable, HBase, MongoDB, Berkeley DB, and Redis are some of the models that have Consistency and Partition tolerance.
This is a pretty general differentiation of the different data models, but it's definitely a useful tool to direct your research. You'll have to drill down into a lot more research and then do some actual testing of the solution to see if it meets all of your needs. And even if one solution doesn't meet all of your needs, there's also the growing trend ofpolyglot persistence - give it a try. Another new and growing trend is DaaS - Database-as-a-Service. Basically, as NoSQL shows its natural suitability for cloud computing persistence, more people are able to test them out (at-will) as a cloud-based service.
Heroku's 'drop in and run' cloud platform already supports several add-ons for NoSQL databases. They include: MongoHQ for MongoDB, Cloudant for CouchDB, NorthScale's Memcached service, and soon Redis To Go. Amazon has an RDS service for those who want to stick with MySQL and use it as a hosted service.
More information on choosing the right NoSQL for the job can be found here and here. You can find more info about Heroku and its NoSQL solutions on the referenced article: NoSQL, Heroku, and You.
- What NoSQL Store Should I Use? The Right Tool for Your Use Case
- 如何选择硬盘尺寸?(What size drive should I use?)
- check the manual that corresponds to your MySQL server version for the right syntax to use
- your MySQL server version for the right syntax to use near 'UNION '
- your MySQL server version for the right syntax to use near 'NULL' at line 1
- corresponds to your MySQL server version for the right syntax to use near错误原因之一
- iOS7 BUG:Your account is not valid for use in the ***Store...
- Why you should use talloc for your next project
- What values should I use for iOS boolean states?该不该使用true和false作为bool值
- Undefined symbols for architecture x86_64: Which architecture should I use?
- When should I use the Visitor Design Pattern?
- The Use Case Model
- Which Extension Should I Use?
- When should I use shutdown()?
- When Should I Use HBase
- check the manual that corresponds to your MySQL server version for the right syntax to use near 'cre
- check the manual that corresponds to your MySQL server version for the right syntax to use near '..'
- check the manual that corresponds to your MySQL server version for the right syntax to use near 'oiw
- ZOJ_1383
- 工厂方法,抽象工厂模式
- Tomcat 6.0 配置oracle数据库连接池
- makefile的函数
- 强行更换CHARACTER SET
- What NoSQL Store Should I Use? The Right Tool for Your Use Case
- An introduction to Spring BlazeDS integration
- linux多线程编程相关文章
- [hdu]1166敌兵布阵-线段树&树状数组
- 去掉GridView中自带的div
- 从逻辑盘符获得物理驱动号
- AIX操作系统写中文乱码问题
- oracle海量数据表删除重复记录
- 工具栏设计