欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Nosql=Not Only SQL

程序员文章站 2022-06-30 12:22:56
Nosql(非关系型数据库)数据类型键值(Key-Value)存储数据库这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.列存储数据库这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它...

Nosql(非关系型数据库)

  • 数据类型

    键值(Key-Value)存储数据库
    这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。[3] 举例如:Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

    列存储数据库
    这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

    文档型数据库(BSON)
    文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

    图形(Graph)数据库
    图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。[2] 如:Neo4J, InfoGrid, Infinite Graph.

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

Nosql=Not Only SQL

CAP原理: CAP+BASE

  • 传统的ACID
    A(Atomicity)原子性
    C(Consitency)一致性
    I(Isolation)独立性
    D(Durablility)持久性

  • CAP
    C:Consitency(强一致性)
    A:Availability(可用性)
    P:Parition tolerance(分区容错性)

  • CAP理论的核心:3进2

    一个分布式系统不可能同时很好的满足一致性,可用性和分区容错性这三个需求,最多只能同时较好的满足两个。分区容忍性是我们必须需要实现的。

    所以我们只能在一致性和可用性之间进行权衡,没有NoSQL系统能同时保证这三点。

    CA 传统Oracle数据库
    AP 大多数网站架构的选择
    CP Redis、Mongodb

    因此,根据 CAP 原理将 NoSQL 数据库分成了满足 CA 原则、满足 CP 原则和满足 AP 原则三 大类:

    CA - 单点集群,满足一致性,可用性的系统,通常在可扩展性上不太强大。
    CP - 满足一致性,分区容忍必的系统,通常性能不是特别高。
    AP - 满足可用性,分区容忍性的系统,通常可能对一致性要求低一些。

  • BASE
    BASE就是为了解决关系数据库强一致性引起的问题而引起的可用性降低而提出的解决方案。

    BASE其实是下面三个术语的缩写:
    基本可用(Basically Available)
    软状态(Soft state)
    最终一致(Eventually consistent)

    它的思想是通过让系统放松对某一时刻数据一致性的要求来换取系统整体伸缩性和性能上改观。为什么这么说呢,缘由就在于大型系统往往由于地域分布和极高性能的要求,不可能采用分布式事务来完成这些指标,要想获得这些指标,我们必须采用另外一种方式来完成

分布式系统

  • 分布式系统(distributed system)

    由多台计算机和通信的软件组件通过计算机网络连接(本地网络或广域网)组成。分布式系统是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。分布式系统可以应用在在不同的平台上如:Pc、工作站、局域网和广域网上等。

  • 简单来讲:

    1分布式:不同的多台服务器上面部署不同的服务模块(工程),他们之间通过Rpc/Rmi之间通信和调用,对外提供服务和组内协作。

    2集群:不同的多台服务器上面部署相同的服务模块,通过分布式调度软件进行统一的调度,对外提供服务和访问。

本文地址:https://blog.csdn.net/weixin_43518825/article/details/107664585