bin下的mongod就是MongoDB的服务端进程,mongo就是其客户端,其它的命令用于MongoDB的其它用途如MongoDB文件导出等

启动方式:

1.直接启动,指定各项参数:

/usr/local/mongodb/bin/mongod --dbpath=/data/db/ --logpath=/data/logs/mongodb.log --logappend  --port=27017 --fork --auth

--fork:以创建子进程的方式启动

--auth  连接需认证 (默认连接无认证限制)

2.通过配置文件启动:

/usr/local/mongodb/bin/mongod -f  /PushMongodbdata/psmongo.conf

配置文件的内容:

dbpath=/PushMongodbdata/db
logpath=/PushMongodbdata/logs/mongodb.log
port=28888
fork=true
auth=true 

连接:

admin库下的user表为超级用户(添加用户db.addUser("user","pwd")),以超级用户登录就可以直接访问所有的库

如果启动时 连接开启了认证则 如下:

./mongo 127.0.0.1:28888(直接进入的是test库,访问其他库需要该库的用户名和密码认证,db.auth("user","pwd"),返回1则成功)

./mongo 127.0.0.1:28888/admin -u usename -p (以超级用户登录,就可以直接访问所有的库无需认证)

在远程客户端,以指定的库的账户登录指定的库 ,只能有对该库的操作权限,同时没有清空所有数据的权限

客户端工具:

1.MongoVUE windows GUI客户端工具

2.Pymongo  MongoDB Python 接口开发包

文档http://api.mongodb.org/python/2.5.1/index.html

import pymongo 
conn=pymongo.Connection("10.20.14.196",28888)
db=conn['PushData']
db.authenticate('chao','123456')#####
coll=db['LogData']

mongdb自增id的实现:官方地址http://docs.mongodb.org/manual/tutorial/create-an-auto-incrementing-field/#auto-increment-optimistic-loop

import pymongo
c = pymongo.Connection('localhost', 27017)
db = c.test
pid_collection = db.people_id

先插入一个最初的数据:(用于以后update)
pid_collection.save({"url_id":0})

之后就可以利用这个collection来返回新id了

new_id = pid_collection.find_and_modify(update={"$inc":{"url_id":1}}, new=True).get("url_id")

可以把它包装成一个方法来调。

这里需要提的是, find_and_modify 是一个atmoic operation,在这里用它就是为了保证线程安全。可以参考这里

建立索引:

性能分析函数 explain()

db.person.find({'name':'xxxx'}).explain() 列出操作的各项性能指标信息

建立索引函数

db.person.ensureIndex({'name':1}) ”1“:表示按照name进行升序,”-1“:表示按照name进行降序。

db.person.ensureIndex({"name":1},{"unique":true}) 建立唯一索引,重复的键值不能插入

db.person.ensureIndex({"name":1,'age':1}) 组合索引

db.person.getindexes()来查看下person集合中到底生成了那些索引。

db.person.find({'name':'xxx','age':'12'}).hint({'name':1,'age':1})强制以某种索引方案来查询

删除索引:db.person.dropIndexes('索引名')

停止MongoDB

让MongoDB稳妥的停下来:

最基本的方法是向MongoDB服务器发送一个SIGINT或者SIGTERM信号。

如果服务器是作为前台进程运行在终端的,就直接按Ctrl+C,否则就用kill这种命令发出信号,kill -2 pid (SIGINT) 或者 kill  pid(SIGTERM).

当mongod收到SIGINT或者SIGTERM时,会稳妥退出。也就是说会等到当前运行的操作或者文件预分配完成(需要一些时间),关闭所有打开的连接,将缓存的数据刷新到磁盘,最后停止。

千万不要向运行中的恶MongoDB发送 SIGKILL (kill -9 ).这样会导致数据库直接关闭,上面讲到的步骤都将被忽略,这会使数据文件损坏

另一种稳妥的方式就是使用shutdown命令,{'shutdown':1}.这是管理命令,要在admin数据库下使用。shell提供了辅助函数,来简化这一过程

>use admin

>db.shutdownServer()

repairDatabase 修复损坏的数据是不得已时的最后一招,尽可能稳妥的停掉服务器。利用复制功能实现故障恢复,经常做备份,这些才是最有效的管理数据的手段

复制:

运行 ./mongod --dbpath=/abs/master --port=10000 --master  启动主服务器,建立主节点

运行./mongod  --dbpath=/abs/slave  --port=10001   --slave --source   localhost:10000 启动从服务器,建立从节点

所有从节点都从主节点复制内容

总的来说,MongoDB的复制至少需要两个服务器或者节点,其中一个是主节点,负责处理客户端请求,其他都是从节点,负责映射主节点的数据,主节点记录在其上执行的所有操作。从节点定期轮询主节点获得这些操作,然后对自己的数据副本执行这些操作,由于和主节点执行了相同的操作,从节点就能保持与主节点的数据同步。

主节点的操作记录称为oplog.oplog存储在一个特殊的数据库中,叫做local。 oplog就在其中的oplog.$main集合里面。oplog中的每个文档都代表主节点上执行的一个操作

分片:

何时分片:机器的磁盘不够用了;单个mongod已经不能满足写数据的性能需要了;想将大量数据放在内存中提高性能

BSON

MongoDB的文档是个抽象概念。其具体的呈现方式取决于使用的驱动和编程语言。因为MongoDB中的通信大量依赖于文档,所以需要一种所有驱动、工具和进程都能共享的文档表示方式。这种表达叫做Binary JSON (BSON)

BSON是轻量级的二进制格式,能将MongDB的所有文档表示为字节字符串。数据库能理解BSON,存在磁盘上的文档也是这种格式

最新文章

  1. web1
  2. win7下eclipse中文字显示过小
  3. MAC下安装与配置MySQL [转]
  4. 【转】安装Intel HAXM为Android 模拟器加速,30秒内启动完成
  5. ENVI/IDL与ArcGIS集成开发的三种途径
  6. DTcms 导航选中样式以及简化方法
  7. ashx+html+ajax
  8. JavaScript 实现触点式弹出菜单插件
  9. 关于zMPLS的设计解析
  10. 基本的Logstash 例子
  11. javascript中的for……in循环
  12. Java 第九周总结
  13. 实验四 Android程序设计 实验报告
  14. webserver开发
  15. 将txt文本转换为excel格式
  16. 【转】关于免费SSL证书的那些事儿
  17. Looper loop
  18. 使用VS2015开发asp程序让IIS express 允许的父路径的方法
  19. SQL Server2008 R2 安装失败后的解决办法
  20. JS中自定义replace可替换特殊符号$等,但无法忽略大小写的函数

热门文章

  1. ios控件自定义指引
  2. linq查询去重
  3. LOL英雄联盟代打外挂程序-java实现
  4. Django之站内搜索-Solr,Haystack
  5. Oracle更新时间字段
  6. SQL Server中排名函数row_number,rank,dense_rank,ntile详解
  7. Using ADO.NET Data Service
  8. [转]Unity3D Editor 编辑器简易教程
  9. 【BZOJ2427】[HAOI2010]软件安装 Tarjan+树形背包
  10. 【BZOJ1776】[Usaco2010 Hol]cowpol 奶牛政坛 树的直径