Spring-data-mongodb使用手册
文档信息(Document Info)
标题(Title)
Spring-data-mongodb使用手册
文档编号(No)
2012-09-19
作者(Author)
张瑜
最后发布时间(Last Update)
2012-09-20
概述(Summarize)
安装mongodb以及掌握spring-data-mongodb的使用方法,一些最佳实践
修订信息(Revise Info)
如何配置maven环境变量
修订日期(Date)
修订人(Reviser)
修订内容(Revises)
附件信息(Attachment Info)
目录
文档信息(Document Info)    2
修订信息(Revise Info)    3
附件信息(Attachment Info)    4
1.    概述    6
1.1.    目的    6
1.2.    范围    6
2.    准备    6
2.1.    环境配置    6
2.2.    Windows7安装mongodb    6
2.2.1.    配置环境变量    7
2.2.2.    启动配置mongodb    7
3.    Spring-data-mongodb    9
3.1.    背景    9
3.1.1.    高级API    9
3.1.2.    低级API    9
3.2.    MongoDbFactory    9
3.3.    MongoTemplate    9
3.4.    Operations    9
3.4.1.    常用Api的方法:    9
3.5.    项目中如何配置实用mongodb    10
3.6.    Callback    11
3.7.    Topic和Messaging/PubSub    11
3.8.    Cache    11
4.    NoSQL数据库设计    11
4.1.    案例1    11
5.    最佳实践    11
5.1.    项目案例1(Tinybee项目)    11
1. 概述
1.1. 目的
让团队成员比较快的上手mongodb的相关功能,思考如何结合自己的项目使用。
1.2. 范围
所有工程师。
2. 准备
mongodb 下载地址:/downloads
   
mongodb 官方文档下载地址:
/docs/mongodb-docs-2012-09-19.pdf
   
十天精通mongodb 下载地址(强烈建议看下,其中包含对mongodb的详细介绍):
www.kuaipan/file/id_45545890496119199.htm
       
如果你对mongodb希望有更多的了解(其中为mongodb资料专题):
sqlfan/html/3548.html
   
mongodb管理工具下载地址:
www.kuaipan/file/id_45545890496119201.htm
2.1. 环境配置
在这里提供针对windows7 系统的配置方案
2.2. Windows7安装mongodb
mongodb及其管理工具下载地址参见准备章节!
mongodb启动命令参数详见:
my.oschina/jacky0525/blog/33048
2.2.1. 配置环境变量
1、在系统环境变量中添加MONGODB_HOME如图所示:
2、在PATH中添加%MONGODB_HOME%\bin 如图所示:
在mongodb 目录中 新建 data 和 log 文件夹(为启动时做准备)
2.2.2. 启动配置mongodb
进入DOS命令窗口 输入一下命令:
mongod --dbpath D:\mongodb\data --logpath D:\mongodb\log --logappend --directoryperdb
--dbpath数据库安装目录
--logpath 数据库输出目录
--logappend 日志追加,默认为覆盖
-
-directoryperdb 表示每个db一个目录
执行命令之后  开启新的 DOS窗口  执行 mongo 输出
表示启动成功。
目前是以无权限限制的方式启动的,你可以做任何操作。现在我们需要切换到admin下,创建一个root用户。执行命令:
       
        show dbs  显示所有db
        use admin 使用admin db
        db 显示当前使用的db
        db.addUser(”root”,”root”); 添加用户,用户名为root 密码为 root
        db.auth(”root”,”root”); 为用户授权
这样我们就为admin db创建好用户,接下来以权限限制方式启动mongodb(记得关掉之前开启的服务),执行命令(在之前启动命令中添加参数-auth即可):
mongod --dbpath D:\mongodb\data --logpath D:\mongodb\log --logappend --auth –directoryperdb
-auth 安全模式下运行
接下来使用之前授权的用户名密码登录,打开新的DOS命令窗口输入如下命令:
mongo 数据库名称 –u 用户名 –p 密码
mongo admin –u root –p root
注意:为了启动方便可以把mongodb加入windows系统service
以管理员身份打开DOS命令窗口键入如下命令:
mongod --dbpath D:\mongodb\data --logpath D:\mongodb\log --logappend --auth --directoryperdb –install
这时候会在系统服务中增加 mongo db
第一次配置完成后,一定要重启才会有效果 重启mongo客户端,不输入-u-p可以直接进入,但是不具有任何权限。
3. Spring-data-mongodb
3.1. 背景
SQL or NoSQL?That’s a question!  SQL 与 NoSQL 的争论从来没有停息过,但其实任何一
种技术都不会是适合一切应用场景的,重要的是你要充分了解自己的需求,再充分了解你要选择的技术的优劣。
优势
快速!(当然,这和具体的应用方式有关,通常来说,它比一般的关系型数据库快5位左右。)
很高的可扩展性 – 轻轻松松就可实现PB级的存储(但是可能我们并不需要PB级的存储,10TB可能就够了)
他有一个很好的 replication 模式 (replica sets)
有很完善的Java API
他的存储格式是Json的,这对Java来说非常好处理,对javascirpt亦然。
运维起来非常方便,你不用专门为它安排一个管理员。
它有一个非常活跃的社区。
他的版本控制非常清楚。
MongoDB 背后的公司(10gen)已经准备好了明天在 MongoDB 上面的投入的资金。
劣势:
应用经验缺乏,我们都没有相关NoSQL 产品的使用经验。
项目相对来说还比较新。
和以往的存储相比,数据的关系性操作不再存在。
常用Jar:
    spring-data-mongodb
mongo-java-driver
spring-core
相关JAR在MAVEN包管理中搜索选择对应版本即可
3.1.1. 高级API
3.1.2. 低级API
3.2. MongoDbFactory
就像所有的数据库连接,mongoDbFactory就是连接工厂,通过配置单台服务器或者连接池(pool)的方式获取Mongodb服务器的连接。
3.3. MongoTemplate
就像Spring提供的JDBC,hibernate和ibatis的template一样,spring-data-mongodb也提供了一个基础的泛型MongoTemplate供开发者可以快速的利用代码完成基础的crud工作。在实践中可以考虑完全省去dao层的设计,直接在service层注入相应的template实例。 在此推荐写一个Repository<T>接口 其中提供对mongodb的CRUD操作。
3.4. Operations
其实所有的操作都是直接映射Mongodb本身提供的命令行,Spring-data-mongodb文档来操
作。提供的API Javadoc有问题报404,只能看HTML版的参考手册:/spring-data/data-mongodb/docs/current/reference/html/