Azure的的NoSQL技术技术
长期以来,传统关系型数据库占据了数据存储的大片江山。但是随着互联网web2.0网站的兴起,传统的关系数据库在应付
web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题。
NoSQL,泛指非关系型的数据库,由于其本身的特点得到了非常迅速的发展。
作为云计算领域大型厂商的Azure云,对NoSQL技术有一系列很好的支持。Azure云将数据大概分为两种:运行时数据和分析
数据。所谓运行时数据就是云计算应用在运行过程中产生的数据,比如购物车添加的某个商品,比如人力资源系统中员工信息
以及股票交易系统里的股票买入卖出价格。所谓分析数据,则是通过对运行时数据进行分析后的数据,比如对用户购买数据进
行分析后得到的市场预测或者用户购买行为建模数据。这些数据随着应用的运行不断积累,通常来讲要比运行时数据大得多。
虽然这种分类不是那么清晰,但是业界通常用这种方式来选择是否使用NoSQL技术。如下图所示:
图中的绿色部分,就是Azure云提供的数据库相关工具,而黑色部分则是可以运行在Azure云上的其他数据库相关工具。在
NoSQL方面,Azure可以提供如下服务:
文档存储
使用Azure的DocumentDB,类似MongoDB。它包括了一系列由JSON格式构成的文档。注意这里面的Document跟以往微软
Word软件给出的Document不是一个意思。下图给出了DocumentDB的一个例子:
从例子可以看出,DocumentDB跟关系数据库最大的区别,也是NoSQL数据库的最大特点,就是它没有特定的Schema,并将
全部的数据以字符串的形式存储。在访问数据的时候,通常通过NoSQL给定的RESTful接口进行增删查改数据,可一次提交一
个或多个类似SQL的查询语句。RESTful接口支持的语言很多如.NET、Node.js、JavaScript和Python等。
跟大多数的NoSQL数据库一样,DocumentDB可以处理海量数据。其数据存储可以分布在多台机器,而且为了防止数据访问
出错,DocumentDB还对一份数据进行了多份备份。当然多备份通常意味着对数据更新和修改的成本会增加,这就需要开发者
自己来权衡开发效率和开发效果了。DocumentDB提供了四种数据访问格式:增强型,最慢但是可以保证数据的正确性。过期
数据标注型,告诉开发者正在访问的数据是否过期,让开发者决定是否对数据进行更新。会话型,同一个应用内部可以保证数
据的正确性,不保证跨应用的数据正确性。快速型,提供最快的数据访问速度,但是返回过期数据的概率也是最大的。
DocumentDB是Azure的内置服务,用户无需安装就可以创建新的数据库和数据集合。并且它通过“运算能力单元”(Capacity
Units)来保证在多租户的情况下单一用户的性能需要。此外Azure云存储还提供MongoDB、RavenHQ和Redis等其他NoSQL
技术。