【问题标题】:Smart way to evaluate what is the right NoSQL database for me?评估什么是适合我的 NoSQL 数据库的聪明方法?
【发布时间】:2010-09-08 01:20:12
【问题描述】:
现在似乎有无数的 NoSQL 数据库可用:
- 沙发数据库
- MongoDB
- 卡桑德拉
- Hadoop
这些工具与 Redis 等可用作 memcached 替代品的工具之间也存在界限。
没有挥手和抛出太多流行语 - 我的问题如下:
人们如何明智地决定哪种工具最适合他们的项目?项目是否与主观答案足够相似,例如:Ruby 比 Python 好或 Python 比 Ruby 好?还是我们在这里谈论的是苹果和橙子,因为它们各自解决了不同的问题?
让自己了解这一新趋势的最佳方式是什么?
【问题讨论】:
标签:
mongodb
couchdb
key-value-store
database
nosql
【解决方案1】:
也许一种思考方式是,编程最近已经从对所有事情使用一种通用语言发展到对大多数事情使用通用语言,并在更合适的部分加上特定于领域的语言。例如,您可以使用 Lua 编写游戏中角色的人工智能脚本。
NoSQL 数据库可能类似。 SQL 是采用时间最长和最广泛的通用数据库。虽然它可能无法满足许多任务,但程序员开始在更合适的时候将 NoSQL 用作特定领域的数据库。
【解决方案2】:
我认为,你提到的 4 个主要参与者确实具有完全不同的功能集,并尝试以不同的优先级解决不同的问题。
例如,据我所知,Cassandra(我假设是 Hadoop)的核心重点是大规模安装。
MongoDb 试图在提供相当强大的查询功能方面成为经典 SQL 服务器的更好扩展替代方案。
CouchDB 的重点是相对较小的规模(根本不会分片,“仅”复制)、高持久性和易于同步数据。
您可能想查看http://nosql-database.org/ 了解更多信息。
我面临的问题与您几乎相同,我想说没有真正的替代方案可以详细查看所有解决方案。
【解决方案4】:
这很容易。 NoSQL 数据库是符合 ACID 的数据库,但没有一些保证。因此,只需决定哪些保证可以不做,然后找到适合的数据库。例如,如果您不需要持久性,也许 redis 是最好的。或者,如果您不需要多记录事务,那么也许看看 mongodb。