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 ...
随机推荐
- 在Resource中使用x:Bind
Build2015上,MS热情高涨的演示了x:Bind,一种新的Binding方式,新的方式有如下优点: 1更好的性能(内存占用,CPU占用) 2BuildTime的Binding 具体在Channe ...
- HDU_1561_The more, The Better_树型dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1561 The more, The Better Time Limit: 6000/2000 MS (J ...
- Springboot + SLF4j + Log4j2 打印异常日志时,耗时要5-6秒
1.使用jps -l 查看springboot项目的进程ID 2.使用命令jstack -l 进程ID > log.txt 打印堆栈信息到文件,内容如下: "http-nio-8065 ...
- 把 web 项目部署到 Linux 服务器上
1.打开 eclipse,在已经完成的 web 项目上面点击右键,选择 export,然后选择导出成 war 包. 以部署 SMBMS 项目为例 2.项目打包成 war ,选择项目导出到的位置. ...
- python3.x Day2 购物车程序练习
购物车程序: 1.启动程序后,输入用户名密码后,如果是第一次登录,让用户输入工资,然后打印商品列表 2.允许用户根据商品编号购买商品 3.用户选择商品后,检测余额是否够,够就直接扣款,不够就提醒 4. ...
- Linux下常用的操作
Linux下常用的操作 文件定位 locate filename 有些版本的linux会出现 -bash: locate: command not found错误,不要慌,安装一下mlocate包就好 ...
- Python介绍以及Python 优缺点
Python是先编译成字节码,然后在解释执行的一门语言,而不是单纯的解释型语言 Python应用场景: Web应用开发. 操作系统管理,服务器运维的自动化脚本, 网络爬虫 科学计算 桌面软件 游戏 服 ...
- gnuplot examples
xy plot #set terminal jpeg #set output 'alfa.jpg' set terminal postscript eps font 24 set out 'U_vs_ ...
- go 语言学习指南(一)
参考资料: http://www.runoob.com/go/go-tutorial.html
- Navicat premium连接Oracle报ORA-12541错误
1:ORA-12541 原因:Oracle TNS监听服务没开 解决: