关键字补充(不晓得的自己去Google):

负载均衡  \文件上传到服务器\建表建动态列簇\数据仓库的应用\事务的提交和回滚\SQL执行计划\联机事务处理\联机分析处理\多表关联查询\数据存储引擎

NoSQL

NoSQL. 1

1.       官方定义... 3

2.       百度百科... 3

2.1.     基本含义... 4

2.1.1.     键值(Key-Value)存储数据库... 5

2.1.2.     列存储数据库... 5

2.1.3.     文档型数据库... 5

2.1.4.     图形(Graph)数据库... 5

2.2.     共同特征... 6

2.3.     适用场景... 7

3.       概念理解... 7

3.1.     SQL. 7

3.2.     关系型数据库... 7

3.3.     NoSQL. 7

4.       数据库发展史... 8

4.1.     阶层型数据库... 8

4.2.     网络型数据库... 8

4.3.     关系型数据库... 8

4.4.     发展史... 8

5.       关系型数据库... 9

5.1.     优势... 10

5.1.1.     保持数据的一致性... 10

5.1.2.     数据更新开销更小... 10

5.1.3.     支持join等复杂查询... 10

5.1.4.     技术成熟... 10

5.2.     劣势... 10

5.2.1.     大量数据的写入操作... 11

5.2.2.     建立索引或表结构变更... 11

5.2.3.     字段不固定时的应用... 11

5.2.4.     对简单查询快速返回结果... 11

5.2.5.     不支持分布式... 11

5.2.6.     非结构化数据存储... 11

5.3.     OLTP. 11

5.4.     OLAP. 11

6.       NOSQL数据库... 11

6.1.     优势... 11

6.1.1.     大数据量,高性能... 12

6.1.2.     易于数据分散,分布式。... 12

6.1.3.     提升性能和扩大规模... 12

6.1.4.     字段不固定时的应用... 12

6.2.     劣势... 12

6.2.1.     没有事务... 13

6.2.2.     不支持复杂查询 JOIN.. 13

6.2.3.     新技术,资料少。... 13

6.2.4.     应用困难... 13

6.3.     常见的NOSQL数据库... 13

6.3.1.     MongoDB. 13

6.3.2.     Hbase. 14

6.3.3.     Redis. 14

6.3.4.     memcached. 14

6.3.5.     Tokyo Tyrant 14

6.4.     NoSql应用实例... 14

6.4.1.     Hbase. 14

6.5.     总结... 14

7.       NewSQL. 15

7.1.     OceanBase. 15


1.       官方定义

NOSQL Databases

http://nosql-database.org/

NoSQL DEFINITION: Next
Generation Databases mostly addressing some of the points: being
non-relational, distributed, open-source and horizontally scalable.

2.       百度百科

NoSQL,泛指非关系型的数据库。

关系数据库表更改的时候需要停机,更改;Nosql更改可以联机处理.

2.1.         
基本含义

NoSQL(NoSQL = Not Only SQL )

 NoSQL数据库的四大分类

2.1.1.          
键值(Key-Value)存储数据库

这一类数据库主要会使用到一个哈希表,这个表中有一个特定的键和一个指针指向特定的数据。Key/value模型对于IT系统来说的优势在于简单、易部署。但是如果DBA只对部分值进行查询或更新的时候,Key/value就显得效率低下了。  举例如:Tokyo
Cabinet/Tyrant, Redis, Voldemort, Oracle BDB.

2.1.2.          
列存储数据库

这部分数据库通常是用来应对分布式存储的海量数据。键仍然存在,但是它们的特点是指向了多个列。这些列是由列家族来安排的。如:Cassandra, HBase, Riak.

2.1.3.          
文档型数据库

文档型数据库的灵感是来自于Lotus Notes办公软件的,而且它同第一种键值存储相类似。该类型的数据模型是版本化的文档,半结构化的文档以特定的格式存储,比如JSON。文档型数据库可 以看作是键值数据库的升级版,允许之间嵌套键值。而且文档型数据库比键值数据库的查询效率更高。如:CouchDB, MongoDb. 国内也有文档型数据库SequoiaDB,已经开源。

2.1.4.          
图形(Graph)数据库

图形结构的数据库同其他行列以及刚性结构的SQL数据库不同,它是使用灵活的图形模型,并且能够扩展到多个服务器上。NoSQL数据库没有标准的查询语言(SQL),因此进行数据库查询需要制定数据模型。许多NoSQL数据库都有REST式的数据接口或者查询API。如:Neo4J,
InfoGrid, Infinite Graph.

2.2.         
共同特征

对于NoSQL并没有一个明确的范围和定义,但是他们都普遍存在下面一些共同特征:

1 不需要预定义模式:不需要事先定义数据模式,预定义表结构。数据中的每条记录都可能有不同的属性和格式。当插入数据时,并不需要预先定义它们的模式。

2 无共享架构:相对于将所有数据存储的存储区域网络中的全共享架构。NoSQL往往将数据划分后存储在各个本地服务器上。因为从本地磁盘读取数据的性能往往好于通过网络传输读取数据的性能,从而提高了系统的性能。

3 弹性可扩展:可以在系统运行的时候,动态增加或者删除结点。不需要停机维护,数据可以自动迁移。

4 分区:相对于将数据存放于同一个节点,NoSQL数据库需要将数据进行分区,将记录分散在多个节点上面。并且通常分区的同时还要做复制。这样既提高了并行性能,又能保证没有单点失效的问题。

5 异步复制:和RAID存储系统不同的是,NoSQL中的复制,往往是基于日志的异步复制。这样,数据就可以尽快地写入一个节点,而不会被网络传输引起迟延。缺点是并不总是能保证一致性,这样的方式在出现故障的时候,可能会丢失少量的数据。

6 BASE:相对于事务严格的ACID特性,NoSQL数据库保证的是BASE特性。

BASE是最终一致性和软事务。

NoSQL数据库并没有一个统一的架构,两种NoSQL数据库之间的不同,甚至远远超过两种关系型数据库的不同。

可以说,NoSQL各有所长,成功的NoSQL必然特别适用于某些场合或者某些应用,在这些场合中会远远胜过关系型数据库和其他的NoSQL。

2.3.         
适用场景

NoSQL数据库在以下的这几种情况下比较适用:

1、数据模型比较简单;2、需要灵活性更强的IT系统;3、对数据库性能要求较高;4、不需要高度的数据一致性;5、对于给定key,比较容易映射复杂值的环境。

3.      
概念理解

3.1.         
SQL

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

3.2.         
关系型数据库

目前通常意义上的数据库。MySql SQLServer Oracle DB2,或称为“SQL数据库”。

3.3.         
NoSQL

4.       数据库发展史

4.1.         
阶层型数据库

4.2.         
网络型数据库

4.3.         
关系型数据库

4.4.         
发展史

一、数据库说得复杂特别复杂,但说得简单,它就解决了两个问题:数据怎么存放和数据怎么查询。而且这两个问题互相关联。举个程序员都能明白的例子:如果你把数据存成了数组,那搜索查询就只能是O(n)的效率了,如果你存成了二叉树,那么查询效率就变成了O(logn)。业务查询可不像搜索一个key值这么简单,常常复杂得要死,本来查询就很难写了,现在还得考虑数据物理存放方式来决定怎么执行查询更高效,这不是要逼死人嘛?所以早期的数据库开发人员苦啊,什么层级数据库、网状数据库写完查询都得自己定义access path啊。

二、关系模型彻底改变了数据库程序员的生活:不用管数据怎么存了,你只要用SQL写好查询,然后查询优化器会帮你把面向业务的查询逻辑转换成可以高效在数据的物理结构上执行的物理查询。这简直就像一下从汇编时代跨越到了高级语言的时代啊。早期的数据库还需要大家自己思考怎么建索引,相当于告诉查询优化器哪些列是在查询中有用,后来数据库已经可以自动提示你该加什么索引了,大部分程序员终于可以欢乐地彻底扔掉数据库存储引擎的知识了。

三、当然仍然有一小挫掌握了超能力的人,是可以手写执行计划,用Plan Guide强制执行的,他们说:查询优化器是什么?可以吃吗?若干年后他们拯救了世界也打开了黑暗的大门。

四、好日子一直持续到数据库负载大到不得不开始走向分布为止,硬件发展速度已经赶不上实际业务需求(摩尔定律走向衰竭)。分布式最大的问题是网络延迟问题,而网络延迟是物理问题,没这么容易解决。跨机事务做不了啊,查询优化器再牛逼也优化不了跨网络的join啊。

五、但业务还是得做啊,于是解决方案只有一个了:回到手工根据查询来决定数据物理分布(这样可以最大程度上避免跨网络的join),手工决定查询的物理执行计划,手工保证事务性的老路。既然都已经全手工了,那还要原来的RDBMS干嘛,于是NoSQL产品诞生了。搭配一些会手写执行计划手写事务的超能力者使用,战斗力简直有105这么高。

六、大家很快就忘记了NoSQL其实是一个对现实妥协的产物,只有搭配一些精通数据存储引擎知识的人才能用好。推广开来之后,广大吃瓜群众表示NoSQL一点也不好用啊,自己要管的东西太多啦,我怎么知道要怎么设计数据的物理分布啊,瞎设计一下查询起来就效率感人了啊,最终一致又是一个什么鬼啦,还要自己写程序保证事务性啊。

5.       关系型数据库

5.1.         
优势

5.1.1.          
保持数据的一致性

5.1.2.          
数据更新开销更小

5.1.3.          
支持join等复杂查询

5.1.4.          
技术成熟

5.2.         
劣势

5.2.1.          
大量数据的写入操作

5.2.2.          
建立索引或表结构变更

5.2.3.          
字段不固定时的应用

5.2.4.          
对简单查询快速返回结果

5.2.5.          
不支持分布式

5.2.6.          
非结构化数据存储

5.3.         
OLTP

联机事务处理

5.4.         
OLAP

联机分析处理

6.       NOSQL数据库

6.1.         
优势

6.1.1.          
大数据量,高性能

6.1.2.          
易于数据分散,分布式。

6.1.3.          
提升性能和扩大规模

去IOE

6.1.4.          
字段不固定时的应用

6.2.         
劣势

6.2.1.          
没有事务

6.2.2.          
不支持复杂查询 JOIN

6.2.3.          
新技术,资料少。

6.2.4.          
应用困难

6.3.         
常见的NOSQL数据库

6.3.1.          
MongoDB

6.3.2.          
Hbase

6.3.3.          
Redis

6.3.4.          
memcached

6.3.5.          
Tokyo
Tyrant

6.4.         
NoSql应用实例

6.4.1.          
Hbase

6.5.         
总结

关系数据库的确有很多很多的问题,这是常识。但是RDBMS能解决目前遇到的很多问题,简单的说,这玩意是个榔头,你不能责怪他为什么不能开啤酒瓶。    SQL 发明出来,不是为了什么优雅,什么强大,那些根本就扯不上。其最初目的是为了解决如何用最方便的办法来查询数据,他就是一个用来描述查询的。    当然我们都知道,最好的查询语言是自然语言。但是目前的技术条件根本达不到(人工智能领域)。SQL 已经足够好,好到很多人能学会用。而且对于现代的 RDBMS 而言,数据的查询优化是由系统完成的。当然你说好的 DBA 必不可少,但 RDBMS 本身的优化器是无可代替的,这也是相关厂商的核心技术。使用 NO-SQL 去用编程的方式查询数据结构,这当然可行。这是最原始的方法。当你碰到大规模的数据存储或者高并发量的查询的时候,这几乎是唯一的方法。    但这要付出巨大的代价,你要投钱,投人,投工时。对于中小项目,特别是数据特别复杂,查询特别复杂,而数据并不是海量,查询量也不是海量的时候。RDBMS 就特别有用。    这有很多例子,比如银行,各种企业的管理系统等等等。 我一再说过,NO-SQL 是最原始的方法,并不是什么新玩意,而且一直都存在。如果你了解这个领域的研究的话,相关的项目或者论文就一直没断过。    但没有任何一个体系能取得 RDBMS 这么广泛的影响,一个解决方案必然有其局限性,汽车不能飞飞上天,飞机不会潜水,这有什么好奇怪的呢?我也知道一种什么地方都能去的交通工具是 “终极解决方案” ,NoSQL目前只是在特定领域的特定应用。

7.       NewSQL

NewSQL 是对各种新的可扩展/高性能数据库的简称,这类数据库不仅具有NoSQL对海量数据的存储管理能力,还保持了传统数据库支持ACID和SQL等特性。NewSQL是指这样一类新式的关系型数据库管理系统,针对OLTP(读-写)工作负载,追求提供和NoSQL系统相同的扩展性能,且仍然保持ACID和SQL等特性(scalable
and ACID and (relational and/or sql -access))。

7.1.         
OceanBase

淘宝研发,目前已经使用. OB是一个支持ACID事务的分布式关系型数据库,通过多副本保证高可用性,利用同步replication保证数据的高可靠性。区别于其他开源nosql产品的特点包括:1. 相比单机nosql,OB具有分布式的基本特性:高可用,低成本,高性能,可扩展,高容错;2. 相比于schema free的kv
or document nosql,OB要求schema强类型约束,但是可以方便的进行各种online ddl操作; 3. 相比目前开源的分布式nosql而言支持ACID事务特性,因为支持多机房多集群部署,数据的持久化方面丢数据概率非常低。

Nosql modifing...的更多相关文章

  1. NoSql数据库使用半年后在设计上面的一些心得

    NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...

  2. 非关系型数据库(NoSql)

    最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...

  3. 关系型数据库与NoSQL数据库

    关系型数据库的优缺点 优点: 可以做事务处理,从而保证了数据的一致性: 可以进行JOIN等多表查询: 由于以SQL标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处). 缺点: 大量数据的写 ...

  4. 几款主流 NoSql 数据库的对比

    最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...

  5. “NOSQL” 杂谈

    引言: nosql 的兴起和革命,在我看来已经开始逐渐影响到了传统的sql的地位,但是仅仅是影响而已,取代是不太可能的. 正文: 两年前,一个偶然的机会开始接触到 nosql ( mongodb ). ...

  6. Squirrel: 通用SQL、NoSQL客户端

    安装 配置数据库 配置驱动 配置连接 如果你的工作中,需要使用到多个数据库,又不想在多种客户端之间切换来切换去.那么就需要找一款支持多数据库的客户端工具了.如果你要连接多个关系型数据库,你就可以使用N ...

  7. NoSQL和MongoDB

     NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”.关系数据库关注在关系上,NoSQL关注在存储上. 发展背景 (1)传统关系型数据库遇到了性能瓶颈. 高并发读写(High ...

  8. NoSQL指南

    一.数据库发展 1.早期出现的数据库包括平面文件数据管理系统.分层数据管理系统和网络数据管理系统,分别对应的数据结构是线性表.树和图. 平面文件数据管理系统是使用磁带对数据进行顺序存储的,带来的问题不 ...

  9. NoSQL与RDBMS的九点区别联系

    原文链接:http://blog.sina.com.cn/s/blog_5373fb0b0101ft8a.html     1 理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求, ...

随机推荐

  1. Maven-001-初识及本地环境配置

    前段时间想对自己之前写的一些代码或者小工具,因为写的比较乱,因而想系统的管理一下自己学习 Java 时写的源码,经过多方请教.网上查询,最终决定使用 Maven 来管理自己写的代码. Maven 是一 ...

  2. 如何用按钮的click事件去触发a标签的click事件

    在jQquery中,可以用如下方式触发input.a标签的click事件: <input id="my_input" /> <a id="my_a&qu ...

  3. 多进程、协程、事件驱动及select poll epoll

    目录 -多线程使用场景 -多进程 --简单的一个多进程例子 --进程间数据的交互实现方法 ---通过Queues和Pipe可以实现进程间数据的传递,但是不能实现数据的共享 ---Queues ---P ...

  4. 分享:一款前端布局工具(alloydesigner)

    困扰 设计师给出静态的高保真图片, 需要前端工程师按照高保真图,进行html编码. 前端工程师, 一般工作方法为: 打开图片,一边看下图片, 一边编写相应的html代码. 这样有两个问题: 1. 前端 ...

  5. Flume -- 开源分布式日志收集系统

    Flume是Cloudera提供的一个高可用的.高可靠的开源分布式海量日志收集系统,日志数据可以经过Flume流向需要存储终端目的地.这里的日志是一个统称,泛指文件.操作记录等许多数据. 一.Flum ...

  6. Python快速建站系列-Part.Four-首页内容填充

    |版权声明:本文为博主原创文章,未经博主允许不得转载. Part.Three中实现了注册和登录的功能,那这一节完成主页内容的填充,并且主页中要实现简单的可以查找代码的功能. 而且有于公共代码部分存储在 ...

  7. 记录archlinux中安装pcl的大致流程

    贴一下pcl在github上的网址: https://github.com/PointCloudLibrary/pcl/ 从这个网址出发,一般能找到安装的 tutorial.以下只说一下在archli ...

  8. animation 的属性一共有 6 个值,详细介绍在此

    animation 属性是一个简写属性,用于设置六个动画属性: animation-name animation-duration animation-timing-function animatio ...

  9. [转]error: 'retainCount' is unavailable: not available in automatic reference counting mode

    转载地址:http://choijing.iteye.com/blog/1860761   后来发现是编译选项的问题:   1.点击工程名 打开编译选项 2.在编译选项中,选择Bulid Settin ...

  10. Android网络框架源码分析一---Volley

    转载自 http://www.jianshu.com/p/9e17727f31a1?utm_campaign=maleskine&utm_content=note&utm_medium ...