Nosql

1、一般大型关系型数据库的每秒最大访问并发量在几百次到几万次之间。

2、非关系型数据库(Nosql)在速度响应上要做到“斤斤计较、分秒必争”。

3、逻辑模式:关系型数据库里面的表是由行(Row)和列(Column)为基本关系组成的数据存储逻辑模式。

4、大数据定义为:高速、巨量、多变。一般选择nosql的标准是,凡是关系型数据库不擅长的,都可以考虑nosql技术。

5、关系型数据库(RDB)包括了TRDB和NewSQL两种。

                      

6、传统关系型数据库的主要特征:

  1)使用强存储模式技术:这里特指数据库表、行、字段的建立,都需要预先严格定义,并进行相关属性约束。

  2)采用强事务保证可用性和安全性。

  3)采用单机集中式处理方式。

上述特征在保证数据安全、准确运行的同时,也进一步降低了运行速度。

  应用场景:政府、企业内部业务数据应用为主。

      

7、Nosql存储方式和特点:

      

    特点:1)使用弱存储模式技术。

       2)没有采用sql技术标准来定义和操作数据库。

       3)采用弱事务保证数据可用性和安全性或者根本没有事务处理机制。

       4)主要采用多机分布式处理方式。

8、对于分布式和集群的理解 ?

  从技术角度,可以将两者进行一个区别,集群是指同时进行一个任务;分布式是一个任务分开执行,提高效率。

  从物理连接角度,集群就是一堆服务器连接在一起,是物理上的概念;分布式是在集群服务器上进行的一种处理方式,是一个基于软件系统上的概念。

9、分布式和集中式技术在物理上的核心区别是分布式需要多台服务器,集中式就是一台服务器。

10、单机的局限性

  1)单机读写速度与硬盘、主板、内存、CPU、网卡都有关系,无论哪个环节有问题,都影响整体计算机读写性能。

  2)硬盘大多是机械硬盘,读写受到转速的影响,转速越快,读写越高,但是相应的电机主轴磨损越大,噪音越大,所以需要一个合理的范围,一般服务器为10000/min,笔记本是5400/min。

    3)存储有限,存储受到主板硬盘插槽影响,而购买一台笔记本,存储大小就是确定的。

   4)单机指令之间速度的细微区别,越是底层执行越快;现在TRDB和nosql这种高级语言,相应转化成底层语言,TRDB考虑的比nosql多,就越慢。

     5)单机相对于多机的安全问题

11、对比单机局限性,进行服务器的纵横扩充

  1)纵向:高配置,但价格昂贵,也不是nosql技术方向;内存处理,容量和速度发生了巨大变化,是nosql的方向且基于内存本身就比TRDB快几十倍。

  2)横向:多台廉价的PC服务器实现大数据处理,分布式,且容量大。

 综上:多服务器集群是NOSQL处理大数据的物理基础架构。分布式是nosql的核心技术思想。

12、nosql数据库分布式管理不同服务器数据

   常见的基于主(Master)/从(Slave)服务的分布式软件系统。

      

  Master主机的作用:

  1.承担客户请求处理    2.给不同的Slave分配数据处理任务     3.负责Slave的协调一致等任务,比如给所有slave注册等。

 Slave主要的作用:

  1.接收传送到本地的数据   2.数据存储和计算并将结果返回。在这个过程中,会存生诸多的问题。

13、帽子定理:

  1.一致性,同步数据复制功能   

  2.可用性,随时操作   

  3.分区容错性,随时满足读的能力

       帽子定理被证明在分布式下,如果发生故障,只能满足两点:如进行更改,要保证一致性,就要拒绝更新;如进行更改,满足了可用性,但是不满足一致性;当读取信息,只能读一个节点,满足了分区容错性和可用性,但是无法保证一致性。

14、从12、13可以得出,帽子定理可以确定,网络系统出问题是不可避免的。例如:网线掉了,宕机等,就必须考虑帽子定理,但无法全部满足,不然就完美了,和没故障一样了。 所以解决帽子定理问题,nosql分布式要具备完整的出错自适应功能;解决帽子定理中的问题必须快速查找,所以用分布式软件系统进行辅助管理,具备分布式性能监管功能。

15、综上,软件实现技术比较:

  1.nosql比trdb存储结构更加简单

  2.引入了分布式技术架构(需要完整的出错自适应功能、具备分布式性能监控功能)

  3.事务: trdb使用acid;nosql用base;处理的数据类型也不一样

  4.sql标准是trdb学习成本低,但是nosql还没有统一=

  5.分析技术:trdb受服务器的物理性能极限和投入产出不合理,发展缓慢;nosql发展非常快,比如生态hadoop大数据技术就是在nosql的技术支持下进行大数据分析。

Nosql数据存储模式

16、键值数据存储模式 

  键值数据库是一类轻量级结合内存处理为主的NoSQL数据库。轻量级主要是存储数据结构简单,本事规模很小,作为内存或者SSD为数据存储,是为了更好的对大数据进行处理,提高速度。

  键值数据库,键(KEY)--值(VALUE)都必须唯一,检索和查找的时候就快,将这些数据周期性的存到磁盘中。但是单机存储有限、内存有限,所以引入分布式处理方式。唯一性和分布式处理都是键值数据存储的基本特征之一。

  键:唯一索引值得作用,键的内容越多,占用更多的内存开销,计算带来更大的运行负担。键可以任意类型,具体以说明书为准。

  值:任意类型,通过键来获取。

  命名空间:由键值对所构成的集合,通常是一类键值对数据的集合,具有唯一性。

  桶:键值数据库和桶是一个意思。

  操作方式:get      put   delete

  最后键值数据库局限于两个数据集之间的有限计算,如Redis里面的交、并、补集运算。

17、文档数据存储模式

  文档数据存储模式也是对磁盘读写的,去掉了一些严格的规则,读写更快。存储数据也是按照“键值对”的形式存放。

  基本构成:

  1)键值对

  (1)基本键值对,键和值都是基本数据类型。

  (2)带结构键值对,有值是数组或者嵌入文档的

  (3)多形结构的键值对

    2)文档

     文档是由键值对所构成的有序集。json和xm最常见。 

    3)集合

    集合由若干条文档构成的对象。一个集合对应的文档应该具有相关性。

       4)数据库

    文档数据库包含若干个集合,在进行数据操作前,指明数据库名。

  基本操作方式:Insert 、Select、Update、Remove

  优点:简单、相对高效、文档格式处理、查询功能强大、分布式处理

  缺点:缺少约束、数据出现冗余、相对键值数据库低效

18、以上两种对应学习的数据库为键值数据库Redis、文档数据库MongoDB。

MongoDB数据库介绍

  MongoDB是一款开源、跨平台、分布式,具有大数据处理能力的文档存储数据库。数据库默认的引擎是基于WiredTiger,基于磁盘读写存储引擎。 

        这里主要是基于Windows, 安装完成后,如图所示:

  

   1) mongod.exe 是MongoDB最核心的服务器数据库管理软件,统称为数据库服务器。

  2)  mongo.exe,客户端shell运行支持程序。

 启动:MongoDB

  启动命令:进入bin目录:mongod -dbpath "f:mongodbdatadb"

  进入交互命令:mongo     

  配置开机自启动:进入bin目录:mongod --dbpath "f:mongodbdatadb" --logpath  "f:mongodbdatalogmongodb.log"  --install    --serviceName "MongoDB"; 接着输入 net start MongoDB

  关闭自启动:net  stop  mongodb  ,mongod --dbpath "f:mongodbdatadb" --logpath  "f:mongodbdatalogmongodb.log"  --install    --serviceName "MongoDB";

数据库建立基本规则

  在MangoDB数据库初始安装完成后,默认的数据库是test。

  admin数据库:一个权限数据库,如果创建用户的时候将该用户添加到admin数据库中,那么该用户就自动继承了所有数据库的权限。

       local数据库:这个数据库永远不会被负责,可以用来存储本地单台服务器的任意集合。

  config数据库:当MongoDB使用分片模式,config数据库在内部使用,用于保存分片的信息。(分片模式:将数据存储划分为一组水平分区或者分片。这样可以存储和采访大量数据时提高可伸展性。)

  test数据库:默认数据库,可以操作各种信息,包括测试。

  自定义数据库:需要建立的业务数据库。

  相关命令:

    use  数据库名:有则连接,没有则创建。

    show  dbs:  查看数据库,新建数据库不会显示,没有数据

    统计某个数据库信息:db.stats()

    删除某个数据库:db.dropDatabase()

    查看当前数据库下的集合名称:getCollectionNames()

    查看用户角色:show  roles

MongoDB基本操作

  db.Collection命令函数,为经典的shell专用操作命令。

  插入:db.connection.insert()、db.connection.insertOne()、db.connection.insertMany()

  查询:db.collection_name.find()

  为了好看,提供pretty()方法:

  

   更新:db.collection.update()

    删除:db.collection.remove()

   索引:MongoDB数据库自动为集合_id建立唯一索引,是基于B-tree数据结构及对应算法形成。若有新插入了集合文档记录,则会引起索引重新排序。索引的建立是为了提高查询速度。

    db.collection.createIndex()

  

    

  

  

 

原文地址:https://www.cnblogs.com/dangjingwei/p/14226773.html