zoukankan      html  css  js  c++  java
  • 关系型数据库和非关系型数据库

    什么是关系型数据库

    关系数据库是数据项之间具有预定义关系的数据项的集合。这些项被组织为一组具有列和行的表。表用于保存有关要在数据库中表示的对象的信息。表中的每列都保存着特定类型的数据,字段存储着属性的实际值。表中的行表示一个对象或实体的相关值的集合。表中的每一行可标有一个称为主键的唯一标识符,并且可使用外键在多个表中的行之间建立关联。可以通过许多不同的方式访问此数据,而无需重新组织数据库表本身。

    • 关系型数据库以行和列的形式存储数据,行和列的形式被称为表,表是由一组相关实体组成的集合。一组表组成了数据库。
    • 表中的一行称为关系的一个元组,用来存储事物的一个实例。
    • 表中的一列称为关系的一个属性,用来描述实体的某一特征。
    • 表内字段的组成一样,即便某个数据不需要某个字段,系统也会强加上这个字段及默认值,这种结构便于表与表之间进行操作,但它也是关系数据库性能瓶颈的一个因素。

    什么是非关系型数据库

    非关系型数据库即我们常说的NoSQL数据库。NoSQL的存储格式是key-value形式,可以像关系型数据库那样存储基础数据类型的数据,也可以存储集合、对象等等。NoSQL虽然性能比较高,但是并不支持事物,也不能进行联表查询,一般用于较大规模数据的存储。

    • 非关系数据库以键值对存储
    • 结构不固定,每一个元组可以有不一样的字段
    • 每个元组可以根据需要增加或减少一些自己的键值对
    • 不会局限于固定的结构,减少一些时间和空间的开销

    关系型数据库和非关系型数据库优缺点

    关系型数据库发展了很长一段时间,拥有非常成熟的体系。所占份额也在逐渐增加。而且支持事物的操作,保证数据的一致性,可以通过SQL语句完成复杂的操作。但是使用过程中当数据量到达一定程度时,关系型数据库的效率会有明显的下降。一个复杂的查询操作,一系列的组合索引都会消耗非常多的内存空间,此时我们需要对数据库进行读写分离操作,或者将数据库结构进行拆分(水平拆分垂直拆分)将请求压力分担在不同的库中。

    • 垂直拆分是指将一张表拆分成多个表,表之间通过主键进行关联。

    • 水平拆分是按照某种规则拆分成多个表,比如通过用户角色进行拆分

    • 读写分离:所谓读写分离就是讲读操作(查询数据)和写操作(插入&更新)指向不同的数据库节点,他们中间通过某种机制实现数据的同步,如binlog。实际的应用中大部分压力还是来自读操作,所以主要是一主多从的架构。

    非关系型数据库发展的这几年,深受人们的喜爱。免费开源、成本低、部署简单、非结构化存储等等明显的优势。而且它对海量数据处理能力非常强,内存级数据库,查询速度也非常快。存储的数据格式比较丰富,易于扩展,不能使用sql进行复杂的查询。


    NoSQL数据库适用场景

    • 数据模型比较简单;
    • 需要灵活性更强的IT系统;
    • 对数据库性能要求较高;
    • 不需要高度的数据一致性;
    • 对于给定key,比较容易映射复杂值的环境。

    参考文献

    1. 关系数据库是什么?_关系型数据库有哪些-AWS云服务
    2. 关系型数据库和非关系型数据库
    3. 【关系型数据库】和【非关系型数据库】总结!
    4. NoSQL_百度百科
    Good Good Write Bug, Day Day Up
  • 相关阅读:
    关于可控进程数的PHP多进程以及信号控制
    编译安装PHP遇到的问题
    MySQL数据的导入导出
    关于svn的dump和load命令
    Nginx多域名的泛解析
    kafka
    JavaScript
    失误与经验
    Hadoop
    Storm
  • 原文地址:https://www.cnblogs.com/liyihua/p/14482361.html
Copyright © 2011-2022 走看看