zoukankan      html  css  js  c++  java
  • 非关系型数据库和关系型数据库有哪些区别?

    关系型数据库和非关系型数据库在使用场景上差别比较大,所以并不存在孰强孰弱,只有结合自身的业务特点才能发挥出这两类数据库的优势,下面说说这两类数据库的一些特点:

    首先一般非关系型数据库是基于CAP模型,而传统的关系型数据库是基于ACID模型的

    1. 数据存储结构: 首先关系型数据库一般都有固定的表结构,并且需要通过DDL语句来修改表结构,不是很容易进行扩展,而非关系型数据库的存储机制就有很多了,比如基于文档的,K-V键值对的,还有基于图的等,对于数据的格式十分灵活没有固定的表结构,方便扩展,因此如果业务的数据结构并不是固定的或者经常变动比较大的,那么非关系型数据库是个好的选择

    2. 可扩展性 传统的关系型数据库给人一种横向扩展难,不好对数据进行分片等,而一些非关系型数据库则原生就支持数据的水平扩展(比如mongodb的sharding机制),并且这可能也是很多NoSQL的一大卖点,其实象Mysql这种关系型数据库的水平扩展也并不是难,即使NoSQL水平扩展容易但对于向跨分片进行joins这种场景都没有什么太好的解决办法,不管是关系型还是非关系型数据库,解决水平扩展或者跨分片Joins这种场景,在应用层和数据库层中间加一层中间件来做数据处理也许是个好的办法

    3. 数据一致性 非关系型数据库一般强调的是数据最终一致性,而不没有像ACID一样强调数据的强一致性,从非关系型数据库中读到的有可能还是处于一个中间态的数据,因此如果你的业务对于数据的一致性要求很高,那么非关系型数据库并不一个很好的选择,非关系型数据库可能更多的偏向于OLAP场景,而关系型数据库更多偏向于OLTP场景

  • 相关阅读:
    [转]Apache Doris资料汇总
    [算法]最小差值
    如何在Mac上配置iTerm2以及给ITerm2配置lrzsz
    [算法]关于位运算
    [算法]LeetCode 152:乘积最大子序列
    [算法]LeetCode 120:三角形最小路径和
    奇淫巧技之程序启动后在进程列表中隐藏密码等关键信息
    真机调试时遇到“Could not launch *** process launch failed: Security”的解决办法
    Objective-C的 KVC和KVO
    开始python学习了
  • 原文地址:https://www.cnblogs.com/supermarrio/p/13229550.html
Copyright © 2011-2022 走看看