存储 频道

浅谈互联网运营商的特殊集群——NoSQL

  有人问说,如果读的时候只从当初写入的那个节点读不就都一致了么?是的,但是这样做就无法保证性能了,所有节点均可同时写入同时读取同一份副本,这样性能是最高的,只不过牺牲了一致性。如果要保证一致性,那么就采取NWR模型来调和到底是要读性能高(增加W的值)还是要写性能高(降低W的值),读写性能都高的话就得完全牺牲一致性,这就是NWR模型的魅力所在。

  水平切分与垂直切分

  数据在集群中的分布有两种方式:第一种是水平切分方式。例如一张表,可以水平被“切分”为多张表,每张表都保存有原来的列,每张表被分别存储到集群中的一个节点中(并保留其他两个副本);而垂直切分相当于把一张表竖直“裂开”为多张表,原来的多个列被拆开,分别存储在集群中的一个节点中(并保留其他两个副本)。无论是水平切分还是垂直切分,都相当于把数据打散,从而获得超高的随机查询性能。垂直切分相当于是基于业务层面的切分,具有一定的人为介入度;而水平切分则相当于全局层面的数据盲切分。

  此外,这种弱一致性的数据库集群一般都不支持事务,同时也不支持传统关系型数据库的关联查询动作。也就是说,由于完全分布式,所以多个节点之间的数据如果想要进行关联查询是很不经济的,会导致整个系统慢得不可想象。所以,这类去关联性的、弱一致性的分布式数据库系统,就属于NoSQL系统,即“抛弃传统SQL”或者“Not Only SQL”的意思。典型的例如Dynamo、Canssandra、PNUTS、Azure等,都属于这类系统。

  【NoSQL发展历史】

  NoSQL一词最早出现于1998年,是Carlo Strozzi开发的一个轻量、开源、不提供SQL功能的关系数据库。

  2009年,Last.fm的Johan Oskarsson发起了一次关于分布式开源数据库的讨论。来自Rackspace的Eric Evans再次提出了NoSQL的概念,这时的NoSQL主要指非关系型、分布式、不提供ACID的数据库设计模式。

  2009年在亚特兰大举行的“no:sql(east)”讨论会是一个里程碑,其口号是“select fun, profit from real_world where relational=false;”。因此,对NoSQL最普遍的解释是“非关系型的”,强调Key-Value Stores和文档数据库的优点,而不是单纯的反对RDBMS(关系型数据库系统)。

  【作者简介】张冬:IT畅销书《大话存储》及《大话存储2》的作者,常年致力于存储技术的研究,以及存储产品规划与设计。现就职于华为赛门铁克科技有限公司。

  来源:维基百科

0
相关文章