• NoSQL一些基础


    NoSQL(Not only SQL),泛指非关系型数据库
    nosql-database.org对NoSQL有一个较为全面的解释,指出NoSQL的特点:非关系、分布式、开源、水平扩展、schema-free、easy replication support、simple API、最终一致性(不支持ACID)、支持海量数据(Huge Data)

    ACID&BASE思想
    ACID模型侧重高一致性+数据可靠性,牺牲可用性

    Base:
    Basically Available(基本可用):支持分区失败(e.g.sharding 碎片划分数据库)
    Soft state(软状态):状态可以有一段时间不同步,异步
    Eventually consistent(最终一致):最终数据是一致的就可以了,而不是时时高一致。
    BASE思想反ACID,完全不同与ACID模型,牺牲高一致性,获得可用性和可靠性。

    目前存在的NoSQL数据模型在致分为四类:Key-Value(键值对)、Column-Oriented(列式)、Document-Oriented(文档型)、Graph-Oriented(图形)。

    NoSQL需要支持良好的扩展性,当系统容量不足或负载过重时,可
    随时添加节点而不影响现有业务,系统自动完成数据均衡。而集群
    中机器之间需要通讯,以了解彼此的状态信息。通常有两种架构
    Master/Slave
    类BigTable的系统均采用Master/Slave架构
    Master负责整个集群的命名空间管理、集群状态监控、负载均衡等
    Slave来负责存储实际的数据,并定时的向Master报告自己的状态
    信息
    P2P
    类Dynamo的系统均采用P2P架构,与Master/Slave不同,它是完
    全去中心化,不存在Master,各个节点是对等的关系,gossip

    Key-Value
    数据模型:简单的键值对
    典型应用:
    Cache
    高读写的简单存储
    优势:
    简单、读写速度快
    劣势:
    存储数据缺少结构化,只能存储Key-Value对
    复杂的结构需要上层应用处理

    Column-Oriented
    数据模型:BigTable式表格,稀疏矩阵
    典型应用:
    海量数据存储与分析
    优势:
    查找列速度快,可扩展性强,更容易进行分布式扩展
    劣势:
    功能相对局限,对于跨表的join性能不高

    Document-Oriented
    数据模型:灵感来源于Lotus Notes,JSON-like
    典型应用:
    Web应用
    优势:
    数据结构要求不严格,灵活
    劣势:
    查询性能不高,而且缺乏统一的查询语法

    Graph-Oriented
    数据模型:图模型
    典型应用:
    基于网络的应用,地理位置信息(用作GIS)、社交网络(SNS)、
    网络拓扑等
    优势:
    可以利用图结构相关算法
    劣势:
    需要对整个图做计算才能得出结果,不容易做分布式的集群方案

    大数据的特征
    3V——Volume(海量)、Variety(多样)、Velocity(实时)

    海量——数据量巨大,对TB、PB数据级的处理, 已经成为基本配置。

    多样——处理多样性的数据类型,结构化数据和非结构化数据,能处理Web数据,能处理语音数据甚至是图像、视频数据。

    实时——在客户每次浏览页面,每次下订单的过程中都存在,都会需要对用户进行实时的推荐,决策已经变得实时

    大数据时代下的系统需求

    High performance –高并发读写的需求
    高并发、实时动态获取和更新数据

    Huge Storage –海量数据的高效率存储和访问的需求
    类似SNS网站,海量用户信息的高效率实时存储和查询

    High Scalability && High Availability –高可扩展性和高可用性的需求
    需要拥有快速横向扩展能力、提供7*24小时不间断服务

    NoSQL的优势
    易扩展
    NoSQL数据库种类繁多,但是一个共同的特点都是去掉关系数据库的关系型特性。数据之间无关系,这样就非常容易扩展。也无形之间,在架构的层面上带来了可扩展的能力。甚至有多种NoSQL之间的整合。

    灵活的数据模型
    NoSQL无需事先为要存储的数据建立字段,随时可以存储自定义的数据格式。而在关系数据库里,增删字段是一件非常麻烦的事情。如果是非常大数据量的表,增加字段简直就是一个噩梦。

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

    大数据量,高性能
    NoSQL数据库都具有非常高的读写性能,尤其在大数据量下,同样表现优秀。这得益于它的无关系性,数据库的结构简单。

    某些与NoSQL匹配的需求如下:

    快速应用开发
    — 变化的市场需求
    — 变化的数据需求
    可伸缩性
    – 未知的用户需求
    – 访问、添加和更新数据使吞吐量持续增长而带来的需求
    一致的性能
    – 低响应时间,以便支持更好地用户体验
    – 高吞吐量,以便处理快速地增长
    运行可靠性
    – 高可用性,能够优雅地处理失效并尽量减小对应用的影响
    – 内置监控API,便于运行时维护

  • 相关阅读:
    idea 设置默认的maven
    IDEA中Tomcat部署时war和war exploded区别
    所谓的SaaS服务到底是什么?
    java8 Lambda表达式
    java8 :: 用法 (JDK8 双冒号用法)
    idea 本地调试,修改代码,代码自动生效
    nacos配置中心demo
    Logparser 的用法
    android软键盘的一些控制 转来的,格式有点乱
    TranslateAnimation 使用详解
  • 原文地址:https://www.cnblogs.com/wn398/p/2997065.html
Copyright © 2020-2023  润新知