NoSQL数据库--简介
一、What's NoSQL?
NoSQL,全称是”Not Only Sql”,指的是非关系型的数据库。这类数据库主要有这些特点:非关系型的、分布式的、开源的、水平可扩展的。原始的目的是为了大规模web 应用。NoSQL 的拥护者们提倡运用非关系型的数据存储,通常的应用如:模式自由、支持简易复制、简单的API、最终的一致性(非ACID)、大容量数据等。NoSQL 被我们用得最多的当数key-value 存储,当然还有其他的文档型的、列存储、图型数据库、xml 数据库等。
二、Why NoSQL?
随着互联网web2.0 网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速,而传统的关系型数据库在应付web2.0 网站,特别是超大规模和高并发的SNS 类型的web2.0 纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:
- High performance - 对数据库高并发读写的需求web2.0 网站要根据用户个性化信息来实时生成动态页面和提供动态信息,所以基本上无法使用动态页面静态化技术,因此数据库并发负载非常高,往往要达到每秒上万次读写请求。关系型数据库应付上万次SQL 查询还勉强顶得住,但是应付上万次SQL 写数据请求,硬盘IO 就已经无法承受了,其实对于普通的BBS 网站,往往也存在对高并发写请求的需求。
- Huge Storage - 对海量数据的高效率存储和访问的需求对于大型的SNS 网站,每天用户产生海量的用户动态信息,对于关系数据库来说,在一张上亿条记录的表里面进行SQL 查询,效率是极其低下乃至不可忍受的。
- High Scalability && High Availability - 对数据库的高可扩展性和高可用性的需求在基于web 的架构当中,数据库是最难进行横向扩展的,当一个应用系统的用户量和访问量与日俱增的时候,你的数据库却没有办法像web server 和app server 那样简单的通过添加更多的硬件和服务节点来扩展性能和负载能力。对于很多需要提供24 小时不间断服务的网站来说,对数据库系统进行升级和扩展是非常痛苦的事情,往往需要停机维护和数据迁移,可是停机维护随之带来的就是公司收入的减少。
在上面提到的“三高”需求面前,关系数据库遇到了难以克服的障碍,而对于web2.0 网站来说,关系数据库的很多主要特性却往往无用武之地,例如:
- 数据库事务一致性需求很多web 实时系统并不要求严格的数据库事务,对读一致性的要求很低,有些场合对写一致性要求也不高。因此数据库事务管理成了数据库高负载下一个沉重的负担。
- 数据库的写实时性和读实时性需求对关系数据库来说,插入一条数据之后立刻查询,是肯定可以读出来这条数据的,但是对于很多web 应用来说,并不要求这么高的实时性。
- 复杂的SQL查询,特别是多表关联查询的需求任何大数据量的web 系统,都非常忌讳多个大表的关联查询,以及复杂的数据分析类型的复杂SQL 报表查询,特别是SNS 类型的网站,从需求以及产品设计角度,就避免了这种情况的产生。往往更多的只是单表的主键查询,以及单表的简单条件分页查询,SQL 的功能被极大的弱化了。
因此,关系数据库在这些越来越多的应用场景下显得不那么合适了,为了解决这类问题的NoSQL 数据库应运而生。
三、NoSQL Features
- 它可以处理超大量的数据
- 它运行在便宜的PC服务器集群上PC 集群扩充起来非常方便并且成本很低,避免了传统商业数据库“sharding”操作的复杂性和成本。
- 它击碎了性能瓶颈NoSQL 的支持者称,通过NoSQL 架构可以省去将Web 或Java 应用和数据转换成SQL 格式的时间,执行速度变得更快。“SQL 并非适用于所有的程序代码”,对于那些繁重的重复操作的数据,SQL 值得花钱。但是当数据库结构非常简单时,SQL 可能没有太大用处。
- 它没有过多的操作虽然NoSQL 的支持者也承认关系型数据库提供了无可比拟的功能集合,而且在数据完整性上也发挥绝对稳定,他们同时也表示,企业的具体需求可能没有那么复杂。
- 它的支持者源于社区因为NoSQL 项目都是开源的,因此它们缺乏供应商提供的正式支持。这一点它们与大多数开源项目一样,不得不从社区中寻求支持。
NoSQL数据库--简介的更多相关文章
- SnappyDB—Android上的NoSQL数据库简介
参考:http://www.open-open.com/lib/view/open1420816891937.html 参考:http://android-arsenal.com/details/1/ ...
- NoSql数据库简介及Redis学习
NO-Sql数据库:Not Only不仅仅是SQL 定义:非关系型数据库:NoSQL用于超大规模数据的存储.(例如谷歌或Facebook每天为他们的用户收集万亿比特的数据).这些类型的数据存储不需要固 ...
- NOSQL数据库简介
什么是NoSQL?泛指非关系型的数据库不支持SQL语法存储结构跟传统关系型数据库中的那种关系表完全不同,nosql中存储的数据都是Key-Value(即键值对关系)形式NoSQL的世界中没有一种通用的 ...
- NoSQL数据库简介与产生
关系型数据库所存在“问题” >利用ACID原则(原子性,一致性,隔离性,持久性)保证数据完整性: >行列的规范化存储: >预定义结构: >存储数据量“小”: >结构化查询 ...
- NoSql数据库Redis系列(1)——Redis简介
一.redis介绍 (一).Redis 简介 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库. Redis 与其他 key - value 缓存产品有以下三个特点 ...
- NoSql数据库MongoDB系列(1)——MongoDB简介
一.NoSQL简介 NoSQL(Not Only SQL ),意即“不仅仅是SQL” ,指的是非关系型的数据库 .是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨.No ...
- 【DB宝46】NoSQL数据库之CouchBase简介、集群搭建、XDCR同步及备份恢复
目录 一. CouchBase概述 1.1.简述 1.2.CouchDB和CouchBase比对 1.2.1.CouchDB和CouchBase的相同之处 1.2.2.CouchDB和CouchBas ...
- NoSQL数据库笔谈(转)
NoSQL数据库笔谈 databases , appdir , node , paper颜开 , v0.2 , 2010.2 序 思想篇 CAP 最终一致性 变体 BASE 其他 I/O的五分钟法则 ...
- MongoDB数据库简介及安装
一.MongoDB数据库简介 简介 MongoDB是一个高性能,开源,无模式的,基于分布式文件存储的文档型数据库,由C++语言编写,其名称来源取自"humongous",是一种开源 ...
随机推荐
- 与数据库连接的页面增删改查 的easyui实现(主要是前端实现)
一.首先看一下最终实现的效果,上图 二.思路,主要是分两个文件实现,一个是页面显示文件:代码如下: <html> <head> <title>示例管理</ti ...
- 团队项目第六周——Alpha阶段项目复审
排名 队名 项目名 优点 缺点 1 大猪蹄子队 四六级背单词游戏 功能开发出来了,界面简洁美观. 功能的确开发出来了,但是还未完成整个程序.不过考虑到开发时长问题,可以理解.页面还是比较简洁,但是测试 ...
- 【Win10】文件拖放打开
在 Windows 10 中,通用应用程序在桌面环境下是支持从资源管理器拖放文件打开的. 这篇博文将演示拖放图片或文本文件,并在程序中打开显示. 前台 XAML: <Page x:Class=& ...
- 使用 X-Frame-Options 防止被iframe 造成跨域iframe 提交挂掉
Refused to display 'http://www.***.com/login/doLogin.html' in a frame because it set 'X-Frame-Optio ...
- PostgreSQL 用户和权限管理
PostgreSQL 用户和权限管理 创建 CREATE ROLE rolename;CREATE USER username;CREATE USER和CREATE ROLE的区别在于,CREATE ...
- LeetCode150:Evaluate Reverse Polish Notation
题目: Evaluate the value of an arithmetic expression in Reverse Polish Notation. Valid operators are + ...
- 射线和三角形的相交检测(ray triangle intersection test)【转】
本文以Fast, Minimum Storage Ray Triangle Intersection为参考,在此感谢原作者,大家也可以直接阅读原版. 概述 射线和三角形的相交检测是游戏程序设计中一个常 ...
- WebService 工作原理及实例教程
一.WebService到底是什么? 先来看下标准的定义:Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统 ...
- Angular6 学习笔记——指令
angular6.x系列的学习笔记记录,仍在不断完善中,学习地址: https://www.angular.cn/guide/template-syntax http://www.ngfans.net ...
- leetcode 75. 颜色分类 JAVA
题目: 给定一个包含红色.白色和蓝色,一共 n 个元素的数组,原地对它们进行排序,使得相同颜色的元素相邻,并按照红色.白色.蓝色顺序排列. 此题中,我们使用整数 0. 1 和 2 分别表示红色.白色和 ...