NOSQL 相关概念理论

标签: nosql 相关 概念 | 发表时间:2013-12-08 16:16 | 作者:zhuyufufu
出处:http://www.iteye.com
本文介绍一下NoSQL相关的知识。

书籍推荐 <<NoSQL精粹>> 英文名 <<NoSQL Distilled>> 作者 Martin Fowler。

   第一眼看到NoSQL时把它理解为No SQL,这让我着实高兴了一阵子。因为我对SQL没啥兴趣,尤其遇到写Function、Procedure、Trigger时更是烦恼。这下子出了个不要SQL的数据库理论加有实际开源产品的东东,我很高兴。

   但是找了相关资料看了之后稍微有点失望:NoSQL的意思为 Not Only SQL。也就是说数据存储技术不仅仅是SQL的意思。
  
   关系数据库制霸数据存储领域几十年了,这期间也出现过挑战其地位的理论,如对象数据库、文件存储数据、XML数据库等等。但是关系数据库的地位一直稳如磐石。
  
   如今看来NoSQL的出现也挑战不了关系数据库的地位。NoSQL的目标就是协助构建高性能、易扩展、易编程的系统。
  
   NoSQL看起来更像是要和关系数据库和平共处,互助互补。NoSQL带来的是数据持久化的另一种选择。NoSQL可能要开启数据库领域混合持久化时代。

  
   大师说应用程序 选择NoSQL有两个理由:
      提高应用程序开发效率:选择了NoSQL就可以抛弃ORM映射,改为直接存储程序数据结构元素;这是更符合应用程序需求的一种数据模型及开发过程。
      NoSQL可以更高效地处理大规模数据: NoSQL分布式集群部署简单,NoSQL存储的数据模型更符合应用程序需要;关系数据库是为独立运行的计算机设计的,其数据模型与现今流行的面向对象编程阻抗失衡,需要做一个关系映射。

   
   下面重点介绍一下NoSQL的四种模型、分布式模型、Map-Reduce(映射-化减)等概念。

   四种NoSQL数据库:

    1. 键值数据库(Key-Value Store): 它可以理解为一张简单的哈希表(hash table),主要应用在所有数据库访问均通过主键访问的情况下。
       键值数据库API简单,能够存储程序聚合单元(通俗理解为可以存储对象)。
       流行的键值数据库有:Riak,Redis(数据结构服务器,Data Structure Server),Memcached DB,Memcaced,HamsterDB。
       我自己闲暇时把弄过Memcached,其通过字符串键值来操作数据;确实可以存储序列化后的Java对象;可以做一个集群部署;应用程序接口确实很简单。

     2. 文档数据库(Document DataBase): 文档数据库可以存放并获取文档,其格式可以为XML、JSON、BSON等;这些文档具有自描述性(self-decribing),呈分层的树状数据结构(Hierarchical tree data structure),可以包含映射表、集合和纯量值;数据库中文档彼此相似,但不必完全相同;其存放的文档就相当于键值数据库所存放的值。
     流行的文档数据库有: MongoDB、CouchDB、OrientDB、RavenDB等。
     我写过MongoDB的Hello World程序,以后再继续关注。

     3. 列族数据库: 其可以存储关键字及其映射值,并且可以把值分成多个列族,让每个列族代表一张数据映射表。
      流行的列族数据库: Cassandra,HBase,Hypertable等。
      个人暂时还没有应用过列族数据库。
    
     4. 图数据库: 可以存放实体及实体间关系;实体又叫节点(Node),他们具有属性(Property);可以将节点视为应用程序中某个对象实例;关系又叫边(edge),他们也有属性 ;边具备方向性(directional significance),而节点则按关系组织起来,以便在其中查找所需模式;用图将数据一次性组织好,便可以根据关系以不同的方式解读它。
       图数据库有:Neo4J、Infinite Graph、OrientDB等。
       暂时还没有接触过图数据库。


    分布式部署可能是非常熟悉的名词了,那数据库的分布式模型又有哪些呢?下面来介绍一下:

   数据分布有两条路径:复制(replication),分片(sharding)。
   分片则是将不同数据存放的不同节点,每一个数据子集都有专门一台服务器负责。
   复制就是将同一份数据拷贝至多个节点。
   复制又可以分为两种形式:主从复制,对等复制。
   主从复制:将其中一个节点作为权威数据源,并负责写入操作;其他从节点都要和主节点保持同步,他们可以负责读取操作。
   对等复制:任何节点都可以写入,节点间相互协调以同步其数据。

   以上介绍了数据库的3种分布式模型,其优缺点都非常明显:
 
   分片部署模型:优点是对应用性能提升作用明显(同时提升了读写性能);缺点是故障恢复能力没有;但是某个节点故障只会影响部分用户又是其优点了。
  
   主从复制模型:优点是提升了数据库读的能力,避免了写入冲突;缺点是数据库写可能成为应用的瓶颈,并且主库一旦故障了没有恢复能力。
 
   对等复制模型:优点是解决了主从复制写的毛病;缺点是引入了数据一致性的问题。


   大师的思考:
    面向聚合的数据库能够兴起,很大程度上是由于集群的增长。运行在集群环境中的数据库对数据存储问题的权衡方式与单机环境有所不同。集群不仅改变了数据存储规则,而且改变了数据计算规则。如果把大量数据放在集群里,那么为了有效处理数据,你必须以另外一种思路来考虑如何安排数据处理流程。
   当把数据库放到集群后,立刻带来一个好处:把运算工作分布到多台计算机中去。然而此时仍要试着减少通过网络传输的数据量,把某个节点所需的数据尽可能多的放在节点执行。


   映射-化减 模式(map-reduce pattern)是一种安排数据处理流程的手段,可以利用集群中的多台计算机,同时又能将某台计算机所需的数据及处理工作尽量放在本机执行。
    

已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [nosql 相关 概念] 推荐:

NOSQL 相关概念理论

- - SQL - 编程语言 - ITeye博客
本文介绍一下NoSQL相关的知识. 书籍推荐 <> 英文名 <> 作者 Martin Fowler.    第一眼看到NoSQL时把它理解为No SQL,这让我着实高兴了一阵子. 因为我对SQL没啥兴趣,尤其遇到写Function、Procedure、Trigger时更是烦恼.

Oracle MySQL Or NoSQL续

- - Sky.Jian 朝阳的天空
接前面一篇,这里再将之前在“中国系统架构师大会”5周年的时候发布的纪念册“IT架构实录”上的一篇文章发出来,也算是前面博文中PPT的一个文字版解读吧. Oracle,MySQL 还是 NoSQL. 随着阿里系的“去IOE”运动在社区的宣传声越来越大,国内正在掀起一股“去xxx”的技术潮. 不仅仅是互联网企业,包括运营商以及金融机构都已经开始加入到这个潮流之中.

MySql性能相关的一些概念(性能tip0)

- - BlogJava-首页技术区
题首:这是最近读《高性能MySqL 第二版》记录下来的东西~. #读锁(共享锁)、写锁(排他锁):读锁是共享的,互不阻塞,读取同一资源互不影响;写锁排他,一个写锁会阻塞其他的读写操作. #锁定对象的粒度:表锁和行锁. 表锁:整个表加锁,当写操作时,加写锁,资源访问排他. 当没有写时,加读锁,读锁互不冲突.

NoSQL开篇——为什么要使用NoSQL

- Foxiang - 博客园新闻频道
  NoSQL在2010年风生水起,大大小小的Web站点在追求高性能高可靠性方面,不由自主都选择了NoSQL技术作为优先考虑的方面. 今年伊始,InfoQ中文站有幸邀请到凤凰网的孙立先生,为大家分享他之于NoSQL方面的经验和体会.   非常荣幸能受邀在InfoQ开辟这样一个关于NoSQL的专栏,InfoQ是我非常尊重的一家技术媒体,同时我也希望借助InfoQ,在国内推动NoSQL的发展,希望跟我一样有兴趣的朋友加入进来.

8种nosql对比

- - 谁主沉浮
虽然SQL数据库是非常有用的工具,但经历了15年的一支独秀之后垄断即将被打破. 这只是时间问题:被迫使用关系数据库,但最终发现不能适应需求的情况不胜枚举. 但是 NoSQL数据库之间的不同,远超过两 SQL数据库之间的差别. 这意味着软件架构师更应该在项目开始时就选择好一个适合的 NoSQL数据库.

Oracle 发布 NoSQL 数据库

- 冷月 - 博客园新闻频道
  Oracle 作为全球最大的关系型数据库提供商,在其产品链条中,也加入了 NoSQL 数据库这一环,而且这个新的数据库名字很霸气,就叫 NoSQL Database,想起了当年新浪微博更换 weibo.com 域名之时的一个笑话:. 原来有三家人做面包,张三家的面包叫三张牌面包,李四家的牌子叫李四牌面包,王五家出品的是王五牌面包,而突然有一天,张三家的面包改名了,叫面包牌面包.

NoSQL 数据建模技术

- - 博客 - 伯乐在线
全文译自墙外文章“ NoSQL Data Modeling Techniques”,译得不好,还请见谅. 这篇文章看完之后,你可能会对NoSQL的数据结构会有些感觉. 我的感觉是,关系型数据库想把一致性,完整性,索引,CRUD都干好,NoSQL只干某一种事,但是牺牲了很多别的东西. 总体来说,我觉得NoSQL更适合做Cache.

Nosql Redis ttserver Flare memcache比较

- - 小彰
随着互联网web2.0网站的兴起,非关系型的数据库现在成了一个极其热门的新领域,非关系数据库产品的发展非常迅速. 而传统的关系数据库在应付 web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,例如:. 1、High performance - 对数据库高并发读写的需求.

论NoSQL的数据模型

- - NoSQLFan
本文内容是对《 NoSQL Data Modeling Techniques》一文的简单概述,原文对NoSQL的几种 数据模型进行了详细深入的讨论. 是了解NoSQL数据模型不过错过的全面资料. NoSQL的一些非功能性的特性,比如扩展性、性能以及一致性的讨论,目前已经有很多. 而对于NoSQL产品内部数据模型相关的知识一直比较欠缺,本文就希望能够系统地对NoSQL数据模型进行一些探讨.

換 NoSQL 前的建議…

- - Gea-Suan Lin's BLOG
原文是「 Medium Data: things to try before abandoning SQL」,放棄 SQL 前應該要嘗試的事情,原文一開始就用粗體說明帶有強烈的偏見 XD. First, my thesis: a lot of less-experienced developers are using big data and NoSQL technologies because they are new and cool, and because SQL is old and hard.