MONGODB学习之一
来源:互联网 发布:使命召唤ol优化差 编辑:程序博客网 时间:2024/06/05 08:43
简介
MongoDB 是一个基于分布式文件存储的数据库。由C++语言编写。旨在为WEB应用提供可扩展的高性能数据存储解决方案。MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。他支持的数据结构非常松散,是类似json的bson格式,因此可以存储比较复杂的数据类型。Mongo最大的特点是他支持的查询语言非常强大,其语法有点类似于面向对象的查询语言,几乎可以实现类似关系数据库单表查询的绝大部分功能,而且还支持对数据建立索引。
特点
它的特点是高性能、易部署、易使用,存储数据非常方便。主要功能特性有: *面向集合存储,易存储对象类型的数据。 *模式自由。 *支持动态查询。 *支持完全索引,包含内部对象。 *支持查询。 *支持复制和故障恢复。 *使用高效的二进制数据存储,包括大型对象(如视频等)。 *自动处理碎片,以支持云计算层次的扩展性。 *支持RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。 *文件存储格式为BSON(一种JSON的扩展)。 *可通过网络访问。
使用原理
“面向集合”(Collection-Oriented):数据通过Key-value形式存储集合(Collection)。每个集合在数据库中都有一个唯一的标识名,并且可以包含无限数目的文档。集合的概念类似关系型数据库(RDBMS)里的表(table),不同的是它不需要定义任何模式(schema),闪存高速缓存算法,能够快速识别数据库内大数据集中的热数据,提供一致的性能改进。模式自由(schema-free),对于存储在mongodb数据库中的文件,不需要知道它的任何结构定义。如果需要的话,你完全可以把不同结构的文件存储在同一个数据库里。存储在集合中的文档,被存储为键-值对的形式。键用于唯一标识一个文档,为字符串类型,而值则可以是各种复杂的文件类型。我们称这种存储形式为BSON(Binary Serialized Document Format)。[3]
MongoDB已经在多个站点部署,其主要场景如下:
1)网站实时数据处理。它非常适合实时的插入、更新与查询,并具备网站实时数据存储所需的复制及高度伸缩性。2)缓存。由于性能很高,它适合作为信息基础设施的缓存层。在系统重启之后,由它搭建的持久化缓存层可以避免下层的数据源过载。3)高伸缩性的场景。非常适合由数十或数百台服务器组成的数据库,它的路线图中已经包含对MapReduce引擎的内置支持。不适用的场景如下: 1)要求高度事务性的系统。 2)传统的商业智能应用。 3)复杂的跨文档(表)级联查询。[4]
系统介绍
分布式文件系统(Distributed File System)是指文件系统管理的物理存储资源不一定直接连接在本地节点上,而是通过计算机网络与节点相连。分布式文件系统的设计基于客户机/服务器模式。一个典型的网络可能包括多个供多用户访问的服务器。另外,对等特性允许一些系统扮演客户机和服务器的双重角色。HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统。
设计特征
MongoDB 的设计目标是高性能、可扩展、易部署、易使用,存储数据非常方便。其主要功能特性如下。 (1)面向集合存储,容易存储对象类型的数据。在MongoDB 中数据被分组存储在集合中,集合类似RDBMS 中的表,一个集合中可以存储无限多的文档。 (2)模式自由,采用无模式结构存储。在MongoDB 中集合中存储的数据是无模式的文档,采用无模式存储数据是集合区别于RDBMS 中的表的一个重要特征。 (3)支持完全索引,可以在任意属性上建立索引,包含内部对象。MongoDB的索引和RDBMS 的索引基本一样,可以在指定属性、内部对象上创建索引以提高查询的速度。除此之外,MongoDB 还提供创建基于地理空间的索引的能力。 (4)支持查询。MongoDB 支持丰富的查询操作,MongoDB 几乎支持SQL中的大部分查询。 (5)强大的聚合工具。MongoDB 除了提供丰富的查询功能外,还提供强大的聚合工具,如count、group 等,支持使用MapReduce 完成复杂的聚合任务。 (6)支持复制和数据恢复。MongoDB 支持主从复制机制,可以实现数据备份、故障恢复、读扩展等功能。而基于副本集的复制机制提供了自动故障恢复的功能,确保了集群数据不会丢失。 (7)使用高效的二进制数据存储,包括大型对象(如视频)。使用二进制格式存储,可以保存任何类型的数据对象。 (8)自动处理分片,以支持云计算层次的扩展。MongoDB 支持集群自动切分数据,对数据进行分片可以使集群存储更多的数据,实现更大的负载,也能保证存储的负载均衡。 (9)支持Perl、PHP、Java、C#、JavaScript、Ruby、C 和C++语言的驱动程序,MongoDB 提供了当前所有主流开发语言的数据库驱动包,开发人员使用任何一种主流开发语言都可以轻松编程,实现访问MongoDB 数据库。 (10)文件存储格式为BSON(JSON 的一种扩展)。BSON 是对二进制格式的JSON 的简称,BSON 支持文档和数组的嵌套。 (11)可以通过网络访问。可以通过网络远程访问MongoDB 数据库。
阅读全文
0 0
- mongodb学习系列之一
- MONGODB学习之一
- MongoDB学习之一----Windows上安装MongoDB
- mongodb学习记录之一:基础查询
- 【mongodb系统学习之一】mongodb的简单安装
- 绝好的MongoDB学习资料之一. Database
- 分布式缓存学习之一:Memcached, Redis, MongoDB区别
- MongoDB实战系列之一:MongoDB安装部署
- MongoDB实战系列之一:MongoDB安装部署
- MongoDB实战系列之一:MongoDB安装部署
- mongodb系列之一:java操作mongodb数据库
- NO-SQL数据库之一:MongoDB
- MongoDB系列之一:windows安装
- 《MongoDB扩展技术》读书笔记之一
- 【mongoDB】mongoDB学习日记
- [MongoDB]MongoDB学习
- Mongodb 学习
- MongoDB学习
- 安装Eclipse出现“The Eclipse executable launcher was unable to locate its companion shared library”错误
- 鼠标经过特效
- 结构体:struct 和 typedef struct应该以及结构体的构造函数 区别
- C/C++从文本文件读取数据
- PullToRefreshScrollView的使用 +Banner
- MONGODB学习之一
- SpringBoot非官方教程 | 终章:文章汇总
- jmeter 元件的作用域与执行顺序
- 闭包作用域问题
- MindManager 2018新视图洋葱图介绍
- R12 FA中“摊销“(Amortize Adjustment)的实际应用
- Hadoop学习笔记1
- AGC010
- lucene7.1.0 (二) helloworld