NoSQL入门

SQL入门:

     在说NoSQL之前先看看sql的发展,数据库的发展经过了无库时代,层次状数据库,网状数据库,关系性数据库,NoSQL数据库。

     刚开始数据是直接写入到程序中,并没有数据库的概念,随着数据量的增长,开始出现层次状数据库,程序通过树形结构访问数据,在这种结构下父记录同时拥有多个子记录,但子记录只有一个父记录,造成的问题是一旦数据增多,数据量增大,会出现数据冗余的状况:

 

之后针对这种冗余出现了网状数据库,同层次数据库一致,对于数据结构有很强的依赖性,不理解数据结构无法访问对应的内容:

     之后关系型数据库开始出现,1970年Codd划时代的论文《用于大型共享数据库的关系数据模型》,关系型数据库通过把所有的数据都通过行和列的二元表现形式表示出来,给人更容易理解的直观感受。关系型数据库的优势:保持数据的一致性,以标准化为前提,数据的更新的开销很小,可以使用连接等复杂查询,拥有许多实际成果。

     关系型数据库产品的关键技术在于存储引擎,索引设计,SQL优化器,事务管理与并发控制,容灾与恢复技术。在关系型数据库中,数据存储在数据文件中,数据文件由块与页组成,快内包括块头与数据区。

     关系型数据库的缺点:很难进行分布式存储,由于按行存储,在读取数据的过程中,按行读取,浪费大量io资源,并且难以处理非结构化的数据。

CAP定律:

     CAP( Consistency,Availability,Patition tolerance)理论论述的是在任何分布式系统中,只可能满足一致性,可用性及分区容忍性三者中的两者,不可能全部都满足。所以不用花时间精力在如何满足所有三者上面。CAP理论进一步导致了技术趋势由关系数据库系统向NoSQL发展。

     NoSQL=Not Only SQL,它并不意味着非sql,而是不仅sql,它们大多开源,并且对于分布式集群有着良好的支持,只能解决特定的场景下的问题,缺乏统一解决方案。

满足cp:

   BigTable (column-oriented/tabular)
   Hypertable (column-oriented/tabular)
? HBase (column-oriented/tabular)
? MongoDB (document-oriented)
? Terrastore (document-oriented)
? Redis (key-value)
? Scalaris (key-value)
? MemcacheDB (key-value)
? Berkeley DB (key-value)

满足ap:

   Dynamo (key-value)
? Voldemort (key-value)
? Tokyo Cabinet (key-value)
? KAI (key-value)
? Cassandra (column-oriented/tabular)
? CouchDB (document-oriented)
? SimpleDB (document-oriented)
? Riak (document-oriented)

常见的NoSQL:

     Redis:2009年Salvatore为其公司LLOOGG开发的基于键值对的数据库系统,使用C实现,BSD许可证,拥有丰富的数据类型,非常适合需要表达时间线的web服务,github在使用。

     HBase:是一个分布式的,面向列的开源数据库,来自google的bigtable论文,HBase时Apache下Hadoop的子项目,目前刚刚出来1.0版本,非常适合非结构化的数据。

     MongoDB:创建于10gen,使用C++实现,是一个面向文档的数据库。可以处理非结构化数据,支持全文索引,目前已发布3.0.

时间: 2024-10-03 19:47:54

NoSQL入门的相关文章

NoSQL入门)(详细)

NoSQL入门 (原创:黑小子-余) 1.NoSQL是什么 NoSql(NoSQL=Not Only SQL),意即“不仅仅是SQL”,泛指菲关系型数据库.传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展.NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题,包括超大规模数据的存储. (例如谷歌或Facebo

1.NoSQL入门和概述

入门概述: 1.为什么要用到NoSQL a)  单机MySQL的美好年代,在90年代,一个网站的访问量一般都不大,用单个数据库完全可以轻松应付.在那个时候,更多的都是静态网页,动态交互类型的网站不多. 上述架构下,我们来看看数据存储的瓶颈是什么? 1.数据量的总大小 一个机器放不下时 2.数据的索引(B+ Tree)一个机器的内存放不下时 3.访问量(读写混合)一个实例不能承受  如果满足了上述1 or 3个,进化...... b)  Memcached(缓存)+MySQL+垂直拆分,后来,随着

NoSQL入门和概述

1 入门概述 1.1 互联网背景下大机遇,为什么用NOSQL? 1.1.1 单机MySQL的美好时代 在90年代,一个网站的访问量一般都是不大的,用单个数据库完全可以轻松应付. 在那个时候,更多的是静态网页,动态交互类型的网站不多. 在上述的架构上,我们来看看数据存储的瓶颈是什么? 1)数据量的总大小 一个机器放不小的时候 2)数据的索引(B树) 一个机器的内存放不下的时候 3)访问量(读写混合) 一个数据库不能承受 1.1.2 Memcached(缓存)+MySQL+垂直拆分 后来,随着访问量

Redis学习一:Nosql入门和概述

现在Redis越来越火,为了适应技术的发展,开始学习一下Redis,在学习Redis之前先学习一下Nosql. 第一部分:入门概述 1.1 互联网时代背景下大机遇,为什么用nosql 1.1.1 单机Mysql的美好年代(好几年前) 当时的业务很相对简单,就是JSP--->Action---->Service---->DAO----->数据库,数据库也就是一个实例而已,无论是Mysql还是Oracle.把这五层缩减为三层的话便是:应用层------>DAO层------>

《NoSQL入门》关于NoSQL

关于NoSQL的专栏申请了可能快一年了,也没有填充一篇文章,今天看到,还是先写一篇放进去吧.现在应用NoSQL的人也非常多了,大家可能都不再陌生了,中文方面的资料已经漫天飞舞了.但是查看知乎中 NoSQL 相关话题的回答数却寥寥无几.可能是大家都更多的去关注相关实际技术的应用了,而忽略了这一概念的本质. 什么是NoSQL? 百度百科中:NoSQL,泛指非关系型的数据库.中文名:非关系型数据库,外文名:NoSQL=Not Only SQL 看 Wikipedia中:A NoSQL (origina

MongoDB(NoSQL) 入门

一.简介 NoSQL数据库因其可扩展性使其变得越来越流行,利用NoSQL数据库可以给你带来更多的好处, MongoDB是一个用C++编写的可度可扩展性的开源NoSQL数据库. 本文主要讲述MongoDB的安装.配置.运行.官方网站:http://www.mongodb.org 二.下载.安装 下载页面:http://www.mongodb.org/downloads 笔者使用的MongoDB2.0.6 Windows版本下载地址:http://downloads.mongodb.org/win3

一、NoSQL入门概述

TinTin的code之道初章

工作已经八年了,我也不记得自己是什么时候开始,算是走上程序员的这条道道. 大学时学过C++, VB.net, Matlab, 计算机图形学, GPS .工作中做过管理系统,检测系统,共享工具.然后第二份工作做考勤,做ERP, 做在线会议. 直到现在才开始做面向很多用户的专职前端开发. 有时候很羡慕现在的CS专业的同学,能在大学的时候就接触这么多的信息,明确学习的方向.而怠惰的我,直到前两年接触知乎和像博客园这样的网站,才算对自己的程序员之路有了一些认识. 当然,毋庸置疑的是,其实学习的最大障碍还

CouchBase学习之环境搭建以及HelloWorld

一.引言 NoSQL(Not Only SQL),火了很久了,一直没空研究.最近手上一个项目对Cache有一定的要求,借此机会对NoSQL入门一下.支持NoSQL的数据库系统有很多,  比如Redis,MongoDB等.每种系统都有自己的优缺点,根据实际情况我们选用了CouchBase作为切入点学习.这里有几种数据库的比较:http://www.csdn.net/article/2013-04-15/2814886-nosql-benchmark CouchBase,是MemBase与couch