zoukankan      html  css  js  c++  java
  • 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字符串。
    不能是空字符串("")。
    不得含有' '(空格)、.、$、/、和 (空宇符)。
    应全部小写。
    最多64字节。
    
    保留数据库:
    有一些数据库名是保留的,可以直接访问这些有特殊作用的数据库。
    admin: 从权限的角度来看,这是"root"数据库。要是将一个用户添加到这个数据库,这
    
    个用户自动继承所有数据库的权限。一些特定的服务器端命令也只能从这个数据库运行,
    
    比如列出所有的数据库或者关闭服务器。
    local: 这个数据永远不会被复制,可以用来存储限于本地单台服务器的任意集合
    config: 当Mongo用于分片设置时,config数据库在内部使用,用于保存分片的相关信息
    
    。
    
    文档:
    它是一个键值(key-value)对(即BSON).     BSON(Binary Serialized Document 
    
    Format)一种二进制形式的存储格式即类json的一种二进制形式
    MongoDB 的文档不需要设置相同的字段,并且相同的字段不需要相同的数据类型,这与关
    
    系型数据库有很大的区别,也是 MongoDB 非常突出的特点。
    文档的注意点:  -文档中的键/值对是有序的。
    	  	-文档中的值不仅可以是在双引号里面的字符串,还可以是其他几种数
    
    据类型(甚至可以是整个嵌入的文档)。
    		-MongoDB区分类型和大小写。
    		-MongoDB的文档不能有重复的键。
    		-文档的键是字符串。除了少数例外情况,键可以使用任意UTF-8字符。
    文档命名规范:	-键不能含有 (空字符)。这个字符用来表示键的结尾。
    		-.和$有特别的意义,只有在特定环境下才能使用。
    		- 以下划线"_"开头的键是保留的(不是严格要求的)。
    
    数据库服务:mangod
    客户端:mango
    
    集合:
    是MangoDB文档组,类似于关系数据库管理系统中的表格;
    集合存在于数据库中,集合没有固定的结构,这意味着你在对集合可以插入不同格式和类
    
    型的数据,但通常情况下我们插入集合的数据都会有一定的关联性。
    集合命名:	-集合名不能是空字符串""。
    		-集合名不能含有字符(空字符),这个字符表示集合名的结尾。
    		-集合名不能以"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()
    

      

  • 相关阅读:
    jQuery里的$.ajax()方法详解
    express框架使用axios进行post请求, 两次请求问题
    electron-vue 报错 Unresolved node modules: bufferutil, utf-8-validate, canvas
    electron-vue离线打包
    个推技术:性能提升60%↑ 成本降低50%↓ Spark性能调优看这篇就够了!
    百亿级日志流分析实践 | 剖析个推后效分析功能实现原理
    iOS开发常用国外网站清单
    一篇文章搞定Git——Git代码管理及使用规范
    音视频技术入门——音频处理
    Java内存空间知识点梳理
  • 原文地址:https://www.cnblogs.com/ipetergo/p/6519842.html
Copyright © 2011-2022 走看看