Couchbase和CouchDB的区别

简单的说,couchbase=couchDB+Membase.

CouchDB是Apache的一个开源项目http://couchdb.apache.org/。其创始人Damien Katz后来创建了一家公司来提供商业支持。2011年,这家公司和另外一个开源key-value 数据库Membase 合作开发了CouchBase。Couchbase以Membase的代码为基础,用CouchDB的文档化代码部分替换了Membase的后端存储代码,并提供了索引和查询功能。所以Couchbase即保留了CouchDB的document database的特性,也充分利用了Membase的caching技术提高了读写的速度。同时Couchbase提供了Cluster内的多份copy复制,Data Balance等功能。

两者的功能对比如下图所示:

Table_Comparing_CouchDB_and_Couchbase_0

Posted in nosql | Leave a comment

Cassandra nodetool repair中的PR选项

Cassandra nodetool repair中的pr选项的官方解释是

Use -pr to repair only the first range returned by the partitioner.

那么什么时候用-pr选项,什么时候不用-pr呢?要解答这个问题首先要理解pr的意思

cassandra的数据可以有多份复制,比如说A,B,C,D四个节点,keyspace的replication factor为2

那么每份数据有两个copy,一个为primary,一个为replica

A节点上有range (D,A)的primary数据,同时也有range(C,D)的replica数据。如果在A节点上跑

nodetool repair -pr 那么会在A节点和B节点上同步range (D,A)的数据

如果是跑 nodetool repair 不加pr选项,那么会在
1. A节点和B节点上同步range (D,A)的数据
2. A节点和D节点上同步range (C,D)的数据

所以,如果你是为了处理delete的问题进行的日常的repair,可以使用-pr选项,在每个节点上跑一次。如果不加pr选项在每个节点上跑一次的话,会多做了重复的工作。再比如说增大replication factor,也可以使用-pr选项,在每个节点上跑。

如果是某个节点做recover操作的话,应该在该节点上不加pr选项,这样不单是同步了master的数据段,同样也同步了replica的数据段。如果是某个节点down掉,nodetool rebuild应该更快

另外,如果是多个data center, NetworkTopologyStrategy,可以加-local选项加快repair的速度
Use -local to only repair against nodes in the same data center.
最好使用CF级别的repair,将一个keyspace下的CF一个个的repair。

Posted in nosql | Leave a comment

11203的parse count(total)中不包含softer soft parse

Jonathan Lewis在07年的一篇文章Parse Calls中详细介绍了parse相关的一些statistics.

在10g以及11202的oracle版本中parse count(total)是包含softer soft parse的(文章中提到),但是在11203中实验证明parse count(total)中不再包含softer soft parse。

我们来看实验结果:

首先是10g版本(11202的实验结果和10g是一样的)

我们执行一条很简单的SQL:

select count(*) from temp;

然后通过另外一个session查看v$sesstat

select a.name,b.value from v$statname a,v$sesstat b where a.STATISTIC#=b.STATISTIC# and b.sid=&&sid. and
(a.name like ‘parse count%’ or a.name like ‘session cursor cache hits’);

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 16
parse count (hard) 0
parse count (failures) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 17 +1 — soft parse
parse count (hard) 0
parse count (failures) 0

— execute the count(*) SQL
NAME VALUE
—————————————————————- ———-
session cursor cache hits 3 +1 — softer soft parse
parse count (total) 18 +1
parse count (hard) 0
parse count (failures) 0

而在11203的版本中同样的测试,结果不一样

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 16
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 17 +1 soft parse
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 3 +1 softer soft parse
parse count (total) 17 (parse count total没有增加)
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

15 Comments

11203的parse count(total)中不包含softer soft parse

Jonathan Lewis在07年的一篇文章Parse Calls中详细介绍了parse相关的一些statistics.

在10g以及11202的oracle版本中parse count(total)是包含softer soft parse的(文章中提到),但是在11203中实验证明parse count(total)中不再包含softer soft parse。

我们来看实验结果:

首先是10g版本(11202的实验结果和10g是一样的)

我们执行一条很简单的SQL:

select count(*) from temp;

然后通过另外一个session查看v$sesstat

select a.name,b.value from v$statname a,v$sesstat b where a.STATISTIC#=b.STATISTIC# and b.sid=&&sid. and
(a.name like ‘parse count%’ or a.name like ‘session cursor cache hits’);

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 16
parse count (hard) 0
parse count (failures) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 17 +1 — soft parse
parse count (hard) 0
parse count (failures) 0

— execute the count(*) SQL
NAME VALUE
—————————————————————- ———-
session cursor cache hits 3 +1 — softer soft parse
parse count (total) 18 +1
parse count (hard) 0
parse count (failures) 0

而在11203的版本中同样的测试,结果不一样

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 16
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 2
parse count (total) 17 +1 soft parse
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

— execute the count(*) SQL

NAME VALUE
—————————————————————- ———-
session cursor cache hits 3 +1 softer soft parse
parse count (total) 17 (parse count total没有增加)
parse count (hard) 0
parse count (failures) 0
parse count (describe) 0

也有可能是一些patch导致的问题,大家有兴趣也可以在自己的11203版本上试验一下。

Posted in oracle 11g | 435 Comments

mongodb sharding keynote

在公司内部做的一个简单的关于mongodb sharding的介绍

Posted in nosql | 428 Comments