`
xubaoguo
  • 浏览: 79170 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

nosql

 
阅读更多

话说,尽管 SQL 数据库一直是我们IT行业中最有用的工具,然而,它们这样在行业中超过15年以上的“转正”终于就要寿终正寝了。现在,虽然关系型数据库仍然无所不在,但它越来越不能满足我们的需要了。NoSQL成为了业界的新宠。

但是,各种 "NoSQL" 数据库之间的差异比当年众多关系型数据库之间的差异要大许多。这就加大了人们在建设自己的应用是选择合适的数据库的难度。

在这篇汇总的PK中,我们对 Cassandra, Mongodb, CouchDB, Redis, RiakHBase 进行了比较,以供参考:

CouchDB

  • Written in: Erlang
  • Main point关键点: DB consistency一致性, ease of use易用
  • License 许可协议: Apache
  • Protocol 协议: HTTP/REST
  • Bi-directional (!) replication双向复制,
  • continuous or ad-hoc,
  • with conflict detection冲突检测,
  • thus, master-master replication. (!) 主主复制
  • MVCC - write operations do not block reads 写操作不会阻塞读操作
  • Previous versions of documents are available 文本式
  • Crash-only (reliable) design 可靠性设计
  • Needs compacting from time to time
  • Views: embedded内部嵌入 map/reduce算法
  • Formatting views: lists & shows
  • Server-side document validation possible
  • Authentication possible
  • Real-time updates via _changes (!) 实时更新
  • Attachment handling
  • thus, CouchApps (standalone js apps)
  • jQuery library included

适用: 累计 堆积计算, 偶尔改变数据, 预先定义的查询. 非常注重版本控制的场合.

举例: CRM, CMS系统. 主-主复制是其特别亮点,可以易于多个站点部署。

Redis

  • Written in: C/C++
  • Main point 关键点: Blazing fast 超快
  • License: BSD
  • Protocol: Telnet-like
  • Disk-backed in-memory database, 磁盘后备,内存数据库
  • but since 2.0, it can swap to disk. 但是从2.0开始直接交换到磁盘
  • Master-slave replication 主-从复制
  • Simple keys and values, 简单的key-value形式
  • but complex operations like ZREVRANGEBYSCORE 但是复杂操作类似ZREVRANGEBYSCORE
  • INCR & co (good for rate limiting or statistics)
  • Has sets (also union/diff/inter)
  • Has lists (also a queue; blocking pop)
  • Has hashes (objects of multiple fields)
  • Of all these databases, only Redis does transactions (!) 在这些数据库中,只有Redis有事务机制。
  • Values can be set to expire (as in a cache) 如同缓存一样,值能被设置为超过一定时间过期失效。
  • Sorted sets (high score table, good for range queries) 有排序的sets,善于range查询。
  • Pub/Sub and WATCH on data changes (!) 采取Pub/Sub 和观察者WATCH事件触发数据变化。

适用: 在可以控制的数据库大小情况下(放得下整个内存),快速改变数据,快速写数据。

举例: 股票价格系统 分析,实时数据收集,联系等等。

MongoDB

  • Written in: C++
  • Main point: Retains some friendly properties of SQL. 保留类似SQL风格.(Query, index)
  • License: AGPL (Drivers: Apache)
  • Protocol: Custom, binary (BSON)
  • Master/slave replication 主从复制(分布式状态集群方式)
  • Queries are javascript expressions 查询是javascript表达式
  • Run arbitrary javascript functions server-side
  • Better update-in-place than CouchDB 比CouchDB更好地就地更新
  • Sharding built-in 内置分片碎片
  • Uses memory mapped files for data storage 使用内存对应文件方式实现数据存储
  • Performance over features
  • After crash, it needs to repair tables 当崩溃后,需要修复表。

适用: 需要动态查询. 愿意事先定义索引indexes, 不需要 map/reduce 功能. 你需要巨大的数据库有良好性能,你需要CouchDB但是你数据变化改变很频繁,需要频繁写。

举例: 适合所有MySQL 或者 PostgreSQL场合,它也适合

Cassandra

  • Written in: Java
  • Main point: 大表模型BigTable 和 Dynamo中最好的
  • License: Apache
  • Protocol: Custom, binary (Thrift)
  • Tunable trade-offs for distribution and replication (N, R, W)
  • Querying by column, range of keys 按列查询
  • BigTable-like features: columns, column families
  • Writes are much faster than reads (!) 写快于读
  • Map/reduce possible with Apache Hadoop
  • 部分复杂性可能由于Java自身原因(如配置configuration, seeing exceptions, etc)

适用: 当写操作多于读操作 (如日志logging).

举例: 银行Banking, 金融系统,写必须快于都的场合,实时的数据分析等.

Riak

  • Written in: Erlang & C, some Javascript
  • Main point: 容错性Fault tolerance 失败恢复 可靠性好
  • License: Apache
  • Protocol: HTTP/REST
  • Tunable trade-offs for distribution and replication (N, R, W)
  • Pre- and post-commit hooks,
  • for validation and security.
  • Built-in full-text search 内置全文本搜索
  • 在 Javascript 中Map/reduce 或 Erlang 支持
  • Comes in "open source" and "enterprise" editions 有两个版本

适用: 如果你希望有类似Cassandra-like (Dynamo-like)风格, 但是你不想处理器复杂性和膨胀性。单服务器有良好可伸缩性scalability, 可用性availability 和容错性 fault-tolerance, 采取是昂贵的多站点复制multi-site replication.

举例: 销售点数据收集,工厂控制系统,那些不能允许几秒当机的场合。

HBase

(With the help of ghshephard)

  • Written in: Java
  • Main point: 十亿级别的行 X 百万级别的列 大容量
  • License: Apache
  • Protocol: HTTP/REST (also Thrift)
  • Modeled after BigTable 大表模型
  • Map/reduce with Hadoop 内置Map/reduce
  • Query predicate push down via server side scan and get filters
  • Optimizations for real time queries 能够实时获得基于查询的优化
  • A high performance Thrift gateway 高性能的Thrift型网关
  • HTTP supports XML, Protobuf, and binary
  • Cascading, hive, and pig source and sink modules
  • Jruby-based (JIRB) shell
  • No single point of failure 无单点风险
  • Rolling restart for configuration changes and minor upgrades
  • Random access performance is like MySQL 随机访问的性能类似MySQL

适用: 如果你喜欢大表模型BigTable. :) 你需要随机 实时的读写操作

举例: Facebook 消息数据库

当然,所有这些数据库系统都有比列在这里多得多的功能特性。我这里仅仅依据我个人认识列出一些关键特性,并且这些项目的开发也很活跃,我将尽力保持更新。

-- Kristof

来源:http://kkovacs.eu/cassandra-vs-mongodb-vs-couchdb-vs-redis

分享到:
评论

相关推荐

    nosql研发之路

    《NoSQL研发之路:从历史发展到特殊领域应用》 一、NoSQL概念与分类 NoSQL,全称为“Not Only SQL”,意在强调数据库不仅仅局限于传统的SQL关系型数据库,而是涵盖了一系列非关系型数据库技术。NoSQL数据库的出现...

    NoSQLBooster for MongoDB

    NoSQLBooster for MongoDB是一款强大的管理工具,专为优化MongoDB操作而设计,其前身为Mongobooster,是开发人员和数据库管理员进行高效数据库管理和维护的理想选择。 NoSQLBooster提供了一系列功能,旨在提升...

    NoSQL数据库入门 高清PDF

    根据提供的信息,我们可以推断出该文档主要围绕“NoSQL数据库入门”这一主题展开,并且它是一本高清PDF格式的学习指导书籍。尽管文档的部分内容似乎与Linux公社网站介绍有关,但我们的重点将放在提取与NoSQL数据库...

    NoSQL数据库PPT.pptx

    NoSQL数据库 14信管一班2组23殷月园 NoSQL数据库PPT全文共20页,当前为第1页。 内容大纲 定义 产生 共同特征 分类 适用场景 发展现状 7 挑战 NoSQL数据库PPT全文共20页,当前为第2页。 一.什么是NoSQL数据库? NoSQL...

    mongodb 4.0 客户端工具nosqlbooster

    MongoDB 4.0 客户端工具NosqlBooster是一款专为MongoDB数据库设计的强大图形用户界面(GUI)工具,适用于管理和操作MongoDB数据库。NosqlBooster提供了直观的界面,使得对MongoDB的数据查询、编辑、管理变得更加便捷...

    NoSQL Manager for MongoDB 下载

    MongoDB 是一种流行的开源、分布式、面向文档的数据库系统,属于 NoSQL 数据库类型。NoSQL(Not Only SQL)指的是非关系型数据库,它不采用传统的关系型数据库模型,而是提供了一种更灵活的方式来存储和处理数据。在...

    nosql分布式数据库期末考试题.docx

    ### NoSQL分布式数据库知识点解析 #### 一、选择题知识点详解 **1. 关系数据库与非关系数据库** - **关系数据库**: MySQL、SQL Server 和 Oracle 均属于关系数据库,它们采用 SQL 作为标准查询语言,支持 ACID ...

    《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf

    《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 HBase原理实现.pdf《NoSQL数据库原理与应用案例教程》PPT课件(共9单元)第4章 ...

    nosqlbooster4mongo-7.0.8,MongoDB连接工具

    NosqlBooster for MongoDB是一款高效、用户友好的MongoDB管理工具,专为简化MongoDB的日常操作而设计。版本7.0.8是该工具的一个更新版本,提供了一系列增强的功能和优化,旨在提高开发人员和数据库管理员的工作效率...

    nosqlbooster-6.2.17.zip

    NosqlBooster是一款专为MongoDB设计的强大管理工具,它提供了类似SQL的查询界面,使得对MongoDB数据的操作更加直观和高效。在这个场景中,我们讨论的是 NosqlBooster 的6.2.17版本的压缩包。 NosqlBooster的核心...

    Mac OS版 nosqlbooster mongodb可视化工具

    在Mac OS环境下,为了方便管理和操作MongoDB数据库,我们可以使用像NosqlBooster for MongoDB这样的可视化工具。NosqlBooster是专为MongoDB设计的一款高效、功能强大的管理软件,尤其适合Mac用户。 标题中的"Mac OS...

    NoSQL数据库原理课件-侯宾.zip

    【分布式数据库原理与NoSQL详解】 在当今大数据时代,传统的SQL关系型数据库已经无法满足海量数据的存储和处理需求,因此分布式数据库和NoSQL数据库应运而生。本课件将深入探讨分布式数据库的原理以及NoSQL数据库的...

    nosqlbooster4mongo-5.2.8.zip

    而NosqlBooster for MongoDB则是专为MongoDB设计的一款高效、强大的图形化管理工具,旨在简化数据库的日常管理和开发工作。NosqlBooster 5.2.8是该工具的一个版本,提供了一系列增强的功能和优化的用户体验。 ...

    nosql分布式数据库期末考试题.pdf

    Nosql 分布式数据库期末考试题 本期末考试题涵盖了 Nosql 数据库的基础知识、 MongoDB、HBase、Neo4j 等分布式数据库的特点和应用场景。涵盖了数据库基础知识、Nosql 数据库的特点、CAP 理论、分布式数据库设计等多...

    NoSQL Manager for MongoDB中文版(免安装).zip

    MongoDB是一种流行的开源、分布式文档型数据库,属于NoSQL数据库的一种。它以其灵活性、高性能、易扩展性以及支持丰富的数据模型而备受青睐。NoSQL Manager for MongoDB是一款专为MongoDB设计的强大管理工具,提供了...

    实验四:NoSQL和关系数据库的操作比较

    【实验四:NoSQL和关系数据库的操作比较】 本实验旨在对比分析四种不同的数据库管理系统:MySQL、HBase、Redis和MongoDB。这些数据库在处理大数据时各有特点,理解它们的概念及不同点是实验的关键。 1. **MySQL**...

    NoSQL学习之路

    NoSQL 数据库是当前大数据时代的热门话题,NoSQL 数据库学习之路是 NoSQL 数据库的详细介绍,介绍了目前主流的 NoSQL 数据库实现原理,涵盖了 CAP 理论、 BASE 理论、一致性哈希、 Vector Clock、Gossip Protocol 等...

    山东大学 nosql期末复习笔记 nosql 期末复习

    【 NosQL 数据库详解】 NosQL(Not Only SQL)是一种非关系型数据库,它与传统的关系型数据库不同,强调水平扩展、高并发处理和大数据存储。在 NosQL 期末复习中,我们需要掌握的关键知识点包括数据库的类型、特性...

Global site tag (gtag.js) - Google Analytics