zoukankan      html  css  js  c++  java
  • 第九章 云原生数据架构

    9.1 关系型数据库尚能饭否

       在大数据、NoSQL以及NewSQL等新技术的轮番轰炸后,依然是主流

      9.1.1 优势

        开发优势:SQL查询灵活度非常高,方便的进行联机事务处理。JDBC完善。ORM完善。

                ORM是为了解决 面向对象和关系型数据库阻抗不匹配的问题的:

                           (阻抗不匹配: 比如一个Opprotunity下面有多个LineItems, 面向对象很好表示这种关系,Opp对象下有一个lineitems的List; 但是在关系型数据库中,就有两张表,关联之后才能表示一个Opportunity.)

        运维优势:DBA

        系统优势: 成熟。ACID事务。 在编程中使用事务并非难事,Spring等各类开发框架已经在面向切面层面做的非常好了。

      9.1.2 不足

        单节点的并发访问量受到限制:数据越多,索引深度越深。I/O访问次数多。

        单节点数据承载量受限:

        分布式事务性能衰减严重:将数据库拆分之后,需要使用分布式事务代替本地事务。

    9.2 未达预期的NoSQL

      Not Only SQL,并不是为为了取代关系型数据库。

      9.2.1 键值数据库

        代表是Redis: 在很多情况下当做缓存使用,但同样提供了落盘(磁盘持久化)。通过主键进行查询的场景,Redis效率非常高,但对于内容查询则无能为力。

        redis提供了集群处理能力(3.0之后支持),可以将数据分散到不同的节点,有效解决了单一节点访问量瓶颈。如果数据量过大,导致Redis数据不能全部加载到内存,需要落盘,Redis性能会下降,因此在数据量大的时,将Redis的数据根据主键进行分片是不错的方案。

      9.2.2 文档数据库

      代表是MongoDB:文档模型与面向对象的数据表达式更加接近,它有自由度极高的Schema模型,可以方便地与JSON数据进行映射。

      文档数据数据库的设计理念与关系型数据库的设计理念完全不同,它没有静态定义的表结构,使用文档数据库时,可以灵活地在文档中随意增减属性,嵌入文档和数组。文档数据库设计应用程序是以对象本身为主的,而不是优先考虑数据库表结构如何定义。

      MongoDB查询十分灵活,可以建立索引,提升效率。

      MongoDB在分布式的表现上也远强于关系型数据库,它可以将数据自动分片,并且能够透明化分片之间的负载均衡和失效转移。

      从4.0开始,支持ACID事务,以前是最终一致性。但是ACID还需考察,关键业务不能用。

      9.2.3 列族数据库

      代表是Hadoop, HBase 它是专门用于处理海量数据库的分布式数据库。

      图数据库用于处理图关系的数据库,这里不介绍。

      NOSQL适合于海量数据和高并发的场景,性能强于传统的关系型数据库。

        NOSQL有自己的查询语言,接口标准不统一。无法提供ACID事务能力,不能用于核心系统。

      NOSQL是SQL的补充 而不是代替。 

    9.3 冉冉升起的NewSQL

      9.3.1 新架构

      9.3.2 透明化分片中间件

      9.3.3 云数据库

    9.4 云原生数据库中间件的核心功能

      9.4.1 数据分片

      9.4.2 分布式事务

      9.4.3 数据库治理

       

  • 相关阅读:
    C++的预处理(Preprocess)
    【转】深入分析Sleep(0)与Sleep(1)的区别
    【转】两个算法题,感觉挺有意思
    【转】求一个类的sizeof应考虑的问题
    const关键字总结
    C++11各编译器支持情况对比
    【转】C# 创建window服务
    关于C++中char型数组、指针及strcpy函数的细节观察
    用过的shell命令——持续更新
    初试rails 3.1
  • 原文地址:https://www.cnblogs.com/liufei1983/p/11519243.html
Copyright © 2011-2022 走看看