介绍
---------
开源文档数据库, 高性能,高可用及伸缩性
文档数据库 Document Database
-------------------------------
1 文档的数据结构JSON格式(由键-值对组成,值可以是另外一个文档)
2 传统数据库的一条记录相当一个文档
3 文档必须小于 16MB
高性能
-------------
1 支持嵌入文档减少连接操作, 减少IO活动
2 支持更快的索引查询(B树索引)
高可用
-------------
1 提供复制工具, 即副本集来自动故障转移, 数据冗余。
副本集
-------------
一组MongoDB服务器, 管理同一个数据集. 提供最终一致性读,低延迟,高吞吐量的部署。
自动伸缩性
-------------
核心的功能支持水平扩展 - 集群
自动跨集群的分片及分发数据(sharding key)
名词
-----------
database 数据库
collection 集合(表)
document 文档(表记录)
index 索引
sharding 分片
namespace 命名空间(数据库.集合)
bson 二进制JSON
driver 驱动
replication 复制(主 - 备 - 从结构, 从主复制到备与从节点,按语句数量达到一个特定值触发,通过 oplog 日志复制, 复制是异步的,通常与主节点相差 ms 级.)
memory-mapped file 内存映射文件(BSON数据直接加载到内存,不需要转换成对象.mongodb 直接操作内存)
view 视图
work set 索引的子集
replica set 副本集
data model 数据模型(优化: 使用引用(关联)而不是嵌套文档降低数据增长, 数据增长影响性能; 使用索引; 调整小集合大小; 调整内核参数;
使用
-----------
1 连接数据库
shell> mongo
>db
>show dbs
>use mydb
>db.user.insert( {name: 'bisoft', age: 20} )
>db.user.insert( {name: 'amos_tl', age: 29} )
>show collections
>db.user.find()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "bisoft", "age" : 20 }
{ "_id" : ObjectId("4c2209fef3924d31102bd84b"), "name" : "amos_tl, "age" : 30 }
>db.user.findOne()
{ "_id" : ObjectId("4c2209f9f3924d31102bd84a"), "name" : "bisoft", "age" : 20 }
>db.user.find().limit(1)
_id 字段表示对象的ID(Object ID), 是惟一的.
游标(cursor)
------------
var c = db.user.find() // 返回一个游标
while ( c.hasNext() ) printjson( c.next() ) // 遍历游标
printjson( c [ 4 ] ) // 游标.toArray() - 隐式转换, 此方法会将游标的全部文档加载到内存,可能导致内存溢出
条件查询
db.user.find( { age : 20 } )
db.user.find( { age : {$gt: 25 }} )
//排序
db.user.find( { age : 20 } )
db.user.find( { age : {$gt: 25 } ).sort( {age : 1} )
// 分页
db.students.find().skip(pageNumber > 0 ? ((pageNumber-1)*pageSize) : 0).limit(pageSize)
// 投影
db.records.find( { "user_id": { $lt: 42 } }, { "name": 1, "email": 1 } )
返回包括 _id , name, email.
db.records.find( { "user_id": { $lt: 42} }, { "_id": 0, "name": 1 , "email": 1 } )
返回包括 name, email.
// 聚集
db.user.count()
db.user.distinct()
集合(Collections)
--------------------
相当于表, 一组文档,共享索引.
BSON & JSON
----------------
BSON 表示二进制的 JSON.
CRUD
--------
// 更新,多行更新,默认只更新一个文档,加 multi: true, 表示更新所有行
db.users.update(
{ age: { $gt: 18 } },
{ multi: true }
)
// 没有文档可更新时,想要插入数据时,加upsert: true ,表示更新或插入.
// 删除所有
db.collection.remove({})
// 删除指定条件
db.inventory.remove( { type : "amos_tl" })
// 删除一条记录
db.inventory.remove( { name : "amos_tl" }, 1 )
// 保存替换
db.collection.save( { name: "test"} )
Write Concern 写关注(写操作只发生在主节点上)
保证写操作成功, 写关注级别:
unacknowledged 0
acknowledged 1 默认(保证所有写操作都是成功的)
>1 确保已经写到磁盘
majority
w : 1
journaled: 确保已经写到磁盘; 数据先写到journaled日志,然后才异步写到磁盘. 这个日志类似重做日志. oplog 是操作日志, 用于复制.
j : true
wtimeout: 当w>1时,可以设置超时.
wtimeout : 100
<tag set>
备份与恢复
--------------------
使用 mongodump, mongoexport, mongoimport, mongorestore
集群
--------
主节点
mongod --master --dbpath /data/masterdb/ --oplogSize 1024M
从节点
mongod --slave --source <masterhostname><:<port>> --dbpath /data/slavedb/ --autoresync
local.sources 集合(表)
use local
db.sources.find()
db.sources.insert( { host: <masterhostname> <,only: databasename> } );
配置证书
keyFile = /srv/mongodb/keyfile
openssl rand -base64 741
分享到:
相关推荐
教程名称:MongoDB教程基础入门 课程目录:【】MongoDB教程基础入门-代码【】MongoDB教程基础入门01第一讲上【】MongoDB教程基础入门02第一讲下【】MongoDB教程基础入门03第二讲上【】MongoDB教程基础入门04第二讲...
MongoDB 基础
MongoDB 是一个高性能的NoSQL数据库,以分布式文件存储为基础,提供灵活的数据模型和高效的查询操作。MongoDB 不同于传统的关系型数据库,它采用面向集合的存储方式,支持无模式的数据模型,允许数据自由组织,这...
MongoDB是一个开源、高性能、无模式的文档型数据库,是NoSQL数据库产品中的一种。它的出现主要应对“三高”等问题,它可以解决需要存储数据量大、高并发读写、高可用的现实问题,适用于社交朋友圈、游戏积分、物流...
在“MongoDB基础教学文档”中,你可以期待学习到以下几个关键知识点: 1. **数据模型**:MongoDB的数据模型是基于BSON(Binary JSON)的,这种格式允许存储复杂的数据结构,如嵌入式文档和数组。这使得在一个文档内...
MongoDB,基础,学习,资料 MongoDB,基础,学习,资料
总之,MongoDB基础教程将引导你全面理解MongoDB的原理和实践,掌握如何使用Java驱动进行数据操作,以及如何优化数据库性能。通过阅读PDF教程和实践代码,相信你将能够快速上手MongoDB并将其应用到实际项目中。
/usr/local/mongodb/mongodb-linux-2.0.7/bin/mongod --dbpath=/usr/local/mongodb/data/db --logpath=/usr/local/mongodb/mongodb-linux-2.0.7/logs/mongodb.log --logappend --port=27017 --fork 知识点 6:配置...
### MongoDB基础环境搭建 搭建MongoDB环境的第一步是下载最新版本的安装包。目前,MongoDB社区版的最新稳定版本是3.4.3。下载完成后,需要将安装包解压到相应的目录,例如在CentOS系统中,可以解压到/opt/mongodb...
总之,这个“mongodb数据库jar包”是Java开发者与MongoDB数据库交互的基础工具,它涵盖了所有必要的API和功能,使开发人员能够充分利用MongoDB的强大功能。通过熟练掌握Java MongoDB驱动,你可以构建高效、可扩展的...
正确理解和使用`mongodb.dll`和相应的MongoDB驱动程序是开发和维护MongoDB应用程序的基础。确保你始终使用与MongoDB服务器版本兼容的驱动,以保证最佳的性能和稳定性。在进行任何系统更改前,建议先备份重要数据,...
MongoDB是一种流行的开源、分布式文档数据库,常被用于构建高性能、可扩展的应用程序。这个“mongodb-测试数据”压缩包显然包含了一些用于测试MongoDB功能的样例数据集,特别是针对增、删、改、查(CRUD)操作的学习...
MongoDB 实验报告 本实验报告旨在详细介绍 MongoDB 的安装、配置和基本操作步骤,本报告基于 CentOS 7 系统,通过一步一步的截图和文字说明,帮助读者快速掌握 MongoDB 的使用。 一、安装 MongoDB 首先,我们需要...
MongoDB 是一个流行的开源、基于分布式文件存储的数据库系统,主要设计用于处理大量数据的分布式环境。C# 驱动是 MongoDB 提供的一种客户端库,允许 .NET 开发者与 MongoDB 数据库进行交互。标题提到的是 MongoDB 的...
MongoDB是一款开源、分布式、高性能的NoSQL数据库,它不使用传统的表格和列式结构来存储数据,而是采用键值对、文档、集合和图形数据模型。这种设计使得MongoDB在处理非结构化和半结构化数据时表现出色,特别适合大...
Spring Data MongoDB是一个强大的Java库,它为开发人员提供了一种简单的方式来访问和操作MongoDB数据库。这个库是Spring Data框架的一部分,旨在简化数据访问层的实现,尤其在使用NoSQL数据库如MongoDB时。MongoDB...
MongoDB入门指南 MongoDB是一种开源的文档类型数据库,它具有高性能、可扩展、高可用、自动收缩等特性。MongoDB能够避免传统的ORM映射,从而有助于开发。MongoDB中的每一行记录就是一个文档,它是一个由键值对构成...
MongoDB是一款开源、高性能、无模式的文档型数据库,它在现代应用程序开发中扮演着重要的角色,特别是在处理大量非结构化数据时。针对"mongodb Windows7 64位"这个主题,我们将深入探讨MongoDB在Windows 7 64位操作...
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...