摘要:trie树的定义这里就不多说了,直接贴代码(代码大部分是参考别人的,修改了个别错误,并添加了一个最大匹配的方法)。package com.fox.analyzer;import java.util.ArrayList;import java.util.List;public class Trie { private Vertex root = new Vertex(); protected class Vertex { protected int words; // 单词个数 protected int prefixes; // 前缀个数 protected Vertex[] edges...
阅读全文
04 2012 档案
摘要:首先介绍一下在replica set里分为三种节点类型:1primary 负责client的读写。2secondary作为热备节点,应用Primary的oplog读取的操作日志,和primary保持一致,不提供读写操作! secondary有两种类型: 1)normal secondary 随时和Primay保持同步, 2)delayed secondary 延时指定时间和primary保持同步,防止误操作.3arbiter.它不负责任何读写,只作为一个仲裁者,负责primary down的时候剩余节点的选举操作. 在Replica Set 如果主库down了,要进行故障切换,集群的选举...
阅读全文
摘要:mongoDB replSet(复制集群)MongoDB支持多个机器中通过异步复制达到故障转移和实现冗余。多机器中同一时刻只有一台是用于写操作。正式由于这个情况,为mongoDB提供了数据一致性的保障。担当primary角色的机器能把读操作分发给slave。部署Replica Sets当读的压力越来越大时,可能会考虑添加slave节点机,分摊读压力。通常我们有两种方式添加节点。一)通过oplog添加节点oplog是主从操作日志。mongoDB的 Replice Set架构是通过一个日志来存储写操作,就是oplog。oplog.rs是一个固定长度的capped collection,他存储在lo
阅读全文
摘要:本文内容源自Kyle Banker的MongoDBIn Action一书。主要描述了MongoDB索引相关的一些基础知识和使用技巧。索引类型虽然MongoDB的索引在存储结构上都是一样的,但是根据不同的应用层需求,还是分成了唯一索引(unique)、稀疏索引(sparse)、多值索引(multikey)等几种类型。唯一索引唯一索引在创建时加上unique:true 的选项即可,创建命令如下:db.users.ensureIndex({username: 1}, {unique: true})上面的唯一索引创建后,如果insert一条username已经存在的数据,则会报如下的错误:E11000
阅读全文
摘要:在数据库中存储树形结构的数据,这是一个非常普遍的需求,典型的比如论坛系统的版块关系。在传统的关系型数据库中,就已经产生了各种解决方案。此文以存储树形结构数据为需求,分别描述了利用关系型数据库和文档型数据库作为存储的几种设计模式。A.关系型数据库设计模式1idnameparent_id1ANULL2B13C14D2上图表示了传统的设计方法之一,就是将树形结构的每一个结点作为关系型数据库中的一行进行存储,每一个结点保存一个其父结点的指针。优点:结构简单易懂,插入修改操作都很简单缺点:如果要获取某个结点的所有子结点,将是一件很恶心的事B.关系型数据库设计模式2idnameparent_idleftr
阅读全文
摘要:Wordnik是一项在线字典及百科全书服务,在大约一年前,它们逐渐开始从MySQL迁移至文档型数据库MongoDB,后者是著名的NoSQL产品之一。最近Wordnik的技术团队通过官方博客分享了这12个月来使用MongoDB经验及现状。据Wordnik技术团队描述,它们起初决定使用MongoDB,是看中了它的弱一致性(最终一致)及文档结构的存储方式。在传统的关系型数据库中,一个COUNT类型的操作会锁定数据集,这样可以保证得到“当前”情况下的精确值。这在某些情况下,例如通过ATM查看账户信息的时候很重要,但对于Wordnik来说,数据是不断更新和增长的,这种“精确”的保证几乎没有任何意义,反而
阅读全文
摘要:mongoDB客户端推荐使用mongoVUE说明:VUE有14天试用期,可以通过修改注册表“重复使用”[HKEY_CURRENT_USER\Software\Classes\CLSID\{B1159E65-821C3-21C5-CE21-34A484D54444}\4FF78130]
阅读全文
摘要:mongoDB的基本操作强烈推荐参考官方用户手册:http://www.mongodb.org/display/DOCS1)插入(insert)插入的value是json对象,以下示例循环添加了10个用户信息,字段可以是字符串、数值、对象、数组等。通过VUE查看:2)查询(find)2.1——查询全部内容:db.user.find({})我们可以称{}中的内容为选择器,这里选择器为空,可以省略,指获取collection中所有内容。2.2——字段查询db.user.find({name:'fox1'})2.3——排序(sorting)db.user.find({}).sort(
阅读全文
摘要:一.mongoDB中的连接池刚上手MongoDB,在做应用时,受以前使用关系型数据库的影响,会考虑数据库连接池的问题!关系型数据库中,我们做连接池无非就是事先建立好N个连接(connection),并构建成一个连接池(connection pool),提供去连接和归还连接等操作。而在MongoDB中,我们先来看看怎么进行操作,以insert为例:Mongo m = new Mongo( "localhost" , 27017 );DB db = m.getDB( "mydb" );//get collectionDBCollection coll = d
阅读全文