最近在学习riak,搜索了一些文章, 尽管比较老了, 但是还是保存下来, 学习一下
原文地址:http://blog.nosqlfan.com/html/2705.html
本文来自Riak 所属的Basho公司的技术WiKi,文章从几个方面对Riak和MongoDB 进行了对比,这不是一篇PK文章,NoSQLFan翻译给大家,希望本文能让您对Riak和MongoDB有更多的了解。
来源地址:wiki.basho.com
机制与概念上的异同
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
…
阅读全文
作者:xbeta 版本:071020/071018
更新:此软件为国产软件。系列产品中,功能更强大的是
EDraw Max ,07年11月19日前中文版促销中,仅28元。多位网友已注册表示支持。
终于有了替代Visio的免费软件—— EDraw Mind Map。这款于2007年10月最新发布 V1.0的国产 免费软件,终结了流程图软件“好用则价高,免费则难用”的局面。它体积小巧、功能丰富、作为免费软件,完全可以满足普通用户绘制流程图的需求。
1 体积小巧
安装文件仅7.8MB。
安装后多大呢?表面看,共占用空间55MB。但实际上,很多是示例、素材和帮助,真正运行所需的exe和dll,不超过8MB。比起它丰富的功能来,算是很小巧了。
2 视频演示
百闻不如一见,请点击下图,查看flash演示(803×567,600KB)!需要说明的是,此演示也是用免费软件(Wink)制作的。另外,为了减小flash文件的体积,对颜色进行了压缩处理。实际上 EDraw 的界面非常漂亮。
3 功能丰富
相信你看完演示后,已经对它丰富的功能产生了深刻印象。我认为,如下5方面的特性,使它成为了出色的软件。
- 易用的标准绘图、格式化工具
- 预装了丰富的素材库
- 良好的集成性,可插入office及其他OLE对象
- 多标签、多页面的组织形式
- 输出为通用的网页、pdf、exe格式
4 产品背景
出品公司EDraw致力于高质量易使用的流程图类工具软件。其产品虽多,但实际都是同一类绘图工具,价格在几十美元左右。由此也可以推断,本款Mind Map采用的应该是同一底层技术,虽为V1.0,但技术已经过同类产品的考验。推出免费产品,真是个人用户的福音。…
阅读全文
不 少童鞋都喜欢安装诸如All in one seo 这样的优化插件,其实,这样的WordPress插件无非就是优化 Title,Meta的Description和Keywords。当然了,有不少免费主题在初期开发的时候,都没有优化Description和 Keywords。
Title 优化
Title 的优化很简单,只要使用下面的代码替换header.php文件中默认的Title调用代码就可以啦:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<title><?php
global $page, $paged;
$site_description = get_bloginfo( 'description', 'display' );
if ($site_description && (
…
阅读全文
源代码
性能测试报告
1.1 简介:
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:
支持严格的消息顺序
支持Topic与Queue两种模式
亿级消息堆积能力
比较友好的分布式特性
同时支持Push与Pull方式消费消息
高效的订阅者水平扩展能力
实时的消息订阅机制
基本概念
看完其实还是不懂,所以我们先了解几个基本概念:
Producer
消息生产者,负责产生消息,一般由业务系统负责产生消息
Consumer
消息消费者,负责消费消息,一般是后台系统负责异步消费
Push Consumer
Consumer的一种,应用通常向Consumer对象注册一个Listener接口,一旦收到消息,Consumer对象立刻回调Listener接口方法
Pull Consumer
Consumer的一种,应用通常主动调用Consumer的拉消息方法从Broker拉消息,主动权由应用控制
Producer Group
一类Producer的集合名称,这类Producer通常发送一类消息,且发送逻辑一致
Consumer Group
一类Consumer的集合名称,这类Consumer通常消费一类消息,且消费逻辑一致
Broker
消息中转角色,负责存储消息,转发消息,一般也称为Server。
长连接
在页面嵌入一个隐藏的Iframe,将这个隐藏Iframe的src属性设置为对一个长连接的请求或是采用xhr请求,服务器端就源源不断的向客户端输入数据。
RocketMQ是一款分布式、队列模型的消息中间件,具有以下特点:能够保证严格的消息顺序
一.RocketMQ网络部署特点
来源:http://www.changeself.net/archives/rocketmq%E5%85%A5%E9%97%A8%EF%BC%881%EF%BC%89.html
(1)NameServer是一个几乎无状态的节点,可集群部署,节点之间无任何信息同步
…
阅读全文
Slick对于Scala来说,有如LINQ至于C# ,或者类似于其它平台上的ORM系统,它使用应用使用数据库有如使用Scala内置的集合类型(比如列表,集合等)一样方便。当然如有需要你还是可以直接使用SQL语句来查询数据库。
下面为使用Slick的代码片段:
1 val limit = 10.0
2
3 // Your query could look like this:
4 ( for( c <- coffees; if c.price < limit ) yield c.name ).list
5
6 // Or using more plain SQL String … 阅读全文
来源:互联网
“Java并没有没落,人们很快就会发现这一点”
欢迎阅读我编写的 Java 8 介绍。本教程将带领你一步一步地认识这门语言的新特性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的 API 有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。
允许在接口中有默认方法实现
Java 8 允许我们使用default关键字,为接口声明添加非抽象的方法实现。这个特性又被称为扩展方法 。下面是我们的第一个例子:
package cn.iigrowing.java8;
public interface Formula {
double calculate(int a);
default double sqrt(int a) {
return Math.sqrt(a);
}
}
在接口Formula中,除了抽象方法caculate以外,还定义了一个默认方法sqrt。Formula的实现类只需要实现抽象方法caculate就可以了。默认方法sqrt可以直接使用。
package cn.iigrowing.java8;
public class TestFormula {
public … 阅读全文
1. Neo4j简介
Neo4j 是一个高性能的 NoSQL 图形数据库。Neo4j 使用图(graph)相关的概念来描述数据模型,把数据保存为图中的节点以及节点之间的关系。很多应用中数据之间的关系,可以很直接地使用图中节点和关系 的概念来建模。对于这样的应用,使用 Neo4j 来存储数据会非常的自然,要优于使用关系数据库。本文对 Neo4j 进行了深入的介绍,并结合具体的实例来进行详细的说明,可以让您对 Neo4j 有深入的了解,从而可以在应用开发中恰当地选择 Neo4j 来作为存储方式。Neo4j是一个高性能的,NOSQL图形数据库,它将结构化数据存储在网络上而不是表中。它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络(从数学角度叫做图)上而不是表中。Neo4j也可以被看作是一个高性能的图引擎,该引擎具有成熟数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。Neo4j因其嵌入式、高性能、轻量级等优势,越来越受到关注.
你可以把Neo看作是一个高性能的图引擎,该引擎具有成熟和健壮的数据库的所有特性。程序员工作在一个面向对象的、灵活的网络结构下而不是严格、静态的表中——但是他们可以享受到具备完全的事务特性、企业级的数据库的所有好处。 [1]
Neo是一个网络——面向网络的数据库——也就是说,它是一个嵌入式的、基于磁盘的、具备完全的事务特性的Java持久化引擎,但是它将结构化数据存储在网络上而不是表中。网络(从数学角度叫做图)是一个灵活的数据结构,可以应用更加敏捷和快速的开发模式。
典型应用如下:
2. Neo4j特点
1.对象关系的不匹配使得把面向对象的“圆的对象”挤到面向关系的“方的表”中是那么的困难和费劲,而这一切是可以避免的。
2.关系模型静态、刚性、不灵活的本质使得改变schemas以满足不断变化的业务需求是非常困难的。由于同样的原因,当开发小组想应用敏捷软件开发时,数据库经常拖后腿。
3.关系模型很不适合表达半结构化的数据——而业界的分析家和研究者都认为半结构化数据是信息管理中的下一个重头戏。
4.网络是一种非常高效的数据存储结构。人脑是一个巨大的网络,万维网也同样构造成网状,这些都不是巧合。关系模型可以表达面向网络的数据,但是在遍历网络并抽取信息的能力上关系模型是非常弱的。
虽然Neo是一个比较新的开源项目,但它已经在具有1亿多个节点、关系和属性的产品中得到了应用,并且能满足企业的健壮性和性能的需求:
完全支持JTA和JTS、2PC分布式ACID事务、可配置的隔离级别和大规模、可测试的事务恢复。这些不仅仅是口头上的承诺:Neo已经应用在高请求的24/7环境下超过3年了。它是成熟、健壮的,完全达到了部署的门槛。
Neo4j
数据存储一般是应用开发中不可或缺的组成部分。应用运行中产生的和所需要的数据被以特 定的格式持久化下来。应用开发中很常见的一项任务是在应用本身的领域对象模型与数据存储格式之间进行相互转换。如果数据存储格式与领域对象模型之间比较相 似,那么进行转换所需的映射关系更加自然,实现起来也更加容易。对于一个特定的应用来说,其领域对象模型由应用本身的特征来决定,一般采用最自然和最直观 的方式来进行建模。所以恰当的选择数据存储格式就显得很重要。目前最常见的数据存储格式是关系数据库。关系数据库通过实体 – 关系模型(E-R 模型)来进行建模,即以表和表之间的关系来建模。在实际开发中可以使用的关系数据库的实现非常多,包括开源的和商用的。关系数据库适合用来存储数据条目的 类型同构的表格型数据。如果领域对象模型中不同对象之间的关系比较复杂,则需要使用繁琐的对象关系映射技术(Object-Relationship Mapping,ORM)来进行转换。
对于很多应用来说,其领域对象模型并不适合于转换成关系数据库形式来存储。这也是非关系型数据库 (NoSQL)得以流行的原因。NoSQL … 阅读全文