Nosql的介绍和sql分类

144 阅读5分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第6天,点击查看活动详情

我们都知道mysql是关系型数据库,那么有没有一种非关系型的数据库呢?

有的:随着 web2.0 互联网大诞生,传统的关系型数据库很难完美的应对 web2.0 时代,非关系型、分布式数据库存储得到了快速发展,它们不保证关系数据库的 ACID 特性。

  • ACID,指数据库事务正确执行的四个基本要素的缩写
  • A=Atomicity=原子性:即操作要么不做,要么全做
  • C=Consistency=一致性:事务前后数据的完整性必须保持一致。
  • I=Isolation=隔离性:事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
  • D=Durability=持久性:持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

我们知道关系型是表格,非关系型是什么存储?

NoSQL 一般都是使用 key-value 格式存储,除此之外还有其他的文档存储、列存储、图型数据库、xml 数据库等。

Nosql特点

  • 大数据量高性能

    现在的网站需要根据用户的个性化信息实时生成动态页面和提供动态信息,对于数据库并发负载非常高,关系数据库应付每秒上万次写数据请求,硬盘 IO 就无法承受了。还有一些 web 网站(比如:论坛、博客、SNS、微博等)交互频繁的应用,Cache 性能不高。像遇到的这些问题,NoSQL 都可以帮助我们很好的解决这些问题(其中 Redis 一秒可以写 8 万次,读 11 万次,NoSQL 的缓存记录级,是一种细粒度的缓存,性能会比较高)。

  • 多样型的数据模型

    在关系型数据库里,如果对一个数据量非常大的表,进行增删字段是一件噩梦。而 NoSQL 不需要事先设计数据库,可以随时存储自定义的数据格式。

  • 易扩展

    NoSQL 数据库都没有关系型的特性。数据之间无关系,各个数据之间都是独立设计的,这样易于扩展。

  • 高可用

    NoSQL 在不太影响性能的状况,就能够方便的实现高可用的架构。比如 HBase 模型经过复制模型也能实现高可用。

数据库分类

TRDB

什么是 TRDB 数据库?

TRDB即传统关系型数据库。传统关系型数据库技术设计之初是基于单机集中管理数据理念而进行的,受单机(一般是服务器)物理性能的限制。关系数据库采用了关系模型来组织数据的数据库,其以行和列存储数据,一系列的行和列组成了表,一组表又组成了数据库。

TRDB 数据库产品有 Oracle、MySQL、SQL Server、Access、Sybase、DB2 等,其中 Oracle、MySQL 在开发中使用的较多。

这类数据库有以下特点:

  • 强存储方式:采用表的存储方式,数据以行和列方式进行存储,读和写都很方便。数据库表、行、列的建立,都需要预先严格定义,并进行相关属性约束。
  • 查询方式:采用结构化查询语言(即 SQL)来对数据库进行查询。
  • 事务性:通过事务的四大特性(ACID),可以满足对事务要求较高或者需要进行复杂数据查询的数据操作。关系型数据库十分强调数据的强一致性,可以控制事务原子性细粒度,并且一旦操作有误,可以立马回滚。
  • 处理方式:主要采用单机集中式处理(CP,Centralized Processing)方式。

那么关系型的缺陷是什么?

TRDB 数据库技术的产生,没有考虑过大数据下的应用需要,适用范围以政府、企业内部业务数据应用为主, 面对互联下的大数据环境,直接使用的话,会存在速度、存储、数据多样性等方面的技术瓶颈

NOSQL

image.png

特点:- 使用弱存储模式技术

  • 没有采用 SQL 技术标准来定义和操作数据库
  • 采用弱事务保证数据可用性及安全性(或根本没有事务处理机制)
  • 主要采用多机分布式处理(DP,Distributed Processing)方式

NEWSQl

NewSQL 是对现代一类关系型数据库的统称,旨在使用技术来结合 TRDB 和 NoSQL 中的优点,实现在大数据环境下的数据存储和处理。它既可以实现 NoSQL 数据库快速、有效的大数据处理能力,又可以实现 TRDB 数据库 SQL、事务处理等功能

现在使用比较多的 NewSQL 产品有这些:PostgreSQL、SequoiaDB、SAPHANA、MariaDB、VoltDB、Clustrix 等。目前大多数 NewSQL 数据库都是有专用软件或仅使用于特定场景,很大程度上限制了新技术的普及和应用

特点:

  • 高可扩展性
  • 支持 SQL 语句
  • 支持 ACID 一致性约束
  • 高可用性
  • 支持 Hadoop 集成等

TRDB、NoSQL 及 NewSQL 这三个数据库都是不同时期,针对不同的业务场景出现的不同的产物,应用领域各有侧重。