用了很多年的关系型数据库,想换一种思路,学习一下最近比较火的mongo数据库。

一、下载、安装mongo

  下载地址:http://www.mongodb.org/downloads(官网)

  官网的mongo有很多版本,建议选择64bit版本,能够支持更大的数据存储,而32bit仅仅支持最大2G的文件。具体原因请参看下文“mongo数据库内存管理方式”

  安装的过程也非常简单,基本流程为:解压下载的文件-->建立数据库目录和日志目录-->安装相应服务-->连接mongo。

  本文以windows平台下的安装为例:

  1)解压mongoxxxxx.zip到指定目录 如e:\

  2)建立数据库目录和日志目录 >e:\mongodb\db   >e:\mongodb\logs

  3)启动mongodb,安装服务:>cd e:\mongodb\bin

    >mongod --dbpath=e:\mongodb\db --logpath=e:\mongodb\logs\mongodb.log --install

    >net start mongodb

  4)连接mongod:>mongo

二、mongo数据库内存管理方式

  mongod服务启动时,载入相应的文件到物理内存,把内存管理交给系统,如果数据量庞大,那么启动会很慢。mongod机制使用MMAP映射文件到虚拟内存,并映射虚拟内存到实际的物理内存,以linux系统为例,32bit 内存上限为 4G-1G(内核占用)-0.5堆栈 =2.5,即32位系统的内存可寻址上限是2.5G。所以32位系统mongod的单数据库文件上限为2G,64bit 内存上限为12T,所以mongodb的单数据库上限也相应的增加。 

  mongo物理文件被分成相应的块,每个块之间使用双向链表来连接。内存按照16M,32M,64M…2G递增方式进行分配,会预留相应的内存空间,这是mongod会大量消耗内存的原因,即使一条记录,也会占用16M的内存空间。新加入的数据,看是否有适合的空闲内存块可以分配,如果没有则增加新的数据块,Mongodb需要定期来进行数据压缩,以释放掉相应的空闲内存,移动相应数据,把内存碎片整理成完整的内存块,以便于进行重新分配。

三、客户端工具

  本文用的是MongoVUE,下载地址:http://blog.mongovue.com/

  由于MongoVUE并不是完全免费版本,需要破解,在网上找了一个很好的教程,请参考:http://yhv5.com/mongovue_480.html

  在启动mongod服务后打开MongoVUE,会看到如下的界面

    

  点击绿色按钮“creat new connection”,mongo默认的端口是27017,点击save,然后connect,这样就新建了一个名为local的数据库。

  

hi,mongo!(1)的更多相关文章

  1. 谈一谈NOSQL的应用,Redis/Mongo

    1.心路历程 上年11月份来公司了,和另外一个同事一起,做了公司一个移动项目的微信公众号,然后为了推广微信公众号,策划那边需要我们做一些活动,包括抽奖,投票.最开始是没有用过redis的,公司因为考虑 ...

  2. MongoDB分组汇总操作,及Spring data mongo的实现

    转载请在页首注明作者与出处 一:分组汇总 1.1:SQL样例 分组汇总的应用场景非常多,比如查询每个班级的总分是多少,如果用关系形数据库,那么sql是这样子的 ),class from score g ...

  3. mongo DB for C#

    (1)Download the MongoDB C#驱动. http://www.nuget.org/packages/mongocsharpdriver/. (2) Add Reference to ...

  4. Mongo基础使用,以及在Express项目中使用Mongoose

    MongoDB的基本使用 MongoDB特点: 使用BSON存储数据 支持相对丰富的查询操作(相对其他nosql数据库) 支持索引 副本集(支持多个实例/多个服务器运行同个数据库) 分片(数据库水平扩 ...

  5. 【mongo】mongoVUE使用

    1.查询存在字段"test"的项 {"test":{$exists:true}} 2.在表中插入字段 {$set:{"}} 3.正则匹配 {" ...

  6. mongo遍历表

    $mongo = new MongoClient("mongodb://192.168.8.189:27017"); $collectObj = $mongo->select ...

  7. python & mongo问题记录

    背景介绍 使用python操作mongo进行的一些操作记录,为了方便日后可以快速的解决类似问题. 准备工作 为了尽可能简单的说明,我将插入几条简单的数据. from pymongo import Mo ...

  8. Lind.DDD.Repositories.Mongo层介绍

    回到目录 之前已经发生了 大叔之前讲过被仓储化了的Mongodb,而在大叔开发了Lind.DDD之后,决定把这个东西再搬到本框架的仓储层来,这也是大势所趋的,毕竟mongodb是最像关系数据库的NoS ...

  9. MongoDB基础入门003--使用官方驱动操作mongo,C#

    本篇先简单介绍一下,使用官方驱动来操作MongoDB.至于MongoDB原生的增删改查语句,且等以后再慢慢学习. 一.操作MongoDB的驱动主要有两个 1.官方驱动:https://github.c ...

  10. mongo DB的一般操作

    最近接触了一些mongoDB .将一些指令操作记录下来,便于查询和使用 登录 [root@logs ~]# mongo -u loguser -p log123456 --authentication ...

随机推荐

  1. 开发工具 之 PowerDesigner

    PowerDesigner是一款功能非常强大的建模工具软件,足以与Rose比肩,同样是当今最著名的建模软件之一.Rose是专攻UML对象模型的建模工具,之后才向数据库建模发展,而PowerDesign ...

  2. entity framework 连接 oracle 发布后出现的问题(Unable to find the requested .Net Framework Data Provider)

    用entity framework 搭建的一个windows 程序,在vs中用oracle 的ODT 工具连接oracle数据库,昨天发布后出现下面一个错误, System.ArgumentExcep ...

  3. iphone 手机屏幕和UIView和UIWindowde 的主要的区别

    在iPhone5之前的iphone1,2,3,3s,4,4s都是320x480 iPhone5和5s的屏幕是320x568 iphone6的屏幕是375x667 iPhone6Plus的414x736 ...

  4. Umbraco文档类型定义多个template

    利用这个可以同时写PC端和手机端的网站, 在Template中,建立手机端的模板: 在文档类型中,同时选择两个模板,在浏览的时候在URL后加上Template的名称 + .aspx 就可以浏览到你写的 ...

  5. [Wordpress]wp_dropdown_categories() 添加自定义的attribute(属性)

    通过Wordpress wp_dropdown_categories()可以获取到Wordpress中的分类列表,假如需要添加一些Html5属性,如required,在看了这个方法的文档说明,没有参数 ...

  6. PHP与MySQL中编码的设置

    php代码 header("Content-type:text/html;Charset=utf8"); myql_query("set names utf8" ...

  7. 使用T4为数据库自动生成实体类

    T4 (Text Template Transformation Toolkit) 是一个基于模板的代码生成器.使用T4你可以通过写一些ASP.NET-like模板,来生成C#, T-SQL, XML ...

  8. 【转载】在 Visual Studio 2012 中创建 ASP.Net Web Service

    在 Visual Studio 2012 中创建 ASP.Net Web Service,步骤非常简单.如下: 第一步:创建一个“ASP.Net Empty Web Application”项目 创建 ...

  9. kettle菜鸟学习笔记1----相关准备知识

    最近导师让给师弟师妹做个关于kettle的培训,瞬间囧了,kettle我也只是简单学过,连皮毛都算不上,而且,上次使用kettle已然是去年的事了…… 没办法,只好重新学习下,好在之前写了几个文档,也 ...

  10. 原生js学习笔记2

    知识点: 1:关于this指向问题,如果有函数a(),直接a()那么this指向window,new a()指向函数本身. 2:关于null和undefined.两者如果用“==”则认为两者是相等的, ...