MangoDB篇章(1)
关系型数据库遵循ACID规则
事务(transaction)4个特性:原子性(A)、一致性(C)、独立性(I)、持久性(D) ; 分布式系统(distributed system):
由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。
具有高度的内聚性、透明性。
分布式计算优点:可靠性(容错)、可扩展性、资源共享、灵活性、更快的速度、开放系 统、更高的性能; 分布式计算缺点:
1)故障排除:故障排除和诊断问题。
2)软件:更少的软件支持是分布式计算系统的主要缺点。
3)网络:网络基础设施的问题,包括:传输问题,高负载,信息丢失等。
4)安全性:开发系统的特性让分布式计算系统存在着数据的安全性和共享的风险等问题 。 NoSQL: Not Only SQL
指非关系型数据库,是对不同于传统的关系型数据库的数据库管理系统的统称。
用于超大规模数据的存储。(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据 )。这些类型的数据存储不需要固定的模式,无需多余操作就可以横向扩展。
优点:高可扩展性、分布式计算、低成本、架构的灵活性,半结构化数据、没有复杂的关 系;
缺点:没有标准化、有限的查询功能、最终一致是不直观的程序; RDBMS(Relational Database Management System)VS NoSQL:
RDBMS: -高度组织化结构化数据
-结构化查询语言(SQL) (SQL)
-数据和关系都存储在单独的表中。
-数据操纵语言,数据定义语言
-严格的一致性
-基础事务
NoSQL: -代表着不仅仅是SQL
-没有声明性查询语言
-没有预定式模式
-键 - 值对存储,列存储,文档存储,图形数据库
- 最终一致性,而非ACID属性
- 非结构化和不可预知的数据
- CAP定理 【Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)】
- 高性能,高可用性和可伸缩性 CAP定理:一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需 求,最多只能同时较好的满足两个。 MangoDB:
由C++编写;
基于分布式文件存储的开源数据库系统;
在高负载的情况下,添加更多的节点,可以保证服务器性能。
MongoDB 旨在为WEB应用提供可扩展的高性能数据存储解决方案。
MongoDB 将数据存储为一个文档,数据结构由键值(key=>value)对组成。MongoDB 文档类 似于 JSON 对象。字段值可以包含其他文档,数组及文档数组。
特点: -MongoDB的提供了一个面向文档存储,操作起来比较简单和容易。
-你可以在MongoDB记录中设置任何属性的索引 (如: FirstName="Sameer",Address="8 Gandhi Road")来实现更快的排序。
-你可以通过本地或者网络创建数据镜像,这使得MongoDB有更强的扩展性。
-如果负载的增加(需要更多的存储空间和更强的处理能力) ,它可以分布在计 算机网络中的其他节点上这就是所谓的分片。
-Mongo支持丰富的查询表达式。查询指令使用JSON形式的标记,可轻易查询文档 中内嵌的对象及数组。
-MongoDb 使用update()命令可以实现替换完成的文档(数据)或者一些指定的 数据字段 。
-Mongodb中的Map/reduce主要是用来对数据进行批量处理和聚合操作。
-Map和Reduce。Map函数调用emit(key,value)遍历集合中所有的记录,将key与 value传给Reduce函数进行处理。
-Map函数和Reduce函数是使用Javascript编写的,并可以通过db.runCommand或 mapreduce命令来执行MapReduce操作。
-GridFS是MongoDB中的一个内置功能,可以用于存放大量小文件。
-MongoDB允许在服务端执行脚本,可以用Javascript编写某个函数,直接在服务 端执行,也可以把函数的定义存储在服务端,下次直接调用即可。
-MongoDB支持各种编程语言:RUBY,PYTHON,JAVA,C++,PHP,C#等多种语言。
-MongoDB安装简单。 数据库:
一个mongodb中可以建立多个数据库。
MongoDB的默认数据库为"db",该数据库存储在data目录中。
MongoDB的单个实例可以容纳多个独立的数据库,每一个都有自己的集合和权限,不同的 数据库也放置在不同的文件中。 数据库名:
数据库名可以是满足以下条件的任意UTF-8字符串。
不能是空字符串("")。
不得含有' '(空格)、.、$、/、\和\0 (空宇符)。
应全部小写。
最多64字节。 保留数据库:
有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这 个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行, 比如列出所有的数据库或者关闭服务器。
local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息 。 文档:
它是一个键值(key-value)对(即BSON). BSON(Binary Serialized Document Format)一种二进制形式的存储格式即类json的一种二进制形式
MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关 系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
文档的注意点: -文档中的键/值对是有序的。
-文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数 据类型(甚至可以是整个嵌入的文档)。
-MongoDB区分类型和大小写。
-MongoDB的文档不能有重复的键。
-文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
文档命名规范: -键不能含有\0 (空字符)。这个字符用来表示键的结尾。
-.和$有特别的意义,只有在特定环境下才能使用。
- 以下划线"_"开头的键是保留的(不是严格要求的)。 数据库服务:mangod
客户端:mango 集合:
是MangoDB文档组,类似于关系数据库管理系统中的表格;
集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类 型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
集合命名: -集合名不能是空字符串""。
-集合名不能含有\0字符(空字符),这个字符表示集合名的结尾。
-集合名不能以"system."开头,这是为系统集合保留的前缀。
-用户创建的集合名字不能含有保留字符。有些驱动程序的确支持在集 合名里面包含,这是因为某些系统生成的集合中包含该字符。除非你要访问这种系统创建 的集合,否则千万不要在名字里出现$。 MangoDB创建数据库:
语法:use DATABASE_NAME
查看所有数据库:show dbs
MongoDB 中默认的数据库为 test,如果你没有创建新的数据库,集合将存放在 test 数 据库中。 MangoDB删除数据库:删除数据库之前要先切换到要删除的数据库 use 数据库名 然后用 下面的删除语法删除数据库
语法:db.dropDatabase() MangoDB:操作
插入文档 语法:db.COLLECTION_NAME.insert(document)
删除集合 语法:db.collection.drop()
更新文档 语法:db.collection.update()
MangoDB篇章(1)的更多相关文章
- c#操作MangoDB 之MangoDB CSharp Driver驱动详解
序言 MangoDB CSharp Driver是c#操作mongodb的官方驱动. 官方Api文档:http://api.mongodb.org/csharp/2.2/html/R_Project_ ...
- CJCMS系列--持久层对MangoDB的支持
持久层添加对MangoDB数据库的支持 using System; using System.Collections.Generic; using System.Linq; using System. ...
- 【SQL篇章--DATABASE/EVENTS】
[SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:DATABASE/EVENTS][会坚持完善] 目录: 1. Data Definition Statements: 1.1 ...
- Javascript初学篇章_5(对象)
对象 Javascript是一种面向对象的语言,因此可以使用面向对象的思想来进行javascript程序设计对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体.举个例子,一只猫是个对象, ...
- 【SQL篇章--CREATE TABLE】
[SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:CREATE TABLE][会坚持完善] SQL : 1. Data Definition Statements: 1.3 CRE ...
- hibernate篇章六--demo(Hibernate之第1解之-hibernate_demo_1)
准备工作做好了,开始Hibernate: 1:建立包:package:dao.model.service.util包: 2:开始model实体类Student:id,sname生成getter/set ...
- visio篇章--1
因为要做需求规格说明书的需要,所以学着用visio.发现visio中其实有很多东西的.我昨晚是用它来画ER图.不画不知道,花了之后才发现有很多窍门在里面.不说废话.我列举一下应该要的东西 1.百度链接 ...
- centos5.5下mangodb启动报错glibc
mangodb启动报错glibc找不到(centos5.5) 报错形式 [root@test-172-16-0-139-ip mongodb-server]# /data/mongodb-server ...
- Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类
前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 背景知识 MappedStatement是mybatis操作sql ...
随机推荐
- StringBuilder的append、StringBuffer的append和String str = "a"+"b"的区别?
大家都知道String+String会开销额外的系统资源,粗略的原因是String是不可变类,每一步操作都会返回新的String变量,占用空间及时间. 其实我的理解不是这样的,我们来看看String+ ...
- 【Selenium + Python】路径报错之OSError: [Errno 22] Invalid argument: './t/report/2018-03-23_11:03:12_report.html'
现象: 此问题真的是太痛苦了,查了好多资料是说路径的问题,结果还是报错,后来一点点的排查才发现原来是!!!!!! 废话不多说上原来代码: if __name__ == '__main__': star ...
- Struts2 ModelDriven接口使用
用户在做http请求时一般都有两种方式:get和post方式.get方式用来获取查询相关信息,既向服务器获得信息,而post方式用来更新信息既向服务器提交数据.通常情况下,用get方式向服务器获取信息 ...
- Win10上Python3通过pip安装时出现UnicodeDecodeError
http://blog.csdn.net/qq_33530388/article/details/68933201 解决方法: 打开 c:\program files\python36\lib\sit ...
- mongodb.py
from chatterbot.storage import StorageAdapter class Query(object): def __init__(self, query={}): sel ...
- 【BZOJ1097】[POI2007]旅游景点atr 最短路+状压DP
[BZOJ1097][POI2007]旅游景点atr Description FGD想从成都去上海旅游.在旅途中他希望经过一些城市并在那里欣赏风景,品尝风味小吃或者做其他的有趣的事情.经过这些城市的顺 ...
- 【BZOJ4568】[Scoi2016]幸运数字 倍增+线性基
[BZOJ4568][Scoi2016]幸运数字 Description A 国共有 n 座城市,这些城市由 n-1 条道路相连,使得任意两座城市可以互达,且路径唯一.每座城市都有一个幸运数字,以纪念 ...
- Easyui combobox 怎么加载数据
说明:开发环境 vs2012 asp.net mvc4 c# 1.效果图 2.HTML代码 <%@ Page Language="C#" AutoEventWireup=&q ...
- SVN设置删除权限
svn是很多企业和个人用的版本控制软件,非常方便.通用的权限控制在auth文件中,但是缺点是权限较大,w的权限一旦赋予,相应用户都可以有删除svn文件的权限,但是如果不赋予w权限,又没办法commit ...
- (转).NET基础拾遗(5)多线程开发基础
https://www.cnblogs.com/edisonchou/p/4848131.html