NoSQL数据库Redis与CouchDB特性对比

日期: 2011-08-09 作者:nosqlfan 来源:TechTarget中国 英文

  相比来看,CouchDB 的长处正是Redis的短处:存储大量的不易变但会被经常查询的数据。Redis的长处正是CouchDB的短处:存储小量的常变数据。

  以一个博客系统为例,CouchDB作为一个文档型数据库,可以用来存储文章,评论,模板及附件等,而Redis以其丰富的数据类型的数据结构,更适合用来存储评论列表,网站实时状态,过滤spam,用户session信息以及页面缓存。

  作为一个内存数据库,Redis提供了快速对其数据结构进行复杂操作的功能,另外通过一份顺序的日志来保证其数据可靠性。

  CouchDB使用了一种append-only的数据模型,不仅在数据库数据存储上,包括其B-tree和R-tree索引都是append-only的,所以如果你的数据修改操作太多(比如计数器应用),那么CouchDB的数据文件会飞速膨胀。

  Redis采用定时将内存数据Flush成RDB文件的方法来实现数据的持久化,而CouchDB的数据需要定时做数据压缩以缩减数据文件的大小,这一过程会把数据文件读入,压缩后再写成新的文件。是一个非常耗时的过程。

  Redis提供了简单的索引机制和复杂的数据结构,而CouchDB提供的是复杂的索引和简单的数据结构。Redis适合用来存储实时数据,而CouchDB适合用来存储大量的文档型数据。

  下面是一个更详细的各方面对比表格:

CouchdbRedis
Written inErlangC
LicenseApacheBSD
Release1.1.0, 2.0 preview2.2.12, 2.4.0RC5
APIRESTTelnet-style
API SpeedSlowFast
DataJSON documents, binary attachmentsText, binary, hash, list, set, sorted set
IndexesB-tree, R-tree, Full-text (with Lucene), any combination of data types via map/reduceHash only
QueriesPredefined view/list/show model, ad-hoc queries require table scansIndividual keys
StorageAppend-only on diskIn-memory, append-only log
UpdatesMVCCIn-place
TransactionsYes, all-or-nothing batchesYes, with conditional commands
CompactionFile rewriteSnapshot
ThreadingMany threadsSingle-threaded, forks for snapshots
Multi-CoreYesNo
MemoryTinyLarge (all data)
SSD-FriendlyYesYes
RobustYesYes
BackupJust copy the filesJust copy the files
ReplicationMaster-master, automaticMaster-slave, automatic
ScalingClustering (BigCouch)Clustering (Redis cluster*)
ScriptingJavaScript, Erlang, others via pluginLua*
FilesOne per databaseOne per database
Virtual FilesAttachmentsNo
OtherChanges feed, Standalone applicationsPub/Sub, Key expiry

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

作者

nosqlfan
nosqlfan

相关推荐