SQL与NoSQL用法分析

SQL与NoSQL用法分析

要明白什么时候该用NoSQL或者是SQL,首先需要理解SQL
在大多数的计算架构中,有两个存储区域:

  1. 速度快但是数据易丢失的“主存储器”(main memory),一般指内存,它的特点如下
  • 空间有限
  • 易挥发
  1. 存储量大但速度较慢的“后备存储器”(backing store),有两种存储方式
  • 文件系统,如许多生产力应用程序(productivity application,比如文字处理软件)
  • 数据库,大多数企业级应用程序

而企业级应用程序居于一个丰富的生态系统中,它需要与其他应用程序协同工作。不同的应用程序经常要使用同一份数据,而且某个应用程序更新完数据之后,必须让其他应用程序知道这份数据已经改变了,那么如何在不同的应用程序中做到数据共享呢?关系型数据库以近乎标准的方式提供了数据模型。尽管各种关系型数据库之间仍有差异,但其核心机制相同,不同厂商的SQL方言相似,因此利用关系型数据库很容易做到数据共享。

然而关系型数据库基于关系代数(relational algebra),把数据组织成 “关系”(relation)和“元组”(tuple)。元组是由“键值对”(name-value pair)构成的集合,而关系则是元组的集合,SQL操作所使用及返回的数据都是“关系”,元组不能包含“嵌套记录”(nested record)或“列表”(list) 等任何结构,而以嵌套的方式去描述面向对象的世界,却是十分常见的.

阻抗失谐

因此关系型数据库的问题在于关系模型和内存中的数据结构之间存在差异。这种现象通常称为“阻抗失谐”。

  • 如果在内存中使用了较为丰富的数据结构,那么要把它保存到磁盘之前,必须先将其转换成“关系形式。于是就发生了“阻抗失谐”:需要在两种不同的表示形式之间转译,造成了效率的降低。
  • 而且因为一个表只能存储相同类型的元组,则一个现实生活中的对象,会被拆分到多个表中,由此,也会带来许多连接操作,影响效率
    示例图如下:
    在这里插入图片描述

NoSQL的特点

  • 不使用关系模型
  • 在集群中运行良好
  • 关系型数据库使用ACID事务来保持整个数据库的一致性,而这种方式本身与集群环境相冲突
  • NoSQL数据库为处理并发及分布问题提供了众多选项
  • 不用事先修改结构定义,即可自由添加字段了,这在处理不规则数据和自定义字段时非常有用

NoSQL适用场景

  • 对数据高并发的读写
  • 海量数据的读写
  • 对数据高可扩展性的读写

NoSQL不适用场景

  • 需要事务支持
  • 基于sql的结构化查询存储,处理复杂的关系,需要即席查询。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值