Nosql modifing...
关键字补充(不晓得的自己去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
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...的更多相关文章
- NoSql数据库使用半年后在设计上面的一些心得
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
- 非关系型数据库(NoSql)
最近了解了一点非关系型数据库,刚刚接触,觉得这是一个很好的方向,对于大数据 方面的处理,非关系型数据库能起到至关重要的地位.这里我主要是整理了一些前辈的经验,仅供参考. 关系型数据库的特点 1.关系型 ...
- 关系型数据库与NoSQL数据库
关系型数据库的优缺点 优点: 可以做事务处理,从而保证了数据的一致性: 可以进行JOIN等多表查询: 由于以SQL标准化为前提,数据更新的开销很小(相同的字段基本上都只有一处). 缺点: 大量数据的写 ...
- 几款主流 NoSql 数据库的对比
最近小组准备启动一个 node 开源项目,从前端亲和力.大数据下的IO性能.可扩展性几点入手挑选了 NoSql 数据库,但具体使用哪一款产品还需要做一次选型. 我们最终把选项范围缩窄在 HBase.R ...
- “NOSQL” 杂谈
引言: nosql 的兴起和革命,在我看来已经开始逐渐影响到了传统的sql的地位,但是仅仅是影响而已,取代是不太可能的. 正文: 两年前,一个偶然的机会开始接触到 nosql ( mongodb ). ...
- Squirrel: 通用SQL、NoSQL客户端
安装 配置数据库 配置驱动 配置连接 如果你的工作中,需要使用到多个数据库,又不想在多种客户端之间切换来切换去.那么就需要找一款支持多数据库的客户端工具了.如果你要连接多个关系型数据库,你就可以使用N ...
- NoSQL和MongoDB
NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”.关系数据库关注在关系上,NoSQL关注在存储上. 发展背景 (1)传统关系型数据库遇到了性能瓶颈. 高并发读写(High ...
- NoSQL指南
一.数据库发展 1.早期出现的数据库包括平面文件数据管理系统.分层数据管理系统和网络数据管理系统,分别对应的数据结构是线性表.树和图. 平面文件数据管理系统是使用磁带对数据进行顺序存储的,带来的问题不 ...
- NoSQL与RDBMS的九点区别联系
原文链接:http://blog.sina.com.cn/s/blog_5373fb0b0101ft8a.html 1 理解ACID与BASE的区别(ACID是关系型数据库强一致性的四个要求, ...
随机推荐
- [转]使用Gradle发布Android开源项目到JCenter
转自:http://blog.csdn.net/maosidiaoxian/article/details/43148643 使用Gradle发布Android开源项目到JCenter 分类: G ...
- autoreleasepool自动释放池
示例: @autoreleasepool { ; i[largeNumber; i++) { (因识别问题,该行代码中尖括号改为方括号代替) Person *per = [[Person alloc ...
- Class类
package com.imooc.reflect; public class ClassDemo1 { public static void main(String[] args) { //Foo的 ...
- 【转】数据库系统异常排查之DMV
数据库系统异常是DBA经常要面临的情景,一名有一定从业经验的DBA,都会有自己一套故障排查的方法和步骤,此文为为大家介绍一下通过系统 性能视图(SQLServer05以上版本)来排查系统异常的基本方法 ...
- react 评论列表插入评论数据 unshift
// unshift 新增数据放到最上面 //插入 回复/发表 评论else if(action.type === INSERT_COMMENT ){ let content = action.tex ...
- 管理不同版本ruby和rails的利器——rvm
近年来,ruby on rails逐渐火了起来,我想各位码农早就耳闻,特别是那些做B/S项目的童鞋,早就想跃跃一试了. 笔者也是初次接触ruby on rails ,我想,对于初学者来说,最好的学习方 ...
- javascript序列化json 第二篇
这一节主要是记录父子关系的JSON生成,废话不多说,直接上代码. public partial class _default : System.Web.UI.Page { public static ...
- paper 96:计算机视觉-机器学习近年部分综述
计算机视觉和机器学习领域 近两年部分综述文章,欢迎推荐其他的文章,不定期更新. [2015] [1]. E.Sariyanidi, H. Gunes, A. Cavallaro, Aut ...
- JVM参数设置、分析(转发)
JVM参数的含义 实例见实例分析 参数名称 含义 默认值 -Xms 初始堆大小 物理内存的1/64(<1GB) 默认(MinHeapFreeRatio参数可以调整)空余堆内存小于40%时,J ...
- Boadload和Image$$??$$Limit含义
Bootloader 即引导加载程序,是系统加电后运行的第一段软件代码.简单的说它们都是bootloader,所完成的任务也大同小异. 熟悉x86体系结构的朋友肯定知道,x86平台上bootloade ...