[数据库]---nosql,非关系型数据库整理

1.关系型数据库与非关系型数据库的区别

Tables关系型数据库非关系型数据库
成本好的收费开源的,都免费的
存储与查询硬盘存储,相对查的慢内存存储,查的快
存储格式只能是基本格式多种多样
年龄出现时间较长,较成熟后起之秀,不可小觑
扩展性join等不好扩展方便集群
事务强事务弱事务
查询支持sql复杂查询更适合简单查询

个人感觉:
关系型数据库就像一位老员工,他虽然慢,思维也比较固定,但给人的感觉就是一个字 : 稳
非关系型数据库就像年轻小伙,虽然经验不是很丰富,但是干劲十足,相信以后必将是他的天下

一个大型的公司,必定是新老员工都要有的.
对于大型系统而言,基本上也都是非关系型数据库和关系型数据库共存的.
非关系型数据库承担大部分查询,但最终的写入存储,还是使用关系型数据库


2.非关系型数据库的分类

  2.1 k-v型存储

    2.1.1 Redis

    
1.支持五种基本类型(String,List,Set,Hash,Sorted Set)
2.基于内存存储,两种持久化方式(RDB快照和AOF)

RDB是固定时间将内存转存磁盘 : 重启恢复快,但不是高可用(最近数据可能会来不及存入磁盘)
save 900 1   在900秒(15分钟)之后,如果至少有1key发生变化,则dump内存快照。
save 300 10    在300秒(5分钟)之后,如果至少有10key发生变化,则dump内存快照。
save 60 10000   在60秒(1分钟)之后,如果至少有10000key发生变化,则dump内存快照。
AOF是将Reids的操作日志以追加的方式写入文件 : 相对高可用,但重启恢复相对慢
appendfsync always   每次有数据修改发生时都会写入AOF文件。
appendfsync everysec   每秒钟同步一次,该策略为AOF的缺省策略。
appendfsync no   从不同步。高效但是数据不会被持久化。

3.操作快(纯内存操作,单线程操作避免上下文频繁切换,采用非阻塞I/o多路复用机制)
4.操作是原子性的,要么成功执行,要么失败完全不执行
5.可以手动实现事务 : MULTI和EXEC指令
6.Redis分布式锁
7.Redis做缓存
8.Redis命令:http://www.redis.net.cn/
      

    2.1.2 memcached

1.分布式内存对象缓存系统
2.所有数据都在内存中,没有持久化(注意与redis对比)
3.数据结构较为单一
4.可以修改最大可用内存,采用LRU算法
5.在并发场景下,用cas保证一致性
6.支持集群
7.适用于数据库缓存(主流)
8.总而言之,个人觉得综合下来,redis比memcached好,redis甚至可以完全替代memcached.

  2.2 列存储

    2.2.1 Hbase

1.存储在hdfs之上的,是对hdfs的封装,简化了hdfs的操作
2.没有事务
3.基于内存
4.只支持key查询(这个和redis一样)
5.面向列存储(传统数据库是面向行存储的,一行有多列。而hbase一行只存储一列,所以说是面向列存储的
6.hbase中没有库的概念,但有个命名空间namespace,类似于库
7.hbase中有table表的概念
8.hbase中多了一个列簇的概念,column family。分类管理列,一个列簇是由多个相同特性的列组成,一个表中有多个列簇,列簇必须在创建表的时候指定
9.一个列簇下可以有多个列column,列簇下的列可以动态添加,列名需要在添加列名的时候指定
10.每个列名对应的值value,同一条数据可以有多个值,每个值对应一个版本,通过timestap当版本号,一个value默认可以保存三个版本
11.总而言之,大数据生态圈的存储,用hbase
  

  2.3 文档存储

    2.3.1 MongoDB

1.面向集合(collection,类似表,但无模式)存储,schemeless
2.支持动态查询,语法丰富(这是我认为mongodb潜力比较大的原因之一)
3.支持丰富的数据类型
4.支持索引
5.支持javascript shall(小部分不支持,比如alert),因为内置js解释器
6.总而言之,数据库能干的mongodb几乎都差不多,非数据库能干的mongodb也差不多,个人很看好mongodb,只不过现在这方面没有数据库那么成熟,没有被特别广泛的用起来
  

  2.4 图型存储

    待研究

3.非关系型数据库的用处

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/500018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

React Native开发指南-在原生和React Native间通信

通过植入原生应用和原生UI组件两篇文档,我们学习了React Native和原生组件的互相整合。在整合的过程中,我们会需要在两个世界间互相通信。有些方法已经在其他的指南中提到了,这篇文章总结了所有可行的技术。 简介 React Native是从React中得到…

数据迁移记录

做数据迁移,数据库是分两片,每片一主两从,没有读写分离 前提: 使用服务器1:2核4G内存40G硬盘 线程池:5个 每个线程分页查询,每页1000条 平均数据是一天一个线程,一天3万数据,所以大概就是30页的分页深度 服务器1的数据: cpu使用率在74%上下(有点高,2核的毕竟比不过4核的…

RPC协议简介

一、概述 1.英文原义:Remote Procedure Call Protocol 2.中文释义:(RFC-1831)远程调用协议 。 3.注解:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。 4.说明:RPC…

mysql分页查询报错,及解决

mysql分页查询报错: 前提: 1.每页1000条数据 2.查到57页的时候,就报错了 以下是错误信息: org.springframework.jdbc.UncategorizedSQLException: ### Error querying database. Cause: java.sql.SQLException: ...省略中间... received message larger than max (1844105…

RPC协议与Web Service

一、引入 我们每天都在使用浏览器来上网冲浪, 在查找自己需要的资源, HTTP协议自然是我们使用的最多的 一种, 我们尽情地享受着这种信息高速路的快感,却没有试图去了解我们是如何获得这些资源的? 它是一种什么样的设计理念? 我们也偶尔会使用 Gtalk来和自己的同事或者朋友来聊…

如何设置电脑开机自动提示(防止忘打卡等)

如何设置电脑开机自动提示: 第一种方法: 第一步:CtrlR 输入mmc命令打开 文件-添加/删除管理单元-组策略对象编辑器-添加-确定-确定(都是默认的)。 第二步:退出小框,会看见有个”本地计算机 策略”,打开-计算机配置-windows设置-安全设置-本地策略-安全选项 双击”交互式登…

RestFull架构

1 什么是REST REST全称是Representational State Transfer,中文意思是表述性状态转移。 它首次出现在2000年Roy Fielding的博士论文中,Roy Fielding是 HTTP 规范的主要编写者之一。 他在论文中提到:“我这篇文章的写作目的,就是想在符合架构原…

SpringMVC默认访问路径配置

SpringMVC默认访问路径配置 需求:只访问域名,不加任何action路径,想访问默认的一个action. 比如www.jd.com,就跳到京东首页,会加载出辣么多东西来 关于这个的方法,网上有千千万种,在这里只是记录一种常用的, 亲测这个可以用,而且我们的项目一直都是这个套路. 第一步,web.x…

controller中执行main方法报错NoClassDefFoundError: javax/servlet/http/HttpServletResponse

controller中执行main方法报了这个错:NoClassDefFoundError: javax/servlet/http/HttpServletResponse,如下图: NoClassDefFoundError: javax/servlet/http/HttpServletResponse NoClassDefFoundError: javax/servlet/http/HttpServletRequest同理 原因是本地没有引入servlet…

初探Backbone

Backbone简介 中文API:http://www.css88.com/doc/backbone/ 英文API:http://backbonejs.org/ Backbone是构建javascript应用程序的一个优秀的类库。他简洁、轻量级、功能实在。 backbone采用MVC模式,本身提供了模型、控制器和视图从而我们应用…

订单量的监控

要解决的问题 : 1.在电商项目中,如何准确的知道当前订单量是正常的 2.如何在订单量突变后快速感知 解决思路 : 实现一个关于订单量的监控系统,将历史数据与实时数据做对比,因为每天的订单量,基本都是一个相似的变化范围,比如凌晨4点的单量是一天中最少的,节假日的单量要小于工…

JQuery初探

一、JQuery是什么? JQuery 是一套JavaScript库, 使用它,可以很方便的进行 JavaScript的编程。比如: 获取页面元素, 修改页面元素的CSS样式等等都可以以很简单的语法完成。节省代码行数和减少开发的时间。 物理上来看就…

BigDecimal的异常记录:java.lang.ArithmeticException: Rounding necessary

记一次报错,代码样例: public static void main(String[] args) {BigDecimal bigDecimal new BigDecimal(1234.5);int res bigDecimal.intValueExact();} 报错信息: Exception in thread "main" java.lang.ArithmeticException: Rounding necessaryat java.math.…

JavaScript历史与ECMAScript

一、前言为了发挥 JavaScript 的全部潜力,了解它的本质、历史及局限性是十分重要的。本节为您讲解 JavaScript 和客户端脚本的起源。二、Nombas 和 ScriptEase大概在 1992 年,一家称作 Nombas 的公司开发了一种叫做 C 减减(C-minus-minus&…

基于abtest思想的流量切换(nginx lua redis)

使用前提: 项目重构了,旧项目还在线上运行,新项目准备替换线上的旧项目 最终目标: 要实现实时切换新旧项目,保证如果新项目上线后有问题,可以立刻快速的将流量切回旧项目 方案: 关于abtest的基本原理本文不再多说,本文重点是实践,先看图 如上图所示,用户访问的…

JavaScript内部实现

前言 JavaScript 的核心 ECMAScript 描述了该语言的语法和基本对象; DOM 描述了处理网页内容的方法和接口; BOM 描述了与浏览器进行交互的方法和接口。 ECMAScript、DOM 和 BOM 尽管 ECMAScript 是一个重要的标准,但它并不是 JavaScript 唯一…

jsonp跨域原理,使用以及同源策略

什么是跨域请求,为什么用跨域 浏览器从一个域名的网页去请求另一个域名的资源时,域名,端口,协议任何一个不同,都算是跨域请求 域名是一个网站的唯一标识,一个域名代表着一个网站以及其对应的服务 服务间调用可以使用基于soa思想的rpc调用,也可以是webs…

LESS语言简介

一、概述 LESS是一种 动态 样式 语言. LESS 将 CSS 赋予了动态语言的特性,如 变量, 继承, 运算, 函数. LESS 既可以在 客户端 上运行 (支持IE 6, Webkit, Firefox),也可以借助Node.js或者Rhino在服务端运行。 LE…

非对称加密算法之RSA算法实现

对称加密,非对称加密,公钥,私钥,RSA这些常常听到的,到底是怎么回事 有个同事问我公钥私钥到底为什么能互相解开,一时语塞,平时都只是知道怎么用,但很少去了解的更细,现在…

流式计算storm核心组件介绍以及入门案例---跟着就能在本地跑起来的storm项目

关于storm的基础,参照我这篇文章:流式计算storm 关于并发和并行,参照我这篇文章:并发和并行 关于storm的并行度解释,参照我这篇文章:storm的并行度解释 关于storm的流分组策略,参照我这篇文章:storm的流分组策略 关于storm的消息可靠机制,参照我这篇文章:storm的消息可靠机制 …