关系型数据库遵循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)的更多相关文章

  1. c#操作MangoDB 之MangoDB CSharp Driver驱动详解

    序言 MangoDB CSharp Driver是c#操作mongodb的官方驱动. 官方Api文档:http://api.mongodb.org/csharp/2.2/html/R_Project_ ...

  2. CJCMS系列--持久层对MangoDB的支持

    持久层添加对MangoDB数据库的支持 using System; using System.Collections.Generic; using System.Linq; using System. ...

  3. 【SQL篇章--DATABASE/EVENTS】

    [SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:DATABASE/EVENTS][会坚持完善]   目录: 1. Data Definition Statements: 1.1 ...

  4. Javascript初学篇章_5(对象)

    对象 Javascript是一种面向对象的语言,因此可以使用面向对象的思想来进行javascript程序设计对象就是由一些彼此相关的属性和方法集合在一起而构成的一个数据实体.举个例子,一只猫是个对象, ...

  5. 【SQL篇章--CREATE TABLE】

    [SQL篇章][SQL语句梳理 :--基于MySQL5.6][已梳理:CREATE TABLE][会坚持完善] SQL : 1. Data Definition Statements: 1.3 CRE ...

  6. hibernate篇章六--demo(Hibernate之第1解之-hibernate_demo_1)

    准备工作做好了,开始Hibernate: 1:建立包:package:dao.model.service.util包: 2:开始model实体类Student:id,sname生成getter/set ...

  7. visio篇章--1

    因为要做需求规格说明书的需要,所以学着用visio.发现visio中其实有很多东西的.我昨晚是用它来画ER图.不画不知道,花了之后才发现有很多窍门在里面.不说废话.我列举一下应该要的东西 1.百度链接 ...

  8. centos5.5下mangodb启动报错glibc

    mangodb启动报错glibc找不到(centos5.5) 报错形式 [root@test-172-16-0-139-ip mongodb-server]# /data/mongodb-server ...

  9. Spring mybatis源码篇章-sql mapper配置文件绑定mapper class类

    前言:通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-MybatisDAO文件解析(二) 背景知识 MappedStatement是mybatis操作sql ...

随机推荐

  1. 多线程快速解压FastZipArchive介绍

    本文转载至  http://blog.csdn.net/xunyn/article/details/12975937   多线程解压iosfast 在iOS项目中用到解压缩,用的是ZipArchive ...

  2. C# WinForm退出方法

    1.this.Close();   只是关闭当前窗口,若不是主窗体的话,是无法退出程序的,另外若有托管线程(非主线程),也无法干净地退出: 2.Application.Exit();  强制所有消息中 ...

  3. Elasticsearch集群UNASSIGNED

    Elasticsearch集群UNASSIGNED http://shineforever.blog.51cto.com/1429204/1859734 http://www.searchtech.p ...

  4. html学习笔记(2)-字母大小写转换练习

    主要应用了text-transform属性值: uppercase:所有单词的字母都大写: lowercase:所有单词的字母都小写: capitalize:每个单词的首字母都大写: none:默认值 ...

  5. mysql系列之2.mysql多实例

    使用场景 资金紧张; 并发访问不大; 门户网站; 实现 生产硬件配置: mem 32G / 双cpu 8核 / 磁盘6*600G sas 15k, 2-3个实例 安装组件 #yum install n ...

  6. Flask的Debug功能非常酷

    Flask是一个Python开发框架.在试用的过程中发现它的debug功能非常cool.如下图所示,在出错的页面每条栈新的右边都有一个按钮,点击之后我们可以执行Python代码,而且非常重要的一点是通 ...

  7. hashMap的线程不安全

    hashMap是非线程安全的,表现在两种情况下: 1 扩容: t1线程对map进行扩容,此时t2线程来读取数据,原本要读取位置为2的元素,扩容后此元素位置未必是2,则出现读取错误数据. 2 hash碰 ...

  8. chunkhash笔记

    假设有main1.main2两个入口文件,main引入chunk1.chunk2,main2引入chunk1 改变chunk2 main1的chunkhash改变,main2不发生改变 main再引入 ...

  9. POJ1625 Censored! —— AC自动机 + DP + 大数

    题目链接:https://vjudge.net/problem/POJ-1625 Censored! Time Limit: 5000MS   Memory Limit: 10000K Total S ...

  10. python读取文件后切片

    from itertools import islice with open(“1.txt") as f: for a in islice(f,0,2): print(a)