MongoDB学习系列(1)--入门介绍
MongoDB是一款为Web应用程序设计的面向文档结构的数据库系统。
MongoDB贡献者是10gen公司。地址:http://www.10gen.com
1.MongoDB主要特性:
1.1文档数据模型
不需要和关系数据库一样,显示一个示例文档数据时,需要多张表,并且需要这些表之间通过主外键关联起来。同时数据库不需要schema。所以对那些schema经常变化,或者web应用程序开发初期来说,MongoDB有很大的优势。所有的数据都可以存在一条记录中,不需要为每个“列”设置数据类型。
1.2 支持即时查询,保留的关系型数据的即时查询的能力,不同于k-v数据库,只能查询键。
1.3 二级索引
MongoDB中的二级索引是通过B树实现的。通过允许使用多个二级索引,MongoDB让用户能对大量不同的查询进行优化。并且效果非常明显。
在MongoDB中,每个集合最多可以创建64个索引。支持索引有:升序、降序、唯一性、复合键索引、地理空间索引。
1.4 复制
MongoDB通过副本集(replica set)的拓扑结构提供复制功能。副本集将数据分布在多台机器上实现冗余。在服务器和网路故障时能提供自动故障转移。另外复制功能还能用于扩展数据库的读能力。
后面可以看到MongoDB在副本集和主从复制技术上的差异。
1.5 速度和持久性
写速度:在给定时间内数据库可以处理的插入、更新和删除操作的量。
持久性:数据库保持这些写操作结果不变的时间长短。
高容量、低价值的数据局(比如点击数和日志)使用fire-and-get模式写操作
对于重要的数据,更倾向于安全模式写操作。该模式强制要求数据库作出应答,确保数据库正确无误的接收到写操作。
1.6 数据库扩展
磁盘的IOPS(Input/output per second)
垂直扩展:提升单一节点的硬件配置
水平扩展:不是提升单一节点的硬件性能,而是将数据库分布到多态机器上。因为水平扩展可以使用普通x86+Linux机器,所以托管整个数据库集群的成本会显著提高。同时将数据库分布到多台机器上可以降低故障带来的影响。
最后,我查询了51cto上投票结果。显示MongoDB吸引开发者和dba最大的原因是:MongoDB的模式自由。不需要schema。个人觉得DBA最开心的是,MongoDB在复制、分片上容易部署和配置,同时有良好的故障迁移机制。
(图片来自51CTO)
作为开发者,技术日新月异,各种相关技术发展迅猛。开发者能学习和掌握以下三种数据库是最好的了:
1.MySQL--关系型数据库
2.MongoDB--面向文档结构的数据库(介于关系型数据和key-value数据库之间的一种数据库)
3.memcached--分布式的高速缓存系统。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Linux系统中CPU占用率较高问题排查思路与解决方法
- linux中ftp服务搭建需要注意的地方
- CentOS下使用LibreOffice实现文档格式的转换方式
- 详解在Linux中怎么使用cron计划任务
- Linux系统删除文件夹和文件的命令
- 详解Linux防火墙iptables禁IP与解封IP常用命令
- 在Ubuntu 16.04 Server上安装Zabbix的方法
- Centos7.3安装部署最新版Zabbix3.4的方法(图文)
- Linux系统下移植busybox中mkfs.vfat命令
- Linux服务器配置ip白名单防止远程登录以及端口暴露的问题
- Ubuntu上释放空间的5种简单方法
- Linux下Redis允许远程连接的实现方法
- Linux Socket 编程简介和实现
- Linux (Ubuntu 18.04) 下安装vim编辑器的方法
- 把windows下的字体安装到Linux系统下的方法介绍