NoSql基础知识
一、为什么要有NoSql
关系型数据库在三个方面存在不足,或者说,比不上NoSQL:
1、大量数据的写入处理
这里说的关系型数据库不擅长大量数据写入,并不是说关系型数据库在进行大批量数据插入的时候,比不上NoSql快,而是说,关系型数据库不擅长将这么多的数据写入到分布式服务器里面去!因为大量的数据,往往意味着不可能只存在一台服务器上,应该是分布式的,分散地存储在多台服务器上。而关系型数据库,因为着重表与表之间的关联,需要将所有表放在同一台服务器中,所以有人(淘宝的数据库专家)说,目前的关系型数据库本质上是单机系统。而NoSql因为表之间并无关联,因此是天然适应分布式的,分布式写入,当然要比关系型数据库强。
好比关系型数据库,为了应付大量的数据存储,由一台服务器分为两台服务器,那么就有两种方案:
1)二元数据库
两台服务器的表都一样,写入的时候,可以将数据分成两份,每台写一半,然后再互相更新,同步。那么同步之前,有一致性问题。
2)数据库分割
将一部分表放在服务器A,另一部分表放在服务器B。同步问题是没有了,但如果这些表要关联查找呢?大概只能在应用程序层面进行了。
看上去,这两种方案都很折腾。
2、对存在大量数据的表做索引或进行表结构变更
关系型数据库的表结构很严谨,对有数据的表做表结构变更,或者索引,那么会有一个锁定的问题,数据越多,锁定问题越严重。如果是一个使用中的生产数据库,也许是不可以接受的。
而NoSql,因为其设计和结构不同于关系型数据库,比如mongoDB,文档型,每一条记录都是一个文档,文档里存什么都可以,不存在着所谓固定的文档格式,也就不存在什么表结构变更的问题(MongoDB没有所谓表结构)。关系型数据库,表结构变更,程序和数据库都要改;对MongoDB,改程序就可以了。
至于索引,我还尚不清楚NoSql的索引原理。但如果是键值对型NoSql,则索引都是KEY,没有必要进行变更?
3、没有join的简单查询快速返回结果
查询是关系型数据库的强项,但如果不涉及到join的话,其实NoSql会比它更快?
参考资料:
http://kb.cnblogs.com/page/95676/
二、NoSql的分类
根据数据库的存储种类和特点,可以分为:
1、键值对
代表:memcached,Redis
2、文档型
以mongoDB为代表。比对关系型数据库,集合可看成表,文档可看成记录。每一条记录,都是一个文档。
3、列存储
HBase
4、图存储,对象存储,XML等等
三、如何应用NoSql
NoSql天然分布式,特别有利于数据分散存储,易扩展,高可用,高性能,但不支持事务,如果能与关系型数据库搭配使用,可形成互补。
NoSql的使用方式,大致可分为:
1、以NoSql纯用作内存管理
比如 Redis,临时性或持久性键值存储,性能更超越大名鼎鼎的memcached。
2、以关系型数据库为辅,NoSql为主
以NoSql为数据源,将数据写入NoSql,然后通过复制/同步机制,再将数据同步到关系型数据库里。
好处是简单,灵活,高性能,易扩展。
缺点是有数据同步问题,且技术要求高,因为NoSql缺乏容易使用的复制同步接口。
3、以关系型数据库为主,NoSql为辅
1)NoSql作为镜像
数据同时写入关系型数据库和NoSql,NoSql数据库主要用于读取。这样实现读写分离,可以利用NoSql的高性能来应付大量的查询。
2)数据拆分存储到关系型数据库和NoSql数据库
比如,关系型数据库只存储需要查询的小字段,NoSQL存储所有数据。
这种架构模式把RDBMS和NoSQL的作用进行了融合,各司其职,让关系型数据库专门负责处理擅长的关系存储,NoSQL作为数据的存储。优点是
节省了主数据库(关系型数据库)的IO开销,有利于主数据库的备份和恢复,也使整个架构的性能、扩展性都得到提升。
NoSql基础知识的更多相关文章
- 基于C#的MongoDB数据库开发应用(1)--MongoDB数据库的基础知识和使用
在花了不少时间研究学习了MongoDB数据库的相关知识,以及利用C#对MongoDB数据库的封装.测试应用后,决定花一些时间来总结一下最近的研究心得,把这个数据库的应用单独作为一个系列来介绍,希望从各 ...
- 【RAC】RAC相关基础知识
[RAC]RAC相关基础知识 1.CRS简介 从Oracle 10G开始,oracle引进一套完整的集群管理解决方案—-Cluster-Ready Services,它包括集群连通性.消息和锁. ...
- DataBase MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- HBASE基础知识总结
HBASE基础知识总结 一,概要说明 文章首先回顾HBase 的数据模型和数据层级结构,对数据的每个层级的作用和架构进行了详细阐述:随后介绍了数据写入和读取的详细流程.先把架构图和流程图来坐镇. 架构 ...
- MySQL_基础知识
-----基础知识 1.什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库 2.什么是关系型数据库.主键,外键,索引分别是什么? 关系型数据 ...
- MongoDB基础知识记录
MongoDB基础知识记录 一.概念: 讲mongdb就必须提一下nosql,因为mongdb是nosql的代表作: NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型 ...
- RabbitMQ,Apache的ActiveMQ,阿里RocketMQ,Kafka,ZeroMQ,MetaMQ,Redis也可实现消息队列,RabbitMQ的应用场景以及基本原理介绍,RabbitMQ基础知识详解,RabbitMQ布曙
消息队列及常见消息队列介绍 2017-10-10 09:35操作系统/客户端/人脸识别 一.消息队列(MQ)概述 消息队列(Message Queue),是分布式系统中重要的组件,其通用的使用场景可以 ...
- IM开发基础知识补课(七):主流移动端账号登录方式的原理及设计思路
1.引言 在即时通讯网经常能看到各种高大上的高并发.分布式.高性能架构设计方面的文章,平时大家参加的众多开发者大会,主题也都是各种高大上的话题——什么5G啦.AI人工智能啦.什么阿里双11分分钟多少万 ...
- NoSQL基础学习
NoSQL基础学习 最近学习的第一个Nosql就是Mongodb,为了了解Nosql的基本知识,特地总结,主要是学习Nosql的理论 一.Introduction(介绍) 它是“ Not Only S ...
随机推荐
- 并发编程学习笔记(15)----Executor框架的使用
Executor执行已提交的 Runnable 任务的对象.此接口提供一种将任务提交与每个任务将如何运行的机制(包括线程使用的细节.调度等)分离开来的方法.通常使用 Executor 而不是显式地创建 ...
- sort 及lambda表达式定制排序
void CDrawCircle::OnBnClickedBtnSelectinfo() { // TODO: 在此添加控件通知处理程序代码 UpdateData(TRUE); BeginEditor ...
- std list/vector sort 自定义类的排序就是这么简单
所以,自己研究了一下,如下:三种方式都可以,如重写<,()和写比较函数compare_index.但是要注意对象和对象指针的排序区别. 1.容器中是对象时,用操作符<或者比较函数,比较函数 ...
- 梦想CAD控件安卓界面控制
CAD控件界面上所有元素都可以控制显示或隐藏,下面将逐一介绍详细用法. 设置工具文件 MxFunction.setToolFile 设置工具文件.详细说明如下: 参数 说明 String sFile ...
- dom4j使用方法详解
本文先做知识点的简单介绍,最后附完整案例. 一.解析XML文件 public class Foo { //url为XML文档地址 //自己封装了一个工具类 返回解析完成的document public ...
- java虚拟机(二)--类加载机制和双亲委派模型
一.类的生命周期 加载(Loading).验证(Verification).准备(Preparation).解析(Resolution).初始化(Initialization).使用(Using).卸 ...
- Python自学-2-python解释器
写python源文件,以.py为后缀名 用python解释器去执行.py文件 python解释器 CPython:官方版本,由C语言开发的,下载默认就是这个,使用最广的解释器. 用>> ...
- 真机测试报错ERROR/AndroidRuntime: java.lang.RuntimeException: setParameters failed解决办法
这个错误是和调用相机摄像头相关的. 产生这个错误的原因主要在于代码控制分辨率的显示和真机测试分辨率不一样. 一:解决办法 WindowManager wm = (WindowManager) getS ...
- TWaver GIS制作穹顶之下的雾霾地图
“我不满意,我不想等待,我也不再推诿,我要站出来做一点什么.我要做的事,就在此时,就在此刻,就在此地,就在此生”.自离职央视后,沉寂许久的知名记者.主持人柴静昨日携个人视频新作 <穹顶之下> ...
- P4817 [USACO15DEC]Fruit Feast 水果盛宴
P4817 [USACO15DEC]Fruit Feast 水果盛宴 现在Bessie的饱食度为 00 ,她每吃一个橙子,饱食度就会增加 AA :每吃一个柠檬,饱食度就会增加 BB .Bessie还有 ...