欢迎大家赞助一杯啤酒🍺 我们准备了下酒菜:Formal mathematics/Isabelle/ML, Formal verification/Coq/ACL2, C++/F#/Lisp
MongoDB
小 (→Mac OS X) |
小 (→新闻) |
||
(未显示1个用户的1个中间版本) | |||
第8行: | 第8行: | ||
==新闻== | ==新闻== | ||
+ | *2018年10月16日之前发布的版本采用 AGPL 许可证,2018年10月16日之后的所有版本包括先前版本的程序修复将根据服务器端公共许可证 Server Side Public License (SSPL) v1 发布。从此也可考虑重新选择 [[ScyllaDB]]、[[Apache Cassandra]] 等替代方案。 | ||
*[http://www.36kr.com/p/218601.html MongoDB获8000万美元融资],1年前曾获1.5亿美元融资,估值超10亿美元。(2015.01) | *[http://www.36kr.com/p/218601.html MongoDB获8000万美元融资],1年前曾获1.5亿美元融资,估值超10亿美元。(2015.01) | ||
2020年8月28日 (五) 04:13的最后版本
您可以在Wikipedia上了解到此条目的英文信息 MongoDB Thanks, Wikipedia. |
MongoDB 是是一个高性能、开源(AGPL,Apache v2)、无模式的文档数据库。它是一个新兴的NoSQL数据库管理系统,常被用于高流量网站,在线游戏网站和搜索引擎的大规模数据管理和分类。
MongoDB的目标是缩小键/值存储(快速和可伸缩)和关系型数据库(丰富的功能)之间的差距,填补空档。
目录 |
[编辑] 新闻
- 2018年10月16日之前发布的版本采用 AGPL 许可证,2018年10月16日之后的所有版本包括先前版本的程序修复将根据服务器端公共许可证 Server Side Public License (SSPL) v1 发布。从此也可考虑重新选择 ScyllaDB、Apache Cassandra 等替代方案。
- MongoDB获8000万美元融资,1年前曾获1.5亿美元融资,估值超10亿美元。(2015.01)
[编辑] 版本
- 4.x
- 3.x
MongoDB 3.0 modular storage engine API 支持第三方存储引擎: RocksDB, TokuDB 和 WiredTiger.
[编辑] 功能
Mongo使用C++开发,提供了以下功能:
- 面向集合的存储:适合存储对象及JSON形式的数据。
- 动态查询:Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档中内嵌的对象及数组。
- 完整的索引支持:包括文档内嵌对象及数组。Mongo的查询优化器会分析查询表达式,并生成一个高效的查询计划。
- 查询监视:Mongo包含一个监视工具用于分析数据库操作的性能。
- 复制及自动故障转移:Mongo数据库支持服务器之间的数据复制,支持主-从模式及服务器之间的相互复制。复制的主要目标是提供冗余及自动故障转移。
- 高效的传统存储方式:支持二进制数据及大型对象(如照片或图片)。
- 自动分片以支持云级别的伸缩性:自动分片功能支持水平的数据库集群,可动态添加额外的机器。
[编辑] 数据模型
[编辑] GridFS
MongoDB中是使用GridFS来做存储的,它有一部分限制,就是单个文档不能超过4兆,在1.8版以后把这个限制扩展到8兆。它的本质是把大于4兆的数据给你切成一片一片的,分成了两个collection把它插进去。但是这个一般是怎么实现的呢,其实服务端并不实现,而是通过你的驱动,也就是客户端去实现。
bin/mongofiles put Linux-48x48.gif -h 192.168.1.101 connected to: 192.168.1.101 added file: { _id: ObjectId('4f3b58d6493789259413d0e1'), filename: "Linux-48x48.gif", chunkSize: 262144, uploadDate: new Date(1329289430358), md5: "fe74ea57fc88c522a0954ad7f9e3fe9f", length: 2087 } done! bin/mongofiles list -h 192.168.1.101 connected to: 192.168.1.101 Linux-48x48.gif 2087 Kde-48x48.png 5736 Yii-48x48.gif 1856 Zorin-48x48.gif 2083 bin/mongofiles get Linux-48x48.gif
[编辑] 应用场景
Mongo适合用于以下场景:
- 网站数据:Mongo非常适合实时的插入,更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。
- 缓存:由于性能很高,Mongo也适合作为信息基础设施的缓存层。在系统重启之后,由Mongo搭建的持久化缓存层可以避免下层的数据源过载。
- 大尺寸,低价值的数据:使用传统的关系型数据库存储一些数据时可能会比较昂贵,在此之前,很多时候程序员往往会选择传统的文件进行存储。
- 高伸缩性的场景:Mongo非常适合由数十或数百台服务器组成的数据库。Mongo的路线图中已经包含对MapReduce引擎的内置支持。
- 用于对象及JSON数据的存储:Mongo的BSON数据格式非常适合文档化格式的存储及查询。
MongoDB中对象的最大尺寸被限制为4MB,但对象的数量不受限制,MongoDB可以通过集群加快操作的执行速度,当数据库变得越来越大时,可以向集群增加服务器解决性能问题。
[编辑] 电商
- MongoDB电商参考架构第一部分:搭建一个灵活、可搜索、响应快速的产品目录系统
- MongoDB电商参考架构第二部分:库存优化方法
- MongoDB电商参考架构第三部分:查询优化及扩展
- MongoDB电商参考架构第四部分:推荐及个性化
[编辑] Mac OS X
brew install mongodb ln -sfv /usr/local/opt/mongodb/*.plist ~/Library/LaunchAgents launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mongodb.plist mongod --config /usr/local/etc/mongod.conf 或 mongod --dbpath /data/db mongo > help > db.serverStatus() > db.serverStatus().wiredTiger brew update brew upgrade mongodb mongostat // mongodb状态
[编辑] Linux
获得类似 mongodb-linux-i686-2.0.2.tgz 的包 mkdir -p /usr/local/data/db/ /bin/mongod --journal --rest --dbpath=/usr/local/data/db/ & http://localhost:28017/ ./mongo
增加身份认证
use admin db.addUser('admin', '12345'); db.auth('admin','12345');
可能出现的问题:couldn't connect to server 127.0.0.1 shell/mongo.js:84
这样解决 ./mongo 192.168.1.101:27017 > show dbs
修改 /etc/mongodb.conf
bind_ip = 192.168.1.101
You are trying to access MongoDB on the native driver port. For http diagnostic access, add 1000 to the port number
[编辑] Windows
D:\mongodb-win32-i386-0.9.7\bin\mongod run --dbpath=d:\data\db http://127.0.0.1:28017/ D:\mongodb-win32-i386-0.9.7\bin\mongo >help >show dbs >use admin
[编辑] Connection
>use test >j = { name : "mongo" }; > t = { x : 3 }; > db.things.save(j); > db.things.save(t); > for (var i = 1; i <= 20; i++) db.things.save({x : 4, j : i}); > db.things.find();
[编辑] 分区
mkdir /usr/local/data/db/a /usr/local/data/db/b ./mongod --shardsvr --dbpath /usr/local/data/db/a --port 10000 > /tmp/sharda.log & ./mongod --shardsvr --dbpath /usr/local/data/db/b --port 10001 > /tmp/shardb.log & mkdir /usr/local//data/db/config ./mongod --configsvr --dbpath /usr/local/data/db/config --port 20000 > /tmp/configdb.log & ./mongos --configdb localhost:20000 > /tmp/mongos.log & ./mongod --journal --rest --dbpath=/usr/local/data/db/ & ./mongo 192.168.1.101:27017
设置集群,加入两个shards (a and b)
> use admin switched to db admin > db.runCommand( { addshard : "192.168.1.101:10000" } ) > db.runCommand( { addshard : "192.168.1.101:10001" } ) > db.runCommand( { enablesharding : "test" } ) > db.runCommand( { shardcollection : "test.people", key : {name : 1} } )
管理
> use config > show collections
关闭
kill -2 pid
若非正常关闭,无法启动数据库,mongod --dbpath /var/lib/mongodb --repair 然后重启。
[编辑] REST
vim /etc/mongodb.conf rest = true auth = true // 客户端登录的认证机制
[编辑] 管理工具
- Robo 3T 推荐
- mongo-express
- Robomongo
- mongotron based on Electron framework and AngularJS
- phpMoAdmin
- MongoHub
- MongoDB 的 Nagios 监控插件
- MonjaDB (MongoDB GUI client tool)
- Dr. Mongo 基于Meteor构建
[编辑] PostgreSQL
- 使用Bucardo从PostgreSQL同步数据到MongoDB
- MongoDB replication from Postgres using Bucardo
[编辑] Hadoop
[编辑] Clojure
- Clojure Monger
- Clojure libraries for MongoDB, RabbitMQ, validations, Neo4J, ElasticSearch, Apache Cassandra, Riak, Memcached, stream processing
[编辑] Alfresco
[编辑] 虚拟化
[编辑] 用户
- 视觉中国的NoSQL之路:从MySQL到MongoDB
- Wordnik的MongoDB使用经验
- MongoDB创始人Eliot Horowitz分析FourSquare宕机原因
- How We Made GitHub Fast
- craigslist.com Craigslist迁移20亿数据到MongoDB的经验与教训
- sourceforge.net
- 淘宝 MongoDB is used to store the monitoring data.
- 大众点评
- 网易游戏: MongoDB、云服务化、自动化运维
更多用户:http://www.mongodb.org/display/DOCS/Production+Deployments
[编辑] MongoDB服务
更多服务:Hosting Center