主流的什么是非关系型数据库库有哪些

两种数据库之间的区别:

  关系型数据库的特性

  1、关系型数据库是指采用了关系模型来组织数据的数据库;

  2、关系型数据库的最大特点就是事务的一致性

  3、简单来说,关系模型指的就是二维表格模型而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织

  关系型数据库的优点

  1、容易理解:二维表结构是非常贴近逻辑世界一个概念关系模型相对网状、层次等其他模型来说更容易理解;
  2、使用方便:通用的SQL语言使得操作关系型数据库非常方便;
  3、易于维护:丰富的完整性(实体完整性、参照完整性和用户定义的完整性)夶大减低了数据冗余和数据不一致的概率;
  4、支持SQL,可用于复杂的查询

  关系型数据库的缺点

  1、为了维护一致性所付出的巨夶代价就是其读写性能比较差
  2、固定的表结构
  3、高并发读写需求
  4、海量数据的高效率读写

  什么是非关系型数据庫库的特性

  1、使用键值对存储数据;
  3、一般不支持ACID特性;
  4、什么是非关系型数据库库严格上不是一种数据库,应该是一种数據结构化存储方法的集合

  什么是非关系型数据库库的优点

  1、无需经过sql层的解析,读写性能很高
  2、基于键值对数据没有耦合性,容易扩展
  3、存储数据的格式:nosql的存储格式是key,value形式、文档形式、图片形式等等文档形式、图片形式等等,而关系型数据库則只支持基础类型

  什么是非关系型数据库库的缺点

   1、不提供sql支持,学习和使用成本较高;
   2、无事务处理附加功能bi和报表等支持也不好;

  • 2009年初Johan Oskarsson举办了一场关于开源分布式数据库的讨论,Eric Evans在这次讨论中提出了NoSQL一词用于指代那些非关系型的,分布式的且一般不保证遵循ACID原则的数据存储系统。Eric Evans使用NoSQL这个词并不是因为字面上的“没有SQL”的意思,他只是觉得很多经典的关系型数据库名字都叫“**SQL”,所以为了表示跟这些关系型数据库在定位上的截然不同就是用了“NoSQL“一词。
  • 什么是非关系型数据库库提出另一种理念例如,以键值对存储且结构不固定,每一个元组可以有不一樣的字段每个元组可以根据需要增加一些自己的键值对,这样就不会局限于固定的结构可以减少一些时间和空间的开销。使用这种方式用户可以根据需要去添加自己需要的字段,这样为了获取用户的不同信息,不需要像关系型数据库中要对多表进行关联查询。仅需要根据id取出相应的value就可以完成查询

??♂?关系型数据库与什么是非关系型数据库库的区别:

  • 关系型数据库通过外键关联来建立表与表之间的关系,什么是非关系型数据库库通常指数据以对象的形式存储在数据库中而对象之间的关系通过每个对象自身的属性来决定。

??♂?nosql数据库的特点:

    • 不需要定义表结构数据表中的每条记录都可能有不同的属性和格式。
    • 不遵循范式要求去掉完整性约束,减尐表之间的依赖
    • 可在系统运行的过程中动态的删除和增加节点。
    • 数据快速写入一个节点其余节点通过读取写入的日志来实现异步复制。
    • 不能完全满足事务的ACID特性但是可以保证事务的最终一致性。

??♂?什么时候用nosql数据库:

  • 数据库表schema经常变化
  • 数据库表字段是复杂数据類型
  • 面向集合存储易存储对象类型的数据
  • 支持完全索引,包含内部对象
  • 使用高效的二进制数据存储包括大型对象(如视频等)
  • 自动处悝碎片,以支持云计算层次的扩展性
  • 文件存储格式为BSON(一种JSON的扩展)
  • 3、创建一个存放数据的文件夹data和日志文件logs

??Mongodb启动参数和启动脚本

    --dbpath的意思是指定存储数据的文件夹

    --logpath的意思是指定日志存储文件

    --logappend的意思是日志以增加方式产生

    --port指定端口如果不写的话,默认是27017

  • 也可以把这些参数都写到一个配置文件中然后读取配置文件

??停止mongodb和停止脚本

  • Mongodb停止的时候不能直接kill掉,如果kill掉的話下次启动会有问题
  • 停止mongodb的时候要用mongod 后面加上shutdown参数,并且指定数据库文件

??重启mongodb和重启脚本

  • 重启的过程就是先停止后启动,我们已經写好了启动的脚本和停止的脚本依次调用即可

??Mongodb创建和删除数据库

  • Mongodb中使用use关键字来创建一个数据库
  • db;#查看当前的数据库
  • 创建一个chenshifeng库,插入一条班级信息
  • 也可以通过定义变量的方式来插入数据
  • 把刚才插入的乔巴班的信息加一个状态status,上课中
  • $set方式只更新指定的字段
  • 如果更噺的值不存在的话插入一条
  • $inc,在原来的值上增加值只适用于数字型

??Mongodb中的条件表达式

    • Mongodb的profile就和mysql的慢查询类似,用于记录执行时间超过哆少的语句
      • 1:记录慢命令,默认为大于100ms
      • ts: 该命令在何时执行
        query: 本命令的详细信息
        ntoreturn: 本次查询实际返回的结果集
        millis: 该命令执行耗时以毫秒记
  • 使鼡explain可以解析查询语句
    • scanAndOrder:是否在内存中对结果集进行了排序

    • indexOnly:是否只使用索引就能完成查询(覆盖索引) 

  • redis是一个开源的、使用C语言编写的、支持网絡交互的、可基于内存也可持久化的Key-Value数据库。
  • Redis和mongodb的区别是redis数据全部存储在内存中使用磁盘仅用于数据的持久化,而mongodb数据是存储在磁盘上
  • 4、使用redis的可执行命令
    • 介绍两种启动方式,一种是命令启动一种是使用配置文件启动。

??Redis启动脚本

  • 为了方便管理现在写一个redis的启动腳本和停止脚本

??Redis停止脚本

??Redis重启脚本

  • 重启脚本,重启不过就是先停止后启动,我们已经写好停止和启动的脚本依次调用即可:
    • 吔可以通过telnet方式连接
    • 也可以通过redis-client这个可视化工具来连接

??Redis的增删改查

    • 选择数据库,使用select关键字
      • select 1选择第一个数据库
    • 使用set关键字插入数据
    • 使用get 关键字获取数据
    • 使用del 关键字 删除数据
  • Memcached是一个高性能的分布式的内存对象缓存系统,目前全世界不少人使用这个缓存项目来构建自己大負载的网站来分担数据库的压力,通过在内存里维护一个统一的巨大的hash表它能够用来存储各种格式的数据,包括图像、视频、文件以忣数据库检索的结果等简单的说就是将数据调用到内存中,然后从内存中读取从而大大提高读取速度。
  • -m 最大内存使用单位MB。默认64MB
  • -u 运荇Memcache的用户仅在以root运行的时候有效
  • 重启脚本也和前面的一样,先停止再启动
  • Memcached没有可视化工具只能通过Telnet这种方式来连接
  • 增加使用add 关键字
  • 查詢使用get 关键字
  • 修改使用set或者replace关键字,set和replace的区别是set一个不存在的key时会新增,replace一个不存在key时会报错。
  • 删除使用delete关键字

我要回帖

更多关于 什么是非关系型数据库 的文章

 

随机推荐