我这边的查询场景是数据量大,范围查询,对一致性没有太高的要求,无事务。mongodb是个文档型的nosql数据库。几乎可以作所有关系数据库单表的所有操作,就是不能够join,所以一般都会设计成宽表,或使用它的embeded document。选择mongodb, 主要是因为简单,查询接口非常丰富,它支持排序,分页,范围查询,唯一索引和B+树索引。。
1. 下载
http://www.mongodb.org/downloads
注: 32位操作系统,mongodb只能写到2G。
wget http://fastdl.mongodb.org/linux/mongodb-linux-i686-1.6.5.tgz
2. 安装
mongo安装非常简单,只要解压一下就行了。
tar zxvf mongodb-linux-i686-1.6.5.tgz
3. 启动
bin目录下的mongod是服务端程序, 启动唯一需要的就是指定data目录
我见了一个数据目录如下,~/mongodb/data, 这个目录随便指定
mongod --dbpath ~mongodb/data
Tue Feb 22 08:13:47 MongoDB starting : pid=3023 port=27017 dbpath=/home/guru/mongodb/data 32-bit
** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
** see http://blog.mongodb.org/post/137788967/32-bit-limitations
Tue Feb 22 08:13:47 db version v1.6.5, pdfile version 4.5
Tue Feb 22 08:13:47 git version: 0eb017e9b2828155a67c5612183337b89e12e291
Tue Feb 22 08:13:47 sys info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_37
Tue Feb 22 08:13:47 [initandlisten] waiting for connections on port 27017
Tue Feb 22 08:13:47 [websvr] web admin interface listening on port 28017
4. 玩玩看
直接运行bin目录下的mongo, 默认会连接到测试库
guru@idea:~/mongodb/mongodb-linux-i686-1.6.5/bin$ mongo
MongoDB shell version: 1.6.5
connecting to: test
> user={"name":"张三","birth":"20080309"}
{ "name" : "张三", "birth" : "20080309" }
> db.users.insert(user)
> db.users.find()
{ "_id" : ObjectId("4d6301583722875bae8e309c"), "name" : "张三", "birth" : "20080309" }
> db.users.findOne()
{
"_id" : ObjectId("4d6301583722875bae8e309c"),
"name" : "张三",
"birth" : "20080309"
}
>
这里的_id=4d6301583722875bae8e309c, 如果没有指定id,mongodb会生成,具体生成规则如下
id一共由12个字节组成,24位16进制数,按字节:
0-3字节: 表示timestamp,精确到秒
4-6字节: 是host的哈希,代表机器名
7-8字节: 代表进程PID
9-11字节:自增值
按照这种算法,前面的9个字节保证同一秒内,不同机器,不同进程是不冲突的,后三个字节保证同一个进程是不冲突的。
我们验证一下, 按照刚才的,又插入了一条记录。
{ "_id" : ObjectId("4d6301583722875bae8e309c"), "name" : "张三", "birth" : "20080309" }
{ "_id" : ObjectId("4d6303623722875bae8e309d"), "name" : "丽丝", "birth" : "20080309" }
按照这种算法,可以知道mongodb在磁盘上是大致按照时间升序,顺序存放的。
附件是mongodb的一本电子书,。
OReilly.MongoDB.The.Definitive.Guide.Sep.2010.pdf
分享到:
相关推荐
1、MongoDB一对一关系型 3 2、MongoDB一对多关系型 4 3、MongoDB多对多关系型 4 三、创建数据库(mongodb_test) 4 四、MongoDB得增删改查(crud) 4 1、MongoDB查询 4 2、order和投影查询 5 3、MongoDB增加 6 4、...
资源名称:MongoDB应用设计模式内容简介:无论是在构建社交媒体网站,还是在开发一个仅在内部使用的企业应用程序,《MongoDB应用设计模式》展示了MongoDB需要解决的商业问题之间的连接。你将学到如何把MongoDB设计...
介绍php7.0以上使用mongdb的基本方法,并提供mongodb随机获取一条记录的测试实例。
教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...
本课程是一套关于MongoDB应用开发的实战性教程,名为《深入浅出MongoDB应用实战开发(基础、开发指南、系统管理、集群及系统架构)》,教程侧重于讲解MongoDB的常用特性及高级特性,从实际开发的角度出发对MongoDB...
代码不是很完美,基本实现图书管理系统的增删改查等基本功能,目前尚有一处缺陷未解决——在查询后只能在控制台看到结果,没有反馈到界面上,有兴趣的朋友可以加以修改,相信这是一个不错的Java+MongoDb的课程设计...
mongodb-log 是一个基于MongoDB的Python日志系统。 MongoDB 的 Capped Collection是一个天生的日志系统,MongoDB自己的oplog就是用它来存储的,Capped Collection的特点是可以指定Collection的大小,当记录总大小...
01MongoDB第一讲上A
MongoDB4.2分片及副本集群搭建 MongoDB集群 MongoDB分片 MongoDB副本 MongoDB副本集群
sudo vim /etc/yum.repos.d/mongodb-org-4.2.repo 写入: [mongodb-org-4.2] name=MongoDB Repository baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/4.2/x86_64/ gpgcheck=1 enabled=1 gpg...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...
MongoDB 学习PPT
MongoDB图形化管理工具 MongoDB Compass
php-mongodb的扩展包,MongoDB [2] 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。它支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据...
【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT必备】MongoDB面试题【BAT...
mongodb,下载mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,mongodb,
MongoDB是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。 MongoDB是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系...