博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
NoSQL一些基础
阅读量:5308 次
发布时间:2019-06-14

本文共 2231 字,大约阅读时间需要 7 分钟。

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,便于运行时维护

转载于:https://www.cnblogs.com/wn398/archive/2013/04/02/2997065.html

你可能感兴趣的文章
解决升级系统导致的 curl: (48) An unknown option was passed in to libcurl
查看>>
Java Session 介绍;
查看>>
spoj TBATTLE 质因数分解+二分
查看>>
Django 模型层
查看>>
dedecms讲解-arc.listview.class.php分析,列表页展示
查看>>
Extjs6 经典版 combo下拉框数据的使用及动态传参
查看>>
【NodeJS】http-server.cmd
查看>>
研磨JavaScript系列(五):奇妙的对象
查看>>
面试题2
查看>>
selenium+java iframe定位
查看>>
P2P综述
查看>>
第五章 如何使用Burp Target
查看>>
Sprint阶段测试评分总结
查看>>
sqlite3经常使用命令&语法
查看>>
linux下编译openjdk8
查看>>
【python】--迭代器生成器装饰器
查看>>
Pow(x, n)
查看>>
安卓当中的线程和每秒刷一次
查看>>
每日一库:Modernizr.js,es5-shim.js,es5-safe.js
查看>>
ajax连接服务器框架
查看>>