虽然不是技术大牛,但是组长推荐看一下,而且我们正在做的项目,类似于资源中心,牵扯到各种怪异数据类型不同分库,所以至今都是采用这种方式:
①MainData表存所有值,变化最大的分库数据用json存储
②json所有的字段都对应着一个index表,用于索引
③一个metadata表存储所有可能的json字段
④如果字段是选择类型的值,则由一个新表储存

从这个框架看来,的确不错,但是问题就在于json和其他表的配合上,比如插入、修改、更新,会比较疯狂的……

既然数据的人类可识别反序列化方式是两种,也就是xml和json,而且mongodb的方式也类似于这个,我们就可以从此数据库下手了。


首先提到它的windows版本和安装相关的,既然说到数据库,就不得不提及mongo的多平台版本,真的和微软是反调,不过随之而来的问题也来了,那就是微软只关注自己的平台,所以自己做得东西肯定很好用。那mongo的操作界面是什么呢?很可惜官方提供的shell只有命令行,至今还没有正式推出一个十分好用的UI,所以我们只能借助于第三方。

先从官方网站下载mongo:http://mongodb.org/
我此时用的版本是3.0。找个地方安装,这个过程很快,当然数据库这东西还是推荐64位系统,可能在win7下需要更新一个补丁,后期版本可能会有变动。
之后你会发现安装主目录会多出很多命令行工具,这都是代码编写人员的最爱啊……虽然我对自己的打字并没有信心

最重要的就是mongod.exe服务和mongo.exe操作端,当然其他的比如监视工具导入导出工具也是作为数据库管理人员必备的,所以这个目录里的东西想用好,你得学习一些命令行的知识,比如cmd,比如系统环境变量,让你启动他们更快速。

那,如何启动呢?mongodb的主要的启动方式是通过读取config配置文件,借助mongod宿主启动一个服务端,具体的config配置可以去手册查看,很详细,也很复杂,下面我发出一个比较简单的配置,这是一个YAML配置,是mongo支持的第二种方式,也是新的方式:

systemLog:
destination: file
###日志存储位置
path: C:\data\mongodb_simple\log/mongod.log
logAppend: true
storage:
##journal配置
journal:
enabled: true
##数据文件存储位置
dbPath: C:\data\mongodb_simple\data
##是否一个库一个文件夹
directoryPerDB: true
##数据引擎
engine: wiredTiger
##WT引擎配置
wiredTiger:
engineConfig:
##WT最大使用cache(根据服务器实际情况调节)
cacheSizeGB: 4
##是否将索引也按数据库名单独存储
directoryForIndexes: true
##表压缩配置
collectionConfig:
blockCompressor: zlib
##索引配置
indexConfig:
prefixCompression: true
##端口配置
net:
port: 27017

接下来就是启动了,这里我用的绝对路径,看起来也比较直观,就是给程序一个参数-f:

"C:\Program Files\MongoDB\Server\3.0\bin\mongod.exe" -f "C:\data\mongodb_simple\conf\simple1.conf"

ok,如果数据库无法启动,你可以先启动cmd,在命令行里执行一次这段,看看返回的提示是什么,这是最简单直观的方式了。下面我们尝试一下如何用简单的shell提供程序操作数据库。简单的启动一下mongo.exe,连接至数据库:

C:\Users\zhouzhi>"C:\Program Files\MongoDB\Server\3.0\bin\mongo.exe"
2015-09-30T14:23:39.621+0800 I CONTROL Hotfix KB2731284 or later update is installed, no need to zero-out data files
MongoDB shell version: 3.0.1
connecting to: test
>

这里我直接执行了mongo.exe,没有附加任何参数,直连localhost:27017的默认位置,看到它在连接成功后也自动跳转到test库下,那我们看一下这个数据库存在几个库:

> show dbs
local 0.000GB
test 0.000GB
>

mongo.exe经常被称为shell,它以JavaScript为主,附加的一些自定义为辅,构成的一套命令脚本,show dbs 这个内置命令,就显示出了含有的库,当然如果你从未操作过的话是不会存在库的。
接下来我进入一个库,并插入一条记录:

connecting to: test
> show dbs
local 0.000GB
test 0.000GB
> use text
switched to db text
> db.MainData.insert({name:'3tai',age:25,url:'http://www.cnblogs.com/3Tai/',time:new Date()})
WriteResult({ "nInserted" : 1 })
>

我们在插入时,使用的是JavaScript的基本写法,这里要注意的是字符串、数字、时间,有这几个不同的类型,执行后提示有一处改动,下面我们查看一下刚才插入的文档,这里使用最简单直接的全部检索:

> db.MainData.find().pretty()
{
"_id" : ObjectId("560b83be22f39ad2d6004365"),
"name" : "3tai",
"age" : 25,
"url" : "http://www.cnblogs.com/3Tai/",
"time" : ISODate("2015-09-30T06:39:58.788Z")
}
>

使用find函数,可以获取结果,后面的pretty函数,可以格式化结果,是属于优化输出效果的。
至此,我们已经成功运行了mongodb,下一次我们和C#接轨

mongodb在我这个C#下手眼中-01初识的更多相关文章

  1. TensorFlow --- 01初识

    由于博客园对Markdown支持不够友好,阅读此文请前往云栖社区:TensorFlow --- 01初识

  2. day24 01 初识继承

    day24 01 初识继承 面向对象的三大特性:继承,多态,封装 一.继承的概念 继承:是一种创建新类的方式,新建的类可以继承一个或者多个父类,父类又可称基类或超类,新建的类称为派生类或者子类 cla ...

  3. day22 01 初识面向对象----简单的人狗大战小游戏

    day22 01 初识面向对象----简单的人狗大战小游戏 假设有一个简单的小游戏:人狗大战   怎样用代码去实现呢? 首先得有任何狗这两个角色,并且每个角色都有他们自己的一些属性,比如任务名字nam ...

  4. 081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字

    081 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 06 new关键字 本文知识点:new关键字 说明:因为时间紧张,本人写博客过程中只是 ...

  5. 080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则

    080 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 05 单一职责原则 本文知识点:单一职责原则 说明:因为时间紧张,本人写博客过程中只是 ...

  6. 079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象

    079 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 04 实例化对象 本文知识点:实例化对象 说明:因为时间紧张,本人写博客过程中只是对知 ...

  7. 078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类

    078 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 03 创建类 本文知识点:创建类 说明:因为时间紧张,本人写博客过程中只是对知识点的关 ...

  8. 077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象

    077 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 02 类和对象 本文知识点:类和对象 说明:因为时间紧张,本人写博客过程中只是对知识点 ...

  9. 076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学

    076 01 Android 零基础入门 02 Java面向对象 01 Java面向对象基础 01 初识面向对象 01 Java面向对象导学 本文知识点:Java面向对象导学 说明:因为时间紧张,本人 ...

随机推荐

  1. olivehc--百度开源的cdn cache

    github 地址:http://git.baidu.com/olivehc/olivehc 主要是为了方便管理,百度cdn承载了全百度40%的流量,但是cdn团队只有几个人(一次培训中提到只有4个) ...

  2. html禁用缓存

    <!-- 禁用缓存 --><meta http-equiv="pragma" content="no-cache"><META H ...

  3. MySQL监控内容

    一.liunx操作系统层面1.整体cpu负载的%user最好不长期超过20%(若%user太高,有极大可能性是索引使用不当)2.整体cpu负载的%iowat最好不长期超过10%(确认I/O子系统是否有 ...

  4. BZOJ1058:[ZJOI2007]报表统计(Splay,堆)

    Description 小Q的妈妈是一个出纳,经常需要做一些统计报表的工作.今天是妈妈的生日,小Q希望可以帮妈妈分担一些工 作,作为她的生日礼物之一.经过仔细观察,小Q发现统计一张报表实际上是维护一个 ...

  5. 2594. [WC2006]水管局长数据加强版【LCT+最小生成树】

    Description SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到一 ...

  6. 多GPU计算

    多GPU计算已经可以说,只要是个成熟的模型,都使用了这一点. 例如: gluoncv:https://github.com/dmlc/gluon-cv/blob/master/scripts/dete ...

  7. xss练习平台及writeup

    今天玩了一天的xss. 分享几个xss game https://xss.haozi.me/#/0x00 http://47.94.13.75/test/  writeup:http://www.cn ...

  8. JavaScript or jQuery 获取option value值 以及文本内容的方法

    1.html <div class="form-group"> <label>保险公司</label> <select class=&qu ...

  9. What to do next to activate this settings for already existing users

    Link: http://sharepoint.stackexchange.com/questions/89284/sharepoint-2013-mysite-increase-quota Cent ...

  10. Java导包后在测试类中执行正确但在Servlet中执行错误报ClassNotFoundException或者ClassDefNotFoundException解决办法

    将原来导的包remove from build path,并复制到Web-root下的lib目录中,再add to build path,