Below you will find pages that utilize the taxonomy term “Nosql”
August 3, 2018
redis list数据类型 不同编码ziplist 和 linkedlist的区别
"\u003cp\u003e\u003ca href=\"https://my.oschina.net/justfairytale/blog/393830\"\u003ehttps://my.oschina.net/justfairytale/blog/393830\u003c/a\u003e\u003c/p\u003e"
August 1, 2018
Redis单线程架构
"\u003ch3 id=\"1-单线程模型\"\u003e1 单线程模型\u003c/h3\u003e\n\u003cp\u003eRedis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端的命令不会立刻执行,所有的命令都会进入一个队列中,然后逐个被执行。并且多个客户端发送的命令的执行顺序是不确定的。但是可以确定的是不会有两条命令被同时执行,不会产生并发问题,这就是Redis的单线程基本模型。\u003c/p\u003e\n\u003ch3 id=\"2-单线程模型每秒万级别处理能力的原因\"\u003e2 单线程模型每秒万级别处理能力的原因\u003c/h3\u003e\n\u003cp\u003e(1)纯内存访问。数据存放在内存中,内存的响应时间大约是100纳秒,这是Redis每秒万亿级别访问的重要基础。\u003c/p\u003e\n\u003cp\u003e(2)非阻塞I/O,Redis采用epoll做为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接,读写,关闭都转换为了时间,不在I/O上浪费过多的时间。\u003c/p\u003e\n\u003cp\u003e(3)单线程避免了线程切换和竞态产生的消耗。\u003c/p\u003e\n\u003cp\u003e(4)Redis采用单线程模型,每条命令执行如果占用大量时间,会造成其他线程阻塞,对于Redis这种高性能服务是致命的,所以Redis是面向高速执行的数据库。\u003c/p\u003e\n\u003cp\u003eredis为什么要设计成单线程: …\u003c/p\u003e"
August 1, 2018
Redis中的锁
"\u003cp\u003e单Redis实例锁: \u003ca href=\"http://www.redis.cn/commands/setnx.html\"\u003ehttp://www.redis.cn/commands/setnx.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e分布式锁: \u003ca href=\"http://redis.cn/topics/distlock.html\"\u003ehttp://redis.cn/topics/distlock.html\u003c/a\u003e(提供各种开发语言提供的库)\u003c/p\u003e"
April 13, 2017
MongoDB中字段的添加与删除
"\u003cp\u003emongoDB添加和删除表中一个字段\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e使用update命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eupdate命令格式:\u003c/p\u003e\n\u003cp\u003edb.collection.update(criteria,objNew,upsert,multi)\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e参数说明:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ecriteria:查询条件\u003c/p\u003e\n\u003cp\u003eobjNew:update对象和一些更新操作符\u003c/p\u003e\n\u003cp\u003eupsert:如果不存在update的记录,是否插入objNew这个新的文档,true为插入,默认为false,不插入。\u003c/p\u003e\n\u003cp\u003emulti:默认是false,只更新找到的第一条记录。如果为true,把按条件查询出来的记录全部更新。\u003c/p\u003e\n\u003cp\u003e//例如要把User表中address字段删除\ndb.User.update({},{$unset:{‘address’:”}},false, true)\u003c/p\u003e\n\u003cp\u003e参考: \u003ca href=\"https://docs.mongodb.com/manual/reference/method/db.collection.update/#update-parameter\"\u003ehttps://docs.mongodb.com/manual/reference/method/db.collection.update/#update-parameter\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e==================\u003c/p\u003e\n\u003cp\u003e添加一列 $set\u003c/p\u003e\n\u003cp\u003e//字符类型\ndb.User.update({},{$set:{‘app_id’:’1′}}, …\u003c/p\u003e"
May 25, 2012
从PHP客户端看MongoDB通信协议
"\u003cp\u003eMongoDB的 PHP 客户端有一个 MongoCursor 类,它是用于获取一次查询结果集的句柄(或者叫游标),这个简单的取数据操作,内部实现其实不是那么简单。本文就通过对 MongoCursor 类一些操作进行分析,向大家揭开 MongoDB 客户端服务器通信的一些内部细节。\u003c/p\u003e\n\u003ch3 id=\"getnext与网络请求\"\u003egetNext与网络请求\u003c/h3\u003e\n\u003cp\u003e通常来说,每一次find操作都会返回一个MongoCursor对象,在这个对象上调用getNext方法,就能够获得一条结果数据。循环调用getNext方法就能获取多条数据。下面我们就来看看其内部取数据的具体逻辑。\u003c/p\u003e\n\u003cp\u003e首先我们用最简单的方法来生成一个MongoCursor对象:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e$m = new Mongo();\n$collection = $m-\u0026gt;demoDb-\u0026gt;demoCollection;\n$cursor = $collection-\u0026gt;find();\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e当我们调用 find 方法的时候,会生成一个 MongoCursor 对象,而这时候只是生成一个内存中的对象而已,并不会把我们的 find 查询发送到服务端,因为在生成 MongoCursor 对象后,我们还可能对 …\u003c/p\u003e"
May 12, 2012
MongoDB 客户端 MongoVue
"\u003cp\u003e今天在同事那里看到了一个很不错的MongoDB的客户端工具MongoVue,地址是\u003ca href=\"http://www.mongovue.com/\" title=\"http://www.mongovue.com/\"\u003ehttp://www.mongovue.com/\u003c/a\u003e。做的不错,1.0版本的开始收费了,费用也不贵才35$。真正需要的同学可以掏点钱买个吧,也算是支持这个工具,如果只是学习研究用的话我这里还有一个0.9.7版本,虽然比起1.0版来说有些bug,平常使用也够了,需要的同学可以单独联系我。\u003c/p\u003e\n\u003cp\u003e1.0版之后超过15天后功能受限。可以通过删除以下注册表项来解除限制:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e[HKEY_CURRENT_USER\\Software\\Classes\\CLSID{B1159E65-821C3-21C5-CE21-34A484D54444}\\4FF78130]\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e把这个项下的值全删掉就可以了。\u003c/p\u003e\n\u003cp\u003e下面上图给大家感受下强大的MongoVue,可以提高你使用MongoDB的幸福指数好几十点,上图是王道:\u003c/p\u003e\n\u003cp\u003e1、配置连接\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202156379291.png\"\u003e\u003cimg src=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202156425175.png\" alt=\"image\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e2、试下新建一个名为AccessLog的Collection :\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202156459404.png\"\u003e\u003cimg src=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/20110520215648644.png\" alt=\"image\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202156514807.png\"\u003e\u003cimg src=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202156569851.png\" alt=\"image\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e3、插入一个Document\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202157028144.png\"\u003e\u003cimg src=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202157041435.png\" alt=\"image\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e4、查看我们插入的数据,数据可以通过多种方式展示(树形、表格、文本)\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202157089643.png\"\u003e\u003cimg src=\"http://images.cnblogs.com/cnblogs_com/shanyou/201105/201105202157113806.png\" alt=\"image\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e上面我们都是通过图形界面的操作的吧,下面有一个窗口 …\u003c/p\u003e"
May 10, 2012
Mongodb 与mysql 语法比较
"\u003cp\u003emongodb与mysql命令对比\u003c/p\u003e\n\u003cp\u003e传统的关系数据库一般由数据库(database)、表(table)、记录(record)三个层次概念组成,MongoDB是由**数据库(database)、集合(collection)、文档对象(document)**三个层次组成。MongoDB对于关系型数据库里的表,但是集合中没有列、行和关系概念,这体现了模式自由的特点。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMySQL\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMongoDB\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e说明\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emysqld\u003c/p\u003e\n\u003cp\u003emongod\u003c/p\u003e\n\u003cp\u003e服务器守护进程\u003c/p\u003e\n\u003cp\u003emysql\u003c/p\u003e\n\u003cp\u003emongo\u003c/p\u003e\n\u003cp\u003e客户端工具\u003c/p\u003e\n\u003cp\u003emysqldump\u003c/p\u003e\n\u003cp\u003emongodump\u003c/p\u003e\n\u003cp\u003e逻辑备份工具\u003c/p\u003e\n\u003cp\u003emysql\u003c/p\u003e\n\u003cp\u003emongorestore\u003c/p\u003e\n\u003cp\u003e逻辑恢复工具\u003c/p\u003e\n\u003cp\u003edb.repairDatabase()\u003c/p\u003e\n\u003cp\u003e修复数据库\u003c/p\u003e\n\u003cp\u003emysqldump\u003c/p\u003e\n\u003cp\u003emongoexport\u003c/p\u003e\n\u003cp\u003e数据导出工具\u003c/p\u003e\n\u003cp\u003esource\u003c/p\u003e\n\u003cp\u003emongoimport\u003c/p\u003e\n\u003cp\u003e数据导入工具\u003c/p\u003e\n\u003cp\u003egrant * privileges on \u003cem\u003e.\u003c/em\u003e to …\u003c/p\u003e\n\u003cp\u003eDb.addUser()\u003c/p\u003e\n\u003cp\u003eDb.auth()\u003c/p\u003e\n\u003cp\u003e新建用户并权限\u003c/p\u003e\n\u003cp\u003eshow databases\u003c/p\u003e\n\u003cp\u003eshow dbs\u003c/p\u003e\n\u003cp\u003e显示库列表\u003c/p\u003e\n\u003cp\u003eShow tables\u003c/p\u003e\n\u003cp\u003eShow collections …\u003c/p\u003e"
May 10, 2012
MongoDB数据库优化:Mongo Database Profiler
"\u003cp\u003e在MySQL中,慢查询日志是经常作为我们优化数据库的依据,那在MongoDB中是否有类似的功能呢?答案是肯定的,那就是Mongo Database Profiler.不仅有,而且还有一些比MySQL的Slow Query Log更详细的信息。它就是我们这篇文章的主题。\u003c/p\u003e\n\u003cp\u003e** 开启 Profiling 功能**\u003c/p\u003e\n\u003cp\u003e有两种方式可以控制 Profiling 的开关和级别,第一种是直接在启动参数里直接进行设置。\u003c/p\u003e\n\u003cp\u003e启动MongoDB时加上–profile=级别 即可。\u003c/p\u003e\n\u003cp\u003e也可以在客户端调用db.setProfilingLevel(级别) 命令来实时配置。可以通过db.getProfilingLevel()命令来获取当前的Profile级别。\n \u0026gt; db.setProfilingLevel(2);\u003c/p\u003e\n\u003cp\u003e{“was” : 0 , “ok” : 1}\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e db.getProfilingLevel()\n 上面斜体的级别可以取0,1,2 三个值,他们表示的意义如下:\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e0 – 不开启\u003c/p\u003e\n\u003cp\u003e1 – 记录慢命令 (默认为\u0026gt;100ms)\u003c/p\u003e\n\u003cp\u003e2 – 记录所有命令\u003c/p\u003e\n\u003cp\u003eProfile 记录在级别1时会记录慢命令,那么这 …\u003c/p\u003e"
May 7, 2012
Mongodb亿级数据量的性能测试
"\u003cp\u003e进行了一下Mongodb亿级数据量的性能测试,分别测试如下几个项目:\u003c/p\u003e\n\u003cp\u003e(所有插入都是单线程进行,所有读取都是多线程进行)\u003c/p\u003e\n\u003cp\u003e1) 普通插入性能 (插入的数据每条大约在1KB左右)\u003c/p\u003e\n\u003cp\u003e2) 批量插入性能 (使用的是官方C#客户端的InsertBatch),这个测的是批量插入性能能有多少提高\u003c/p\u003e\n\u003cp\u003e3) 安全插入功能 (确保插入成功,使用的是SafeMode.True开关),这个测的是安全插入性能会差多少\u003c/p\u003e\n\u003cp\u003e4) 查询一个索引后的数字列,返回10条记录(也就是10KB)的性能,这个测的是索引查询的性能\u003c/p\u003e\n\u003cp\u003e5) 查询两个索引后的数字列,返回10条记录(每条记录只返回20字节左右的2个小字段)的性能,这个测的是返回小数据量以及多一个查询条件对性能的影响\u003c/p\u003e\n\u003cp\u003e6) 查询一个索引后的数字列,按照另一个索引的日期字段排序(索引建立的时候是倒序,排序也是倒序),并且Skip100条记录后返回10条记录的性能,这个测的是Skip和Order对性能的影响\u003c/p\u003e\n\u003cp\u003e7) 查询100条记录(也就是100KB)的性能(没有排序,没有条件),这个测的是大数据量的查询结果对性能的影响\u003c/p\u003e\n\u003cp\u003e8) 统计随着测试的进行,总磁盘占用,索引磁盘占用以及数 …\u003c/p\u003e"
May 7, 2012
mongodb索引讲解与性能调优
"\u003cp\u003emongodb索引规则基本上与传统的关系库一样,大部分优化MySQL/Oracle/SQLite索引的技巧也适用于mongodb。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、 为什么用索引:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e当查询中用到某些条件时,可以对该键建立索引,以提高查询速度。\u003c/p\u003e\n\u003cp\u003e如果数据量很多且查询多于更新时,可以用索引提高查询的速度。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e二、 索引管理:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ea) 查询索引:\u003c/p\u003e\n\u003col\u003e\n\u003cli\u003e查询已有索引的明细:\u003c/li\u003e\n\u003c/ol\u003e\n\u003cp\u003e查询索引很简单,比如说需要查询mailaccess数据库中的Mail collection上的索引时:\u003c/p\u003e\n\u003cp\u003emongo 进入mongo\u003c/p\u003e\n\u003cp\u003eMongoDB shell version: 1.8.1\u003c/p\u003e\n\u003cp\u003econnecting to: test\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003euse mailaccess 进入mailaccess database\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003eswitched to db mailaccess\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003edb.Mail.getIndexes() 查询索引明细\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e[\u003c/p\u003e\n\u003cp\u003e{\u003c/p\u003e\n\u003cp\u003e“name” : “_id_”,\u003c/p\u003e\n\u003cp\u003e“ns” : “mailaccess.Mail”,\u003c/p\u003e\n\u003cp\u003e“key” : { …\u003c/p\u003e"
May 7, 2012
MongoDB 索引数据类型优化,节省60%内存
"\u003cp\u003e最近trunk.ly的工程师通过mongostat发现了大量的page fault,然后通过检查发现,他们的索引已经超出内存限制了(没有\u003ca href=\"http://blog.boxedice.com/2010/12/13/mongodb-monitoring-keep-in-it-ram/\"\u003ekeep all index in RAM\u003c/a\u003e)。于是他们决定开始减小索引大小,通过测试得出了如下的数据,不同的数据类型的索引大小有2到3倍的差距。\u003c/p\u003e\n\u003cp\u003e虽然能够想像得到,但是直观的数据图可能让我们更深刻的认识到。他们的测试再一次告诉我们:给索引定一个好的数据结构是多么重要。\u003c/p\u003e\n\u003cp\u003e这是测试结果图,分别是用int、MongoDB的ObjectID、base64和md5的字符串做索引产生的索引大小:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2012/05/mongodb_indexes_optimize.jpeg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2012/05/mongodb_indexes_optimize.jpeg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e测试过程也非常简单,首先用下面脚本将各种不同数据结构的数据写入到不同的collection里:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e#!/usr/bin/env python\n\nimport pymongo\nimport bson\nfrom pymongo import Connection\n\ndb = connection.test_database\n\nprint(\u0026#39;ObjectID\u0026#39;)\nfor i in range(1, 1000000): …\u003c/code\u003e\u003c/pre\u003e"
May 7, 2012
mongodb的监控与性能优化
"\u003cp\u003e\u003cstrong\u003e一.mongodb的监控\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003emongostat是mongdb自带的状态检测工具,在命令行下使用。它会间隔固定时间获取mongodb的当前运行状态,并输出。如果你发现数据库突然变慢或者有其他问题的话,你第一手的操作就考虑采用mongostat来查看mongo的状态。\u003c/p\u003e\n\u003cp\u003e\u003cimg src=\"http://photo.l99.com/bigger/30/1332836385675_ii0c6z.png\" alt=\"立方图片分享\"\u003e\u003c/p\u003e\n\u003cp\u003e它的输出有以下几列:\u003c/p\u003e\n\u003cul\u003e\n\u003cli\u003einserts/s 每秒插入次数\u003c/li\u003e\n\u003cli\u003equery/s 每秒查询次数\u003c/li\u003e\n\u003cli\u003eupdate/s 每秒更新次数\u003c/li\u003e\n\u003cli\u003edelete/s 每秒删除次数\u003c/li\u003e\n\u003cli\u003egetmore/s 每秒执行getmore次数\u003c/li\u003e\n\u003cli\u003ecommand/s 每秒的命令数,比以上插入、查找、更新、删除的综合还多,还统计了别的命令\u003c/li\u003e\n\u003cli\u003eflushs/s 每秒执行fsync将数据写入硬盘的次数。\u003c/li\u003e\n\u003cli\u003emapped/s 所有的被mmap的数据量,单位是MB,\u003c/li\u003e\n\u003cli\u003evsize 虚拟内存使用量,单位MB\u003c/li\u003e\n\u003cli\u003eres 物理内存使用量,单位MB\u003c/li\u003e\n\u003cli\u003efaults/s 每秒访问失败数(只有Linux有),数据被交换出物理内存,放到swap。不要超过100,否则就是机器内存太小,造成频繁swap写入。此时要升级内存或者扩展\u003c/li\u003e\n\u003cli\u003elocked % 被锁的时间百分比,尽量控制在50%以下吧\u003c/li\u003e\n\u003cli\u003eidx miss …\u003c/li\u003e\u003c/ul\u003e"
May 7, 2012
Mongdb监控 (MMS)
"\u003cp\u003eMMS (MongoDB Monitoring Service) is a hosted application created by \u003ca href=\"http://10gen.com/\"\u003e10gen\u003c/a\u003e for monitoring MongoDB deployments. MMS Collects statistics on all key server and hardware indicators and presents this data through an intuitive web interface\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e先简单说下原理:\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1、在mms服务器上添加mongodb服务器的ip,端口,user,password.\n2、在mongodb服务器所在的内网空闲机器上安装定制的agent脚本。\n3、agent脚本从mms获取你的服务器Ip及端口等信息,然后连接到mongodb服务器获取必要的监控数据。\n4、agent脚本将监控信息上传到mms服务器,我们登陆后就可以查看到相应的信息了。\u003c/p\u003e\n\u003cp\u003e主页地址如下\u003c/p\u003e\n\u003cp\u003e1. \u003ca href=\"https://mms.10gen.com/help/install.html\"\u003ehttps://mms.10gen.com/help/install.html\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在Hosts项上点击添加,此处hostname填写内 …\u003c/p\u003e"
May 3, 2012
三招解决MongoDB的磁盘IO问题
"\u003cp\u003e有点标题党的意思,不过下面三招确实比较实用,内容来自Conversocial公司的VP Colin Howe在London MongoDB用户组的一个分享。\n申请:下面几点并非放四海皆准的法则,具体是否能够使用,还需要根据自己的应用场景和数据特点来决定。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.使用组合式的大文档\u003c/strong\u003e\n我们知道MongoDB是一个文档数据库,其每一条记录都是一个JSON格式的文档。比如像下面的例子,每一天会生成一条这样的统计数据:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e{ metric: “content_count”, client: 5, value: 51, date: ISODate(“2012-04-01 13:00”) }\n{ metric: “content_count”, client: 5, value: 49, date: ISODate(“2012-04-02 13:00”) }\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e而如果采用组合式大文档的话,就可以这样将一个月的数据全部存到一条记录里:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e{ metric: “content_count”, client: 5, month: “2012-04”, 1: 51, 2: 49, … }\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e通过上面两种方式存储, …\u003c/p\u003e"
April 27, 2012
[教程]mongodb常用维护命令
"\u003cp\u003e\u003cstrong\u003e1.客户端常用命令\n** #mongo\u003c/strong\u003e\n** \u0026gt;help //列出帮助**\n** \u0026gt;db.help() //db级别的帮助**\n** \u0026gt;db.mycollection.help() //collection 级别的帮助\u003c/p\u003e\n\u003cp\u003e \u003cstrong\u003e常用命令:\u003c/strong\u003e\n \u0026gt;show dbs //show database names\n \u0026gt;show collections //show collections in current database\n \u0026gt;use //set current database\n \u0026gt;db.foo.find() //list objects in collection foo\n \u0026gt;db.foo.find({a:1}) //list objects in foo where a == 1\n \u0026gt;db.createCollection(name, { size : …, capped : …, max : … } ) //创建collection …\u003c/p\u003e"
April 27, 2012
MongoDB之导入和导出
"\u003cp\u003e在上文中,我们了解了 \u003ca href=\"http://database.51cto.com/art/201105/263921.htm\"\u003e教你如何利用MySQL学习MongoDB之授权和权限\u003c/a\u003e,本文中我们继续我们的学习之旅,学习两者的\u003cstrong\u003e导入和导出\u003c/strong\u003e。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、MySQL导入和导出\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e(1)、mysqlimport\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e此工具位于mysql/bin目录中,是MySQL的一个载入(或者说导入)数据的一个非常有效的工具。这是一个命令行工具。有两个参数以及大量的选项可供选择。这个工具把一个文本文件(text file)导入到你指定的数据库和表中。比方说我们要从文件student.txt中把数据导入到数据库class中的表 student中:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e\u003cstrong\u003emysqlimport\u003c/strong\u003e class.student student.txt\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e(2)、load data infile\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e这个命令与mysqlimport非常相似,但这个方法可以在MySQL命令行中使用。 如mysqlimport工具一样,这个命令也有一些可以选择的参数。比如您需要把自己的电脑上的数据导入到远程的数据库服务器中,您可以使用下面的命令:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eLoad data local infile “d:\\student.txt” into table student;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e上面的local …\u003c/p\u003e"
April 27, 2012
MongoDB非正常关闭后修复记录 mongod –repair
"\u003cp\u003emongod没有后台执行,在终端连接非正常断开后,再次执行mongod报错,如下所示:\u003c/p\u003e\n\u003cp\u003e[root@localhost mongodb]# ./bin/mongod\n./bin/mongod –help for help and startup options\nThu Nov 17 22:42:49\nThu Nov 17 22:42:49 warning: 32-bit servers don’t have journaling enabled by default. Please use –journal if you want durability.\nThu Nov 17 22:42:49\nThu Nov 17 22:42:49 [initandlisten] MongoDB starting : pid=3257 port=27017 dbpath=/data/db/ 32-bit host=localhost\nThu Nov 17 22:42:49 [initandlisten]\nThu Nov 17 22:42:49 [initandlisten] ** NOTE: when …\u003c/p\u003e"
April 9, 2012
MongoDB update数据语法
"\u003cp\u003e在前面的文章“ \u003ca href=\"http://hi.baidu.com/farmerluo/blog/item/2d15e95027aa86501138c27a.html\"\u003emongodb 查询的语法\u003c/a\u003e”里,我介绍了Mongodb的常用查询语法,Mongodb的update操作也有点复杂,我结合自己的使用经验,在这里介绍一下,给用mongodb的朋友看看,也方便以后自己用到的时候查阅:\u003c/p\u003e\n\u003cp\u003e注:在这篇文章及上篇文章内讲的语法介绍都是在mongodb shell环境内的,和真正运用语言编程(如java,php等)使用时,在使用方法上会有一些差别,但语法(如查询条件,$in,$inc等)是一样的。\u003c/p\u003e\n\u003cp\u003e本文是参考官方文档来介绍的,之所以有官方文档还要在这介绍,一方面是就当翻译,毕竟每次要用时去看英文文档比较累,第二是官方文档讲解比较简单,有时光看官方文档不好理解,我在实际操作的情况下可以做些补充。\u003c/p\u003e\n\u003cp\u003e好了,不多说了,下面正式开始:\u003c/p\u003e\n\u003cp\u003emongodb更新有两个命令:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1).update()命令\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003edb.collection.update( criteria, objNew, upsert, multi )\u003c/p\u003e\n\u003cp\u003ecriteria : update的查询条件,类似sql update查询内where后面的\nobjNew : update的对象和一些更新的操作符( …\u003c/p\u003e"
April 9, 2012
教你如何利用MySQL学习MongoDB之授权和权限
"\u003cp\u003e在上文中,我们了解了 \u003ca href=\"http://database.51cto.com/art/201105/263901.htm\"\u003e教你如何利用MySQL学习MongoDB之SQL语法\u003c/a\u003e,本文中我们继续我们的学习之旅,学习两者的授权和权限。\u003c/p\u003e\n\u003cp\u003e数据库的安全性是每一个DBA重点关注的部分,在数据库建立之后,数据的安全就显得尤为重要。\u003c/p\u003e\n\u003cp\u003e对于一个数据库管理员来说,安全性就意味着他必须保证那些具有特殊数据访问权限的用户能够登录到数据库服务器,并且能够访问数据以及对数据库对象实施各种权限范围内的操作;同时,DBA还要防止所有的非授权用户的非法操作。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1、MySQL授权和权限\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eMySQL中有两种级别的权限:管理和用户。所有权限都可分别使用 GRANT 和 REVOKE 语句授予和收回。可以授予用户create、select、update、delete、insert、execute、index 等权限,也可授予alter、drop和shutdown等系统权限。根用户root在默认情况下具有所有权限。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e2、MongoDB授权和权限\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e官方文档开启MongoDB 服务时不添加任何参数时,可以对数据库任意操作,而且可以远程访问数据库,所以推荐只是在开发是才这样不设置任何参数。如果启动的时候指定–auth参数,可以从阻止 …\u003c/p\u003e"
April 9, 2012
MongoDB的安全和授权机制
"\u003cp\u003e先把官方文档的地址贴上来,所有的内容都来自这里:\u003c/p\u003e\n\u003cp\u003e最近项目需要mongodb,简单试了下,一直都没找到安全验证的机制,在linux下很简单就用mongo命令登进去了,也没有指定用户名和密码,也没有host和port,直接就进去了。当时还感觉蛮方便的,但是事后想想,完全没有安全机制和验证的,还是有点不放心啊。后来仔细看了下文档,原来还是有的,只是不太好找而已。\u003c/p\u003e\n\u003cp\u003e官方文档的说法是:目前mongodb的安全机制还是比较简陋的,主要是表现在权限方面,一个用户只要被授权了,那么他就直接拥有了全部的读写权限。mongodb也可以创建只读用户,只有读取的权限。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e授权需求的开启\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e默认的mongodb进程启动之后是不需要授权验证的,需要手动打开,做法是在启动命令中添加–auth参数。\u003c/p\u003e\n\u003cp\u003edebian下的默认启动参数是:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e/usr/bin/mongod –dbpath /var/lib/mongodb –logpath /var/log/mongodb/mongodb.log –config /etc/mongodb.conf run\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e我们需要做的是编辑/etc/init.d/mongodb, …\u003c/p\u003e"
December 15, 2011
新浪微博开放平台Redis实践(PPT+视频)
"\u003cp\u003e新浪微博对Redis的大量应用已经是业界闻名,说是全球最大的使用者可能也没什么问题。下面PPT的作者是新浪微博负责Redis使用工程师唐福林同学。为大家解答了微博为何要使用Redis,又是如何使用Redis的。\u003c/p\u003e\n\u003cp\u003eppt文档pdf版见:\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e\u003ca href=\"http://www.slideshare.net/mysqlops/redis-9806617\" title=\"新浪微博开放平台Redis实战\"\u003e新浪微博开放平台Redis实战\u003c/a\u003e\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003eView more \u003ca href=\"http://www.slideshare.net/\"\u003epresentations\u003c/a\u003e from \u003ca href=\"http://www.slideshare.net/mysqlops\"\u003emysqlops\u003c/a\u003e\u003c/p\u003e"
November 29, 2011
memcached 集群单点故障解决方案
"\u003cp\u003emagent是一款开源的Memcached代理服务器软件,其项目网址为: \u003ca href=\"http://code.google.com/p/memagent/\"\u003ehttp://code.google.com/p/memagent/\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e一、安装步骤:\u003c/strong\u003e\n1、编译安装libevent:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewget http://monkey.org/~provos/libevent-1.4.9-stable.tar.gz\ntar zxvf libevent-1.4.9-stable.tar.gz\ncd libevent-1.4.9-stable/\n./configure --prefix=/usr\nmake \u0026amp;\u0026amp; make install\ncd ../\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e2、编译安装Memcached:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003ewget http://danga.com/memcached/dist/memcached-1.2.6.tar.gz\ntar zxvf memcached-1.2.6.tar.gz\ncd memcached-1.2.6/\n./configure --with-libevent=/usr\nmake \u0026amp;\u0026amp; make install\ncd ../\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e3、编译安装magent:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003emkdir …\u003c/code\u003e\u003c/pre\u003e"
October 19, 2011
遍历memcache中的key和value
"\u003cp\u003e\u003cstrong\u003e什么是\u003c/strong\u003e \u003cstrong\u003ememcache\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003ememcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。Memcache是danga.com的一个项目,最早是为 LiveJournal 服务的,最初为了加速 LiveJournal 访问速度而开发的,后来被很多大型的网站采用。目前全世界不少人使用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e为什么要遍历\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e目前,用到memcache的公司和网站也越来越多。Memcache的客户端操作一般都只提供了get,set等简单的操作,这些操作都是非常高效的。 虽然memcache是个key-value存储的系统,但是在某些时候,我们可能需要遍历memcache的数据。\u003c/p\u003e\n\u003cp\u003e通过使用memcache 内置方法Memcache::getExtendedStats,首先获得items信息。\u003c/p\u003e\n\u003cp\u003e最后得到的解决类似与\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003e\u0026lt;php\n$memcache = new Memcache();\n$all_items = …\u003c/code\u003e\u003c/pre\u003e"
September 27, 2011
五步优化你的MongoDB
"\u003cp\u003e下面PPT和视频的作者是MongoDB的开发工程师 \u003ca href=\"http://jaredrosoff.com/\"\u003eJared Rosoff\u003c/a\u003e,他从下面几个方面对MongoDB的几个优化点进行了讲解和描述。这些优化实际上也适用于很多其它的数据库。\u003c/p\u003e\n\u003ch3 id=\"1查询优化\"\u003e1.查询优化\u003c/h3\u003e\n\u003cp\u003e确认你的查询是否充分利用到了索引,用explain命令查看一下查询执行的情况,添加必要的索引,避免扫表操作。\u003c/p\u003e\n\u003ch3 id=\"2搞清你的热数据大小\"\u003e2.搞清你的热数据大小\u003c/h3\u003e\n\u003cp\u003e可能你的数据集非常大,但是这并不那么重要,重要的是你的热数据集有多大,你经常访问的数据有多大(包括经常访问的数据和所有索引数据)。使用MongoDB,你最好保证你的热数据在你机器的内存大小之下,保证内存能容纳所有热数据。\u003c/p\u003e\n\u003ch3 id=\"3选择正确的文件系统\"\u003e3.选择正确的文件系统\u003c/h3\u003e\n\u003cp\u003eMongoDB的数据文件是采用的预分配模式,并且在Replication里面,Master和Replica Sets的非Arbiter节点都是会预先创建足够的空文件用以存储操作日志。这些文件分配操作在一些文件系统上可能会非常慢,导致进程被Block。所 以我们应该选择那些空间分配快速的文件系统。这里的结论是尽量不要用ext3,用ext4或者xfs。\u003c/p\u003e\n\u003ch3 id=\"4选择合适的硬盘\"\u003e4.选择合适的硬盘\u003c/h3\u003e\n\u003cp\u003e这里的选择包括了对磁盘RAID的选择,也包括了磁盘 …\u003c/p\u003e"
September 27, 2011
Redis系统性介绍
"\u003cp\u003e虽然Redis已经很火了,相信还是有很多同学对Redis只是有所听闻或者了解并不全面,下面是一个比较系统的Redis介绍,对Redis的特性及各种数据类型及操作进行了介绍。是一个很不错的Redis入门教程。\u003c/p\u003e\n\u003ch3 id=\"1介绍\"\u003e1.介绍\u003c/h3\u003e\n\u003ch4 id=\"11-redis是什么\"\u003e1.1 Redis是什么\u003c/h4\u003e\n\u003cp\u003e\u003cstrong\u003eRE\u003c/strong\u003emote \u003cstrong\u003eDI\u003c/strong\u003ectionary \u003cstrong\u003eS\u003c/strong\u003eerver(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis提供了一些丰富的数据结构,包括 lists, sets, ordered sets 以及 hashes ,当然还有和Memcached一样的 strings结构.Redis当然还包括了对这些数据结构的丰富操作。\u003c/p\u003e\n\u003ch4 id=\"12-redis的优点\"\u003e1.2 Redis的优点\u003c/h4\u003e\n\u003cul\u003e\n\u003cli\u003e性能极高 – Redis能支持超过 100K+ 每秒的读写频率。\u003c/li\u003e\n\u003cli\u003e丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets 数据类型操作。\u003c/li\u003e\n\u003cli\u003e原子 – Redis的所有操作都是原子性的,同时Redis还支持对几个操作全并后的原子性执行。\u003c/li\u003e\n\u003cli\u003e丰富的特性 – Redis …\u003c/li\u003e\u003c/ul\u003e"
July 28, 2011
mongodb中实现自定义自增ID
"\u003cp\u003ePHP代码:\u003c/p\u003e\n\u003cpre tabindex=\"0\"\u003e\u003ccode\u003efunction get_autoincre_id($name, $db){\n\t$update = array(\u0026#39;$inc\u0026#39;=\u0026gt;array(\u0026#34;id\u0026#34;=\u0026gt;1));\n\t$query = array(\u0026#39;table_name\u0026#39; =\u0026gt; $name);\n\t$command = array(\n\t\t\u0026#39;findandmodify\u0026#39;=\u0026gt;\u0026#39;autoincre_system\u0026#39;, \u0026#39;update\u0026#39;=\u0026gt;$update,\n\t\t\u0026#39;query\u0026#39;=\u0026gt;$query, \u0026#39;new\u0026#39;=\u0026gt;true, \u0026#39;upsert\u0026#39;=\u0026gt;true\n\t);\n\t$id = $db-\u0026gt;command($command);\n\treturn $id[\u0026#39;value\u0026#39;][\u0026#39;id\u0026#39;];\n}\n\u003c/code\u003e\u003c/pre\u003e\u003cp\u003e其中上面的table_name可以用来区别多个表,这样可以灵活实现单独的几个表的自增ID值.\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e$conn = new Mongo(); …\u003c/p\u003e\u003c/blockquote\u003e"
July 27, 2011
MongoDB的ObjectId
"\u003cp\u003e前段时间有个朋友问我,分布式主键生成策略在我们这边是怎么实现的,当时我给的答案是sequence,当然这在不高并发的情况下是没有任何问题,实际上,我们的主键生成是可控的,但如果是在分布式高并发的情况下,那肯定是有问题的。\u003c/p\u003e\n\u003cp\u003e突然想起mongodb的objectid,记得以前看过文档,objectid是一种轻量型的,不同的机器都能用全局唯一的同种方法轻量的生成它,而不是采用传统的自增的主键策略,因为在多台服务器上同步自动增加主键既费力又费时,不得不佩服,mongodb从开始设计就被定义为分布式数据库。\u003c/p\u003e\n\u003cp\u003e下面深入一点来翻翻这个Objectid的底细,在mongodb集合中的每个document中都必须有一个”_id”建,这个键的值可以是任何类型的,在默认的情况下是个Objectid对象。\u003c/p\u003e\n\u003cp\u003e当我们让一个collection中插入一条不带_id的记录,系统会自动地生成一个_id的key\u003c/p\u003e\n\u003cblockquote\u003e\n\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e db.t_test.insert({“name”:”cyz”})\u003c/p\u003e\u003c/blockquote\u003e\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003e db.t_test.findOne({“name”:”cyz”})\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e{ “_id” : …\u003c/p\u003e\u003c/blockquote\u003e\u003c/blockquote\u003e"
June 30, 2011
redis入门教程
"\u003cp\u003ewindow平台下的redis dll文件下载: \u003ca href=\"https://github.com/char101/phpredis/downloads\"\u003ehttps://github.com/char101/phpredis/downloads\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003eRedis 根据 5 种不同的数据类型来操作数据对象:\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eString(字符串)\nSets(集合)\nzsets( 排序后的sets集合)\nList(列表)\nhash(哈稀)\u003c/p\u003e\u003c/blockquote\u003e\n\u003ch2 id=\"操作-string-类型的值\"\u003e操作 String 类型的值:\u003c/h2\u003e\n\u003cp\u003eCommand\u003c/p\u003e\n\u003cp\u003eParameters\u003c/p\u003e\n\u003cp\u003eDescription\u003c/p\u003e\n\u003cp\u003eSET\u003c/p\u003e\n\u003cp\u003ekey value\u003c/p\u003e\n\u003cp\u003eSet a key to a string value\u003c/p\u003e\n\u003cp\u003eGET\u003c/p\u003e\n\u003cp\u003ekey\u003c/p\u003e\n\u003cp\u003eReturn the string value of the key\u003c/p\u003e\n\u003cp\u003eGETSET\u003c/p\u003e\n\u003cp\u003ekey value\u003c/p\u003e\n\u003cp\u003eSet a key to a string returning the old value of the key\u003c/p\u003e\n\u003cp\u003eMGET\u003c/p\u003e\n\u003cp\u003ekey1 key2 … keyN\u003c/p\u003e\n\u003cp\u003eMulti-get, return the strings values of the keys\u003c/p\u003e\n\u003cp\u003eSETNX\u003c/p\u003e\n\u003cp\u003ekey\u003c/p\u003e\n\u003cp\u003evalue Set a key to a string value if the key does not …\u003c/p\u003e"
June 24, 2011
Mongodb相关学习资料
"\u003cp\u003e\u003ca href=\"/wp-content/uploads/2011/06/Mongo_share.ppt\"\u003eMongo资料分享.ppt\u003c/a\u003e \u003ca href=\"/wp-content/uploads/2011/06/01-MongoDB.ppt\"\u003e认识MongoDB.ppt\u003c/a\u003e \u003ca href=\"/wp-content/uploads/2011/06/MongoDB222.ppt\"\u003eMongoDB技术交流.ppt\u003c/a\u003e \u003ca href=\"/wp-content/uploads/2011/06/SQL-to-MongoDB.pdf\"\u003eSQL-to-MongoDB.pdf\u003c/a\u003e \u003ca href=\"http://blog.nosqlfan.com/html/1595.html\"\u003eQCon北京2011大会之:MongoDB开发应用实践\u003c/a\u003e \u003ca href=\"http://www.mysqlops.com/2011/06/13/nosql-cassandra-architecture.html\"\u003eNoSQL应用场景及Cassandra架构分析\u003c/a\u003e \u003ca href=\"/wp-content/uploads/2011/06/MongoDB-Tools.rar\"\u003eWindows下MongoDB管理工具(启用和服务)\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_insert.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_insert.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_objectid.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_objectid.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_field.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_field.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_query.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_query.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_in_count_or.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_in_count_or.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_index.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_index.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_update.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_update.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_aggregation.bmp\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_aggregation.bmp\" alt=\"\"\u003e\u003c/a\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_datetype.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/mongodb_datetype.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html\"\u003emongoDB 入门指南、示例\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eNoSQl存储模型\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/nosql-model.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/nosql-model.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003eMongo与Mysql语法对应关系图\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/SQL-to-MongoDB.png\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/SQL-to-MongoDB.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.haohtml.com/wp-content/uploads/2011/06/rdbms-mongodb.jpg\"\u003e\u003cimg src=\"http://blog.haohtml.com/wp-content/uploads/2011/06/rdbms-mongodb.jpg\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e数据库\u003c/p\u003e\n\u003cp\u003e表\u003c/p\u003e\n\u003cp\u003e行\u003c/p\u003e\n\u003cp\u003e写入\u003c/p\u003e\n\u003cp\u003e查询\u003c/p\u003e\n\u003cp\u003eMongoDb\u003c/p\u003e\n\u003cp\u003edatabase\u003c/p\u003e\n\u003cp\u003eCollection\u003c/p\u003e\n\u003cp\u003eDocument\u003c/p\u003e\n\u003cp\u003einsert into blog.users values(“user1”,”23))===========\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003euse blogswitched to db blog\u0026gt; u = { name:”user1″, age:23 }\u003c/p\u003e\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003edb.users.insert(u)\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e主要用到的查询函数式 find() 和 findOne(),前者返回一个迭代器 cursor,后者返回单个文档。\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003edb.users.find({name:”user1″}){\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e“_id” : …\u003c/p\u003e"
June 24, 2011
MongoDB Linux下的安装和启动
"\u003cp\u003e这里用的是64位版本.使用时请检查相应操作系统的版本是32位还是64位.\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1\u0026gt;设置mongoDB目录\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ecd /home/apps\nmkdir /home/apps\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e2\u0026gt;下载mongodb\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003ewget \u003ca href=\"http://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.3.tgz\"\u003ehttp://fastdl.mongodb.org/linux/mongodb-linux-x86_64-1.6.3.tgz\u003c/a\u003e\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e3\u0026gt;解压缩文件\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003etar xzf mongodb-linux-x86_64-1.6.3.tgz\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e4\u0026gt;启动服务\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e./mongodb-linux-x86_64-1.6.3/bin/mongod -dbpath=/data/mongodb/db -logpath=/data/mongodb/log\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e\u003cstrong\u003e5\u0026gt;将mongoDB服务加入随机启动\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003evi /etc/rc.local\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e使用vi编辑器打开配置文件,并在其中加入下面一行代码\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e/home/apps/mongodb/bin/mongod –dbpath /data/mongodb/db –port 27017 –logpath /data/mongodb/log –logappend …\u003c/p\u003e\u003c/blockquote\u003e"
March 29, 2011
Redis几个认识误区
"\u003cp\u003e此文的作者是新浪微博平台架构师杨卫华(\u003ca href=\"http://t.sina.com.cn/timyang\"\u003etimyang\u003c/a\u003e)大师,如果关注了新浪一些牛人微博的同学应该知道,timyang前段时间正在对Redis进行一些研究和测试,也分享出了不少成果。下面一篇文章相信是timyang这段时间对Redis研究的一个总结,澄清了一些认识上的误区,值得一读。\u003c/p\u003e\n\u003cp\u003e原文链接:\u003c/p\u003e\n\u003cp\u003e前几天微博发生了一起大的\u003ca href=\"http://tech.sina.com.cn/i/2010-12-01/15324930344.shtml\"\u003e系统故障\u003c/a\u003e,很多技术的朋友都比较关心,其中的原因不会超出James Hamilton在On Designing and Deploying Internet-Scale Service(1)概括的那几个范围,James第一条经验“Design for failure”是所有互联网架构成功的一个关键。互联网系统的工程理论其实非常简单,James paper中内容几乎称不上理论,而是多条实践经验分享,每个公司对这些经验的理解及执行力决定了架构成败。\u003c/p\u003e\n\u003cp\u003e题外话说完,最近又研究了\u003ca href=\"http://code.google.com/p/redis/\"\u003eRedis\u003c/a\u003e。去年曾做过一个\u003ca href=\"http://timyang.net/data/mcdb-tt-redis/\"\u003eMemcacheDB, Tokyo Tyrant, Redis performance test\u003c/a\u003e,到目前为止,这个benchmark结果依然有效。这1年我们经历了很多眼花缭乱的key …\u003c/p\u003e"
March 29, 2011
在浏览器里试用NoSQL产品
"\u003cp\u003e通常要使用某个存储设备,我们可能需要经历下载、安装、配置、启动等多个过程,然后才能开始试验具体的试用。而在我们很多 NoSQL 产品中,提供了一些非常方便的试用途径,可以让你不用安装一个自己的 Server 即可直接试用并学习其功能:\u003c/p\u003e\n\u003ch2 id=\"1try-redis-在浏览器里试用redis\"\u003e1.try redis 在浏览器里试用Redis\u003c/h2\u003e\n\u003cp\u003e地址:\u003c/p\u003e\n\u003cp\u003e直接点击上面地址即可进入下面的界面,按提示即可进行操作。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/Try-Redis.png\"\u003e\u003cimg src=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/Try-Redis.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"2try-mongo-在浏览器中试用mongodb\"\u003e2.try mongo 在浏览器中试用MongoDB\u003c/h2\u003e\n\u003cp\u003e进入\u003ca href=\"http://www.mongodb.org/\"\u003eMongoDB主页\u003c/a\u003e 点击主上方的 TRY IT OUT 导航,就会在本页展开如下图所示的伪shell 界面,和上面Redis的试用方式一样,你可以在这里试用MongoDB的基本操作。\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/MongoDB.png\"\u003e\u003cimg src=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/MongoDB.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"3在浏览器中试用-couchdb-mapreduce\"\u003e3.在浏览器中试用 CouchDB MapReduce\u003c/h2\u003e\n\u003cp\u003e下面是 CouchDB 的一个试用界面,点击页面上的 documents 标签即可切换到查看目前集合中的文档,点击下方的add,即可填入 json 对象添加一行数据。\u003c/p\u003e\n\u003cp\u003e地址:\u003c/p\u003e\n\u003cp\u003e\u003ca href=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/Interactive-CouchDB-Mu-Dynamics.png\"\u003e\u003cimg src=\"http://blog.nosqlfan.com/wp-content/uploads/2010/12/Interactive-CouchDB-Mu-Dynamics.png\" alt=\"\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cp\u003e在维护完上面的数据集合后,可以再点击documents 右侧的 map/reduce 标签切换到书写 map 和 reduce 函数的界面,在写好 map …\u003c/p\u003e"
November 30, 2010
NOSQL数据库–HBase简介
"\u003cp\u003e最近因为项目原因,研究了Cassandra,Hbase等几个\u003cstrong\u003eNoSQL\u003c/strong\u003e数据库,最终决定采用HBase。在这里,我就向大家分享一下自己对HBase的理解。\u003c/p\u003e\n\u003cp\u003e在说HBase之前,我想再唠叨几句。做互联网应用的哥们儿应该都清楚,互联网应用这东西,你没办法预测你的系统什么时候会被多少人访问,你面临的用户到 底有多少,说不定今天你的用户还少,明天系统用户就变多了,结果您的系统应付不过来了了,不干了,这岂不是咱哥几个的悲哀,说时髦点就叫“杯具啊”。\u003c/p\u003e\n\u003cp\u003e其实说白了,这些就是事先没有认清楚互联网应用什么才是最重要的。从系统架构的角度来说,互联网应用更加看重系统性能以及伸缩性,而传统企业级应用都是比较看重数据完整性和数据安全性。那么我们就来说说互联网应用伸缩性这事儿.对于伸缩性这事儿,哥们儿我也写了几篇博文,想看的兄弟可以参考我以前的博文,对于web server,app server的伸缩性,我在这里先不说了,因为这部分的伸缩性相对来说比较容易一点,我主要来回顾一些一个慢慢变大的互联网应用如何应对数据库这一层的伸缩。\u003c/p\u003e\n\u003cp\u003e首先刚开始,人不多,压力也不大,搞一台数据库服务器就搞定了,此时所有的东东都塞进一 …\u003c/p\u003e"
November 30, 2010
NOSQL中Cassandra与HBase的比较,及我们迁移系统的原因
"\u003cp\u003e原文地址:http://ria101.wordpress.com/2010/02/24/hbase-vs-cassandra-why-we-moved\u003c/p\u003e\n\u003cp\u003eHBase vs Cassandra: why we moved\u003c/p\u003e\n\u003cp\u003e下文中将讨论为何选择Cassandra作为我们的NOSQL方案。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e是否\u003cstrong\u003e\u003cstrong\u003eCassandra\u003c/strong\u003e\u003c/strong\u003e的血统预言了未来?\u003c/strong\u003e****\u003c/p\u003e\n\u003cp\u003e我发现在软件问题上,我们先去考虑上层问题而不是直接深入到细节,可以节约大量时间。在选择HBase还是Cassandra上我也遵循了这一信条。HBase还是Cassandra具有完全不同的血统和基因,这决定了他们在我们应用的可行性。\u003c/p\u003e\n\u003cp\u003eHBase及其支持系统源自Google的GFS和BigTable设计;而最初由Facebook开源出来的Cassandra采用了BigTable的数据模型,确实是用类似Amozon的Dynamo的存储系统(实际上Cassandra最初的开发工作都是由两个原Dynamo工程师开发的)。\u003c/p\u003e\n\u003cp\u003e在我看来,他们的根源决定了HBase更适用于数据仓库和大规模数据处理分析(比如对Web建索引),而Cassandra更适用于实时事务处理和处理交互性 …\u003c/p\u003e"
September 26, 2010
centos 5.4 下面安装mongodb服务端和php客户端扩展…
"\u003cp\u003e\u003cstrong\u003e一、安装服务端\u003c/strong\u003e\u003c/p\u003e\n\u003cp\u003e1.下载MongoDB\u003c/p\u003e\n\u003cp\u003e我下载的是1.6的版本\u003c/p\u003e\n\u003cp\u003e2.解压并把解压包bin目录中的文件全部移到/usr/local/bin目录下面\u003c/p\u003e\n\u003cp\u003e3.运行mongo的服务器端程序\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e/usr/local/bin/mongod –port \u0026lt;端口\u0026gt; –bind_ip \u0026lt;本机IP\u0026gt; –dbpath \u0026lt;数据库文件存放的位置\u0026gt;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e如果要求开机就启动就在\u003c/p\u003e\n\u003cp\u003e/usr/local/etc/rc.local中加入下面一行内容\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eusr/local/bin/mongod –port \u0026lt;端口\u0026gt; –bind_ip \u0026lt;本机IP\u0026gt; –dbpath \u0026lt;数据库文件存放的位置\u0026gt; \u0026gt;/dev/null \u0026amp;\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e4.测试安装是否成功\u003c/p\u003e\n\u003cp\u003e运行指令\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003e#/usr/local/bin/mongo –port 4312 –host 127.0.0.1\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003e显示\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eMongoDB shell version: 1.6.0\u003c/p\u003e\n\u003cp\u003econnecting to: 127.0.0.1:4312/test\u003c/p\u003e\u003c/blockquote\u003e\n\u003cblockquote\u003e\n\u003cp\u003ehelp\u003c/p\u003e\u003c/blockquote\u003e\n\u003cp\u003edb.help() …\u003c/p\u003e"
September 26, 2010
MongoDB 快速入门及windows平台下的mongodb安装教程
"\u003cp\u003e官方教程(for windows):\u003c/p\u003e\n\u003cp\u003e对 MongoDb 文档数据库感兴趣,要安装认识下。\u003c/p\u003e\n\u003cp\u003e到官方下载 win 版 \u003ca href=\"http://www.mongodb.org/display/DOCS/Downloads\"\u003ehttp://www.mongodb.org/display/DOCS/Downloads\u003c/a\u003e 目前最新稳定版是 1.2.4。解压到 f:/sofr/mongodb-win32-i386-1.2.4。\u003c/p\u003e\n\u003cp\u003e\u003cstrong\u003e1.启动 mongod 服务端\u003c/strong\u003e\u003c/p\u003e\n\u003cblockquote\u003e\n\u003cp\u003eF:\\soft\\mongodb\u0026gt;bin\\mongod.exe –dbpath=f:/mongodb\nMon Mar 08 11:13:17 Mongo DB : starting : pid = 0 port = 27017 dbpath = f:/mongodb master = 0 slave\n= 0 32-bit\u003c/p\u003e\n\u003cp\u003e** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data\n** see \u003ca href=\"http://blog.mongodb.org/post/137788967/32-bit-limitations\"\u003ehttp://blog.mongodb.org/post/137788967/32-bit-limitations\u003c/a\u003e for more\u003c/p\u003e\n\u003cp\u003eMon Mar …\u003c/p\u003e\u003c/blockquote\u003e"