Archive for the 'nosql' Category
理解mongodb的ObjectId
星期二, 三月 8th, 2011
mongodb支持的数据类型中,ObjectId是其自有产物,本文对其做些简单的介绍。
存储在mongodb集合中的每个文档(document)都有一个默认的主键_id,这个主键名称是固定的,它可以是mongodb支持的任何数据类型,默认是ObjectId。在关系数据库schema设计中,主键大多是数值型的,比如常用的int和long,并且更通常的,主键的取值由数据库自增获得,这种主键数值的有序性有时也表明了某种逻辑。反观mongodb,它在设计之初就定位于分布式存储系统,所以它原生的不支持自增主键。而现实的世界是,大量应用在可预见的时空里并不需要分布式的mongodb,所以网上就出现了大量的实现mongodb自增主键方法的文章。恩,我之前也干过这种事情。
夜说mongodb
星期四, 二月 17th, 2011
赋闲以后很长没有更新博客了,说忙完全是借口,多半因为没有兴致所致。今天凌晨比赛多多,趁着比赛的前奏和间隙,遂浏览些技术文章。发现了 highscalability.com整理出了wordnik使用mongodb和scala的使用经 验:http://highscalability.com/blog/2011/2/15/wordnik-10-million-api- requests-a-day-on-mongodb-and-scala.html。这个wordnik也算是mongodb的先驱应用者之一,并贡献了一些管理工具给社区,去年的mongoSF大会也有它的参与:http://www.slideshare.net/fehguy /migrating-from-mysql-to-mongodb-at-wordnik。
mongodb MapReduce使用初步
星期六, 九月 18th, 2010
最近在做搜索的查询日志的统计分析,对每一条查询统计日志,我将其解析出来后以特定字段格式存在mongodb中,定时调度做些统计分析。其中有个需求是,统计某个时间段(每天、每周、每月)各个query的查询次数,展示上就是热门查询query了。考虑到处理的数据量不会很大,解决方法也可以简单来之。我现在使用的方法就是mongodb的MapReduce功能,其实这个需求也可以认为是个group操作,而mongodb的group功能就是基于MapReduce的,但group对结果集的大小是有限制的。本文就针对一个示例介绍一下mongodb MapReduce功能。
对mongodb进行java编程
星期六, 七月 3rd, 2010
本周实验性地使用上mongodb,应用场景很简单,所以现在对mongodb了解也不是很深入。本文主要介绍mongodb的java客户端编程,这方面的内容也很简单,这里只是做个总结。不得不说,像mongodb这种介于kv和sql之间的存储,对很多的互联网应用很合适。mongodb现在的应用案例已经很多,并且社区的活跃度很高(国内也有不少人对其有很深的研究,如果有时间和精力,或许我也会投入一些对mongodb的研究),很值得期待。
CAP理论及BASE思想等
星期天, 四月 18th, 2010
CAP理论是由 Brewer远在2000年的PODC会议上提出来的。CAP指的是:Consistency、Availability和 Partition Tolerance,下面简述此三者:
1、Consistency(一致性):一致性是说数据的原子性,这种原子性在经典的数据库中是通过事务来保证的,当事务完成时,无论其是成功还是回滚,数据都会处于一致的状态。在分布式环境中,一致性是说多点的数据是否一致。
2、 Availability(可用性):可用性是说服务能一直保证是可用的状态,当用户发出一个请求,服务能在有限时间内返回结果。而这种可用性是不关乎结果的正确与否,所以,如果服务一致返回错误的结果,其实也可以称为其是可用的。
3、Partition Tolerance(分区容忍性):Partition这个词不是常说的操作系统或数据库中的用语,而是指网络的分区。网络中的两个服务结点出现分区的原因很多,比如网络断了、对方结点因为程序bug或死机等原因不能访问。
豆瓣beansdb源码浅析
星期六, 二月 20th, 2010
Beansdb是豆瓣荣誉出品的分布式key-value存储系统,该系统是对经典的Dynamo的简化。项目地址:http://code.google.com/p/beansdb/,其上的
Inside BeansDB.pdf文档是对beansdb的很好的介绍。
Beansdb的CAP特点表现为:
1)分布式的,伸缩性比较好(P)
2)最终一致的(C),可能出现短时间内的数据不一致。
3)高可用的(A),部分节点出现故障不影响服务。
Beansdb在豆瓣内部有着广泛的使用,比如图片文件、小媒体文件、profile、properties等等。Beansdb不像GFS等分布式存储系统,一般不用于存储百兆以上单位的大数据。