三个趋势扰乱现有数据库的地位

交互性的应用在过去的15年来戏剧性的发生改变,所以数据的管理也需要这些应用。今天,三个相关的大趋势:-大数据、大用户、云计算。驱动着人们选择NoSQL技术。NoSQL已经越来越多的被认为是关系型数据库可行的替代品。尤其更多组织认识到操作最好是存档在集群、商品服务器。而无模式的数据模型像变化的总类和类型的获取和处理。

大用户

不久之前1000日用户算多的,而10000算极其多的。今天,随着全球互联网的增长,随着用户在线时间的增长,智能手机和平板的增长,百万级的用户已经不少见。

支持大量并发用户是非常重要的。然而,用户的使用习惯是难以预测的。能够动态的支持快速或弹性增长的并发用户是很重要的。

1、一个最新的app可以像病毒一样的泛滥,在一夜之间从零增长到百万用户。

2、一些用户会周期性的活跃,而其他的用户会很少用到,甚至用过后就不再用了。

3、季节的波动,比如情人节或者圣诞节,会在短期内创造峰值。

巨量的用户再加上人们变化的使用习惯驱动着对高伸缩性数据库技术的需求。而传统的关系型数据库,让许多的应用开发者觉得很困然甚至是不可能去实现动态动态伸缩和根据需要调整伸缩级别以维持用户对性能的要求。很多人转而向NoSQL求助。

大数据

通过第三方阵营,像facebook、D&B等,数据变得很容易获得和访问。个人的用户资料、地理信息、社会关系图、用户生成的内容、机器的日志信息,传感器生成数据,这些只是永恒增长数据中的一小部分例子。开发者想要通过数据来丰富存在的应用或者创造新的应用。而对数据的快速使用改变了自然的通讯、购物、广告、娱乐、人脉维护方式。App如果无法快速的利用它,将会被其他人抛在后面。

开发者需要一个非常弹性的数据库,能够容易容纳新的数据类型而不会被第三方数据提供者的内容结构改变所破坏。大部分的数据是无结构或者半结构化的,所以开发者需要一个高效的数据库来存储它们。不幸的是,严格定义、基于模式访问的关系型数据库,是无法快速的合并新的数据类型,并且他们也不擅长于处理半结构和无结构型数据。NoSQL提供的数据模型正好匹配了这个需求。

云计算

今天,大部分的应用使用三层的互联网架构,在公有或者私有云中运行,并支持大数据量的用户。在三层架构中,应用程序通过浏览器和移动应用以互联网的方式来访问。在云中,负载均衡导致直接的流量增加可以通过扩展服务器来处理,并且工作得很好。每10000新的并发用户,你可以简单的增加另外一个商品服务器在web应用层,就可以吸收这些负载。

而在数据层,关系型数据最初是受欢迎的选择。然而对其的使用越来越有问题。因为它是集中化的,它的共享方式是通过放大而非扩展。这造成了它很难适应应用程序动态调整的需求。而NoSQL数据库已经基于分布式构建,向外扩展的技术因此更能适应高分布式环境的三层互联网架构。

为什么开发者考虑NoSQL

1、更弹性的数据模型

关系型数据库和NoSQL数据模型是非常不同的。关系型数据库把数据分离到许多相互关联的包含行和列的表。表之间互相引用通过外键关联。当查询数据,需要的信息需要从许多表(有可能是上百个表)关联后才能提取。同样我们写也是。

NoSQL则有不同的数据模型。举个例子,一个基于文档的NoSQL数据库,会把你需要的数据以JSON的格式存储和聚集。每个JSON文档都可以被当成一个对象来使用。一个JSON文档可能,使用跨越20个表的关系型数据并聚集成单个文档。聚集信息会导致信息的复制,但是既然存储的增加不再是禁止的。而结果数据模型曾更加的弹性。容易高效的分布的结果文档。读写性能的改进作为一个容易的基于WEB应用一个简单的权衡而已。

另外一个主要的区别是关系型数据库有严格的模式而NoSQL是无模式的。关系型数据库在存储数据前需要严格的定义模式。对已经存在大量数据的的表修改其结构将是一件很麻烦的事情。非常有破坏性而应该避免。而矛盾的是在大数据时代,应用程序开发者需要的是持续的快速的包含新类型的数据来丰富他们的应用。

相较而言,文档数据库是无模式的,允许你自由的增加字段到JSON文档中而无需事先定义。已经插入的数据格式可以随时改变而不会对应用造成破坏。


2、可伸缩和性能的优势。

为了应付大数据和大用户,应用和潜在的数据库在两种选中调整其规模。扩大或者扩展。扩大则意味着集约化的访问方式依赖的是大或更大的服务器。扩展则意味着分布式的访问途径可以利用标准的、日常的虚拟或者物理服务器。