Riak与MongoDB的对比

  categories:java资料  tags:  author:
最近在学习riak,搜索了一些文章, 尽管比较老了, 但是还是保存下来, 学习一下

原文地址:http://blog.nosqlfan.com/html/2705.html

本文来自Riak所属的Basho公司的技术WiKi,文章从几个方面对Riak和MongoDB进行了对比,这不是一篇PK文章,NoSQLFan翻译给大家,希望本文能让您对Riak和MongoDB有更多的了解。

来源地址:wiki.basho.com

riak-001-2

机制与概念上的异同

Riak和MongoDB在使用特性上有下面几个相同点:

  • 都是文档型的数据模型
  • 具体存储方式都不是以文档型进行存储
  • 写性能及写吞吐都很高

虽然上面几点看起来二者挺像,但在内部实现上两者却是相去甚远。比如Riak是一个分布式的存储,而MongoDB可以理解为是一个单一的数据库系 统,同时加上了Replication和Sharding功能。MongoDB的内部数据结构上还是文档,而Riak是不用关心存储内容的二进制。 MongoDB提供GridFS机制来存储二进制内容,而Riak的二进制内容与普通内容存储方式一样。MongoDB的写入方式是 in-place方式,修改一个文档是原子性的,而Riak是通过quormNRW的机制保证写入操作安全性的。

  • http://www.mongodb.org/display/DOCS/Home
  • http://blog.mongodb.org/post/248614779/fast-updates-with-mongodb-update-in-place
  • http://www.mongodb.org/display/DOCS/Updating#Updating-Update

复制备份及横向扩展

Riak主要通过一致性hash算法来实现其数据的复制及分片,一致性hash机制是Riak的核心思想之一。在Riak中,每个节点都是对等的,所以其不存在单点故障。

  • Add Nodes to Riak
  • Consistent Hashing

而MongoDB在1.6版本后也推出了强有力的复制备份功能

1.主从复制

  • http://www.mongodb.org/display/DOCS/Master+Slave

2.Replica Sets

Replica

阅读全文

Riak学习入门

  categories:资料  tags:  author:

学习nosql过程中, 偶然发现了riak,以前没接触过, 到网络上查找了写文章, 把文章转帖到这里, 方便阅读。

NoSQL数据库 这里有几个nosql的介绍

riak的下载地址:http://docs.basho.com/riak/latest/downloads/

一. Riak 简介

来源:http://www.ibm.com/developerworks/cn/opensource/os-riak1/

使用 Riak 的 HTTP 界面存储和检索数据

阅读全文

cassandra入门

  categories:java资料  tags:,   author:

Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,集GoogleBigTable的数据模型与Amazon Dynamo的完全分布式的架构于一身Facebook于2008将 Cassandra 开源,此后,由于Cassandra良好的可扩放性,被Digg、Twitter等知名Web 2.0网站所采纳,成为了一种流行的分布式结构化数据存储方案。
Cassandra是一个混合型的非关系的数据库,类似于Google的BigTable。其主要功能比Dynamo (分布式的Key-Value存储系统)更丰富,但支持度却不如文档存储MongoDB(介于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系数据库的。支持的数据结构非常松散,是类似json的bjson格式,因此可以存储比较复杂的数据类型)。Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网络社交云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型。P2P去中心化的存储。很多方面都可以称之为Dynamo 2.0

网站地址:http://cassandra.apache.org/

以下资料来源:http://asyty.iteye.com/blog/1202072

一、Cassandra框架

cassandra-001-1

图1 Cassandra

Cassandra是社交网络理想的数据库,适合于实时事务处理和提供交互型数据。以Amazon的完全分布式的Dynamo为基础,结合了Google BigTable基于列族(Column Family)的数据模型,P2P去中心化的存储,目前twitter和digg中都有使用。

在CAP特性上,HBase选择了CP,Cassandra更倾向于AP,而在一致性上有所减弱。

Cassandra的类Dynamo特性有以下几点:

l 对称的,P2P架构

n 无特殊节点,无单点故障

l 基于Gossip的分布式管理

l 通过分布式hash表放置数据

n 可插拔的分区

n 可插拔的拓扑发现

n 可配置的放置策略

l 可配置的,最终一致性

 

类BigTable特性:

l

阅读全文

Cassandra 分布式数据库 数据结构与数据读写

  categories:java资料  tags:,   author:

Cassandra 的数据存储结构

Cassandra 中的数据主要分为三种:

  1. CommitLog:主要记录下客户端提交过来的数据以及操作。这个数据将被持久化到磁盘中,以便数据没有被持久化到磁盘时可以用来恢复。
  2. Memtable:用户写的数据在内存中的形式,它的对象结构在后面详细介绍。其实还有另外一种形式是 BinaryMemtable 这个格式目前 Cassandra 并没有使用,这里不再介绍了。
  3. SSTable:数据被持久化到磁盘,这又分为 Data、Index 和 Filter 三种数据格式。

CommitLog 数据格式

CommitLog 的数据只有一种,那就是按照一定格式组成 byte 组数,写到 IO 缓冲区中定时的被刷到磁盘中持久化,在上一篇的配置文件详解中已经有说到 CommitLog 的持久化方式有两种,一个是 Periodic 一个是 Batch,它们的数据格式都是一样的,只是前者是异步的,后者是同步的,数据被刷到磁盘的频繁度不一样。关于 CommitLog 的相关的类结构图如下:

图 1. CommitLog 的相关的类结构图
阅读全文

Cassandra 分布式数据库 配置、启动与集群

  categories:java资料  tags:,   author:

来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-cassandraxu1/

本文首先介绍了 Cassandra 服务器的配置文件各个配置项的意义,接着讨论了它的启动过程,包括 Cassandra 在启动过程中主要都完成了那些操作,为什么要执行这些操作,最终达到什么状态等。接着介绍如果在集群情况下,集群中节点如何自治理,节点间如何通信、如何 控制数据在集群中的分布等关键问题。

Cassandra 的配置详解

了解一个软件的配置项的意义是使用这个软件的前提,这里详细介绍 Cassandra 的配置文件(storage-config.xml)中各个配置项的意义,这其中包含有很多配置参数,我们可以对其进行调整以达到理想的性能。为了节省篇 幅这里没有列出 storage-config.xml 文件的内容,你可以对照着这个文件看下面的内容。

ClusterName

Cluster Name 代表一个族的标识,它通常代表一个集群。这个配置项在 Cassandra 没有存储数据时就必须指定,当 Cassandra 第一次启动后,它就会被写到 Cassandra 的系统表中,如果你要修改 Cluster Name 必须要删除 Cassandra 中数据。

AutoBootstrap

这个配置项看起来十分简单,但是如果你对 Cassandra 没有深入了解的话,恐怕不知道当你改变这个配置项时 Cassandra 可能会发生什么?

我们知道 Cassandra 集群是通过维护一个自适应的 Token

阅读全文

Apache Cassandra 数据库

  categories:java资料  tags:,   author:

来源:http://www.ibm.com/developerworks/cn/opensource/os-apache-cassandra/

NoSQL 存储提供了关系数据库的一个灵活的、可扩展的替换物,而且在众多诸如此类的存储中,Cassandra 是广受欢迎的选择之一。本文将超越众所周知的一些细节,探讨与 Cassandra 相关的不太明显的细节。您将检查 Cassandra 数据模型、存储模式设计、架构,以及与 Cassandra 相关的潜在惊喜。

Apache Cassandra 简介在数据库历史文章 “What Goes Around Comes Around”中,Michal Stonebraker 详细描述了存储技术是如何随着时间的推移而发展的。实现关系模型之前,开发人员曾尝试过其他模型,比如层次图和有向图。值得注意的是,基于 SQL 的关系模型(即使到现在也仍然是事实上的标准)已经盛行了大约 30 年。鉴于计算机科学的短暂历史及其快速发展的步伐,这是一项非凡的成就。关系模型建立已久,以至于许多年来,解决方案架构师很容易为应用程序选择数据存 储。他们的选择总是关系数据库。

诸如增加系统、移动设备、扩展的用户在线状态、云计算和多核系统的用户群之类的开发已经导致产生越来越多的大型系统。Google 和 Amazon 之类的高科技公司都是首批触及规模问题的公司。他们很快就发现关系数据库并不足以支持大型系统。

为了避免这些挑战,Google 和 Amazon 提出了两个可供选择的解决方案:Big Table 和 Dynamo,他们可以由此放松关系数据模型提供的保证,从而实现更高的可扩展性。Eric Brewer 的 “CAP Theorem”后来官方化了这些观察结果。它宣称,对于可扩展性系统,一致性、可用性和分区容错性都是权衡因素,因为根本不可能构建包含所有这些属性的系统。不久之后,

阅读全文

分布式Key-Value存储系统Cassandra入门

  categories:java资料  tags:,   author:

Cassandra 的数据存储结构

Cassandra 的数据模型是基于列族(Column Family)的四维或五维模型。它借鉴了 Amazon 的 Dynamo 和 Google’s BigTable 的数据结构和功能特点,采用 Memtable 和 SSTable 的方式进行存储。在 Cassandra 写入数据之前,需要先记录日志 (

阅读全文

PHP操作MongoDB

  categories:资料  tags:,   author:

来源:互联网

<?php
error_reporting(7);

$conn = new Mongo();

$db = $conn->PHPDataBase;
$collection = $db->PHPCollection;

/*—————————–
* 删除
*—————————–
$collection->remove(array(“name” => “xixi111″));
*/

/*——————————
* 插入
*——————————
for($i = 0;$i <= 50;$i++) {
$data = array(“name” => “xixi”.$i,”email” => “673048143_”.$i.”@qq.com”,”age” => $i*1+20);… 阅读全文

8种NoSQL数据库对比

  categories:mysql资料  tags:, ,   author:

来源:互联网

相关文章:

MongoDB基本操作指南
NoSQL数据库
MongoDB集群
MongoDB数据库
MongoDB备份与恢复
8种NoSQL数据库对比
配置mongodb分片群集(sharding cluster)
记一次MongoDB性能问题,附原理解析
mongodb之insert和save函数的区别
mongodb shell无法删除问题 与 secureCRT使用退格键出现^H解决办法
Mongodb源码分析之Mongos分析
PHP操作MongoDB

 

虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破。这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举。NoSQL: 是一项全新的数据库革命性运动,NoSQL的拥护者们提倡运用非关系型的数据存储。现今的计算机体系结构在数据存储方面要求具备庞大的水平扩展性,而 NoSQL致力于改变这一现状。目前Google的BigTable和Amazon的Dynamo使用的就是NoSQL型数据库。参见NoSQL词条。

image

但是NoSQL数据库之间的不同,远超过两SQL数据库之间的差别。这意味着软件架构师更应该在项目开始时就选择好一个适合的NoSQL数据库。针对这种情况,这里对Cassandra、Mongodb、CouchDB、Redis、Riak、Membase、Neo4j和HBase进行了比较:

1.CouchDB

  • 所用语言:Erlang
  • 特点:DB一致性,易于使用
  • 使用许可:Apache
  • 协议:HTTP/REST
  • 双向数据复制,
  • 持续进行或临时处理,
  • 处理时带冲突检查,
  • 因此,采用的是master-master复制(master-master复制:是一种数据库同步方法,允许数据在一组计算机之间共享数据,并且可以通过小组中任意成员在组内进行数据更新。)
  • MVCC-写操作不阻塞读操作
  • 可保存文件之前的版本
  • Crash-only(可靠的)设计
  • 需要不时地进行数据压缩
  • 视图:嵌入式映射/减少
  • 格式化视图:列表显示
  • 支持进行服务器端文档验证
  • 支持认证
阅读全文

Mongodb源码分析之Mongos分析

  categories:资料  tags:,   author:

MongoDB提供了auto-sharding 功能。因为其是auto-sharding,即mongodb通过mongos(一个自动分片模块,用于构建一个大规模的可扩展的数据库集群,这个集群可 以并入动态增加的机器)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。

MongoDB提供了auto-sharding 功能。因为其是auto-sharding,即mongodb通过mongos(一个自动分片模块,用于构建一个大规模的可扩展的数据库集群,这个集群可 以并入动态增加的机器)自动建立一个水平扩展的数据库集群系统,将数据库分表存储在sharding的各个节点上。

一个mongodb集群包括一些shards(包括一些mongod进程),mongos路由进程,一个或多个config服务器

下面是一些相关词汇说明:

Shards :每一个shard包括一个或多个服务和存储数据的mongod进程(mongod是MongoDB数据的核心进程)典型的每个shard开启多个服务来提高服务的可用性。这些服务/mongod进程在shard中组成一个复制集

Chunks:Chunk是一个来自特殊集合中的一个数据范围, (collection,minKey,maxKey)描叙一个chunk,它介于minKey和maxKey范围之间。例如chunks 的maxsize大小是100M,如果一个文件达到或超过这个范围时,会被切分到2个新的chunks中。当一个shard的数据过量时,chunks将 会被迁移到其他的shards上。同样,chunks也可以迁移到其他的shards上

Config Servers : Config服务器存储着集群的metadata信息,包括每个服务器,每个shard的基本信息和chunk信息Config服务器主要存储的是chunk信息。每一个config服务器都复制了完整的chunk信息。

今天要介绍的源码主要是Mongos的主入口函数的执行流程,首先我们打开Mongos的项目(可通过打开源码db\db_10.sln加载所有项目),如下图:

wps_clip_image-17594[3][1]

注:如果要调试mongos,需要设置一个mongod进程和一个Config Server,形如:

d:\mongodb>bin>mongod –dbpath d:\mongodb\db\ –port 27012

d:\mongodb>bin>mongod –configsvr –dbpath d:\mongodb\db\ –port 27022

然后在vs2010中配置相应的boost路径信息及启动参数信息,如下图:

wps_clip_image-27122[4][1]

wps_clip_image-5075[4][1]

wps_clip_image-18371[4][1]

下面开始正文。首先打开mongos项目中的server.cpp文件,找到下面方法:

int main(int argc, char* argv[]) {… 阅读全文



快乐成长 每天进步一点点