微软的Azure云平台提供了一系列的数据存储服务,包括文件存储、BLOB存储以及关系型数据库存储。而在去年8月份,微软还发布了一款新的云数据库服务Azure DocumentDB。与其他服务相比,DocumentDB究竟有哪些特别之处,它解决了用户哪些需求。在本文中,我们就将深入介绍一下微软AzureDocumentDB文档数据库存储。
首先,DocumentDB在一些场景中会比传统关系型数据库更有优势。文档数据库在NoSQL家族中是最受欢迎且应用最为广泛的一类,比如MongoDB。它通过JSON文档来存储数据,不需要固定的Schema生成数据表(table)和列(column)。开发人员可以根据需求来创建一系列的集合(collection)、文件和字段。你可以把集合看作是关系型数据库中的表,文件就相当于一张表中的行(row),字段相当于表中的列。
因为文档数据库没有固定的结构,所以开发者可以根据新的数据需求来快速地进行调整。举例来说,关于一本书信息,用关系型数据库来存储的话,它的列将包含书名、作者、出版社、出版日期以及页数等。现在电子书这么流行,要添加电子书文件大小的信息,传统上来说DBA需要先修改数据库表的定义,才能添加新的列。而使用文档数据库就可以自动地添加新的字段,DBA将文件大小字段(通常以KB来计算)添加到JSON文档,然后存储到数据库即可。包括产品、客户以及设备等信息都可以使用文档数据库来存储相应的数据。
在读写方面,文档数据库也有着独特的优势。但对于那些已经习惯关系型数据库的人来说,文档数据库要体现它的优势则需要不同的方法来进行设计。
这些数据库往往是去规范化的,通过一个单独的文档来存储相关内容,而不是使用几张表。去规范化的宗旨是避免连接(join),它是造成查询延时的罪魁祸首之一。 连接只有在拥有适当索引的数据库表和精心设计的查询语句当中才能够体现出高效率。但由于要在不同的表之间进行键(key)的匹配,同时需要在磁盘的不同位置来检索数据,因此产生延迟是不可避免的。
DocumentDB的“同”与“不同”
Azure DocumentDB与其他比较流行的文档数据库有所不同,它的一些特性更合传统关系型数据库开发人员的胃口。它支持SQL集合查询,底层数据库引擎经过调整后可以更好地适应JSON文档存储。然而,DocumentDB的SQL与标准化的SQL之间还是存在一定差异。举例来说,DocumentDB SQL支持数据的分层引用。如果在一个集合中有一个客户文档叫做“’customers”,这个文档又包含一个地址文档的话:
{
customer_id: 139839,
customer_fname: ‘Susan’,
customer_lname: ‘Washington’,
customer_address: {
street: ‘1256 SE Main St’,
city: ‘Portland’,
state: ‘ME’
}
}
在这种情况下,你需要在SQL语句中以“customers.customer_address.city”引用城市。它的查询语言还支持数组,这在文档数据库中是很常见的。
DocumentDB能够在没有指定索引的情况下自动地对文档进行索引。如果你已经习惯在关系型数据库中把索引数量控制在最少以改善写性能,那么这个功能也许就没那么重要。但对于文档数据库来说却不同,因为文档中的字段是千变万化的。任何一个字段,即使是在很少文档中包含的字段,也可能会用在一个WHERE语句里,那么它就可以从索引中获益。
DocumentDB支持存储过程、用户定义函数和触发器,这些都是SQL Server用户非常熟悉的功能。此外,DocumentDB不使用T-SQL,它是由JavaScript语言开发的。
.NET开发者可能更倾向于使用LINQ库来查询DocumentDB,查询处理器可以将LINQ查询映射到SQL查询中,并将其运行在数据库上。
微软以容量单位来收取DocumentDB的费用,即存储数据所需要的核心资源。一个标准的容量单位包括10GB的本地SSD存储,每秒2000个请求和2GB的BLOB存储。其中每秒2000个请求对于每秒2000个读操作或者500个插入、替换和删除操作已经绰绰有余。在服务预览阶段,微软将以半价的形式收取服务费用,即每一个容量单位的DocumentDB收费标准为0.73美元/天。
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
作者
Dan Sullivan是一名作家、系统架构师和顾问,拥有超过20年关于先进的分析、系统架构、数据库设计、企业安全、商业智能的IT从业经验。他的从业范围广泛,包括金融服务业、制造业、医药、软件开发、政府、零售、天然气和石油生产、发电、生命科学和教育。
翻译
相关推荐
-
Google Cloud Firestore将NoSQL数据库瞄准移动设备、物联网
谷歌云平台(Google Cloud Platform,GCP)再次向竞争对手AWS和微软Azure发起进攻: […]
-
云端SQL Server高可用性最佳做法
与内部部署相比,在云端运行SQL Server可为数据库软件用户提供更多的灵活性和可扩展性,也可能更省钱。但云 […]
-
MongoDB 4.0将支持多文档ACID事务
MongoDB即将推出4.0版本,这款NoSQL数据库很显然针对基于SQL的系统提供了更多深入的支持:ACID […]
-
绘制数据关系图的利器:SQL Server 图像数据库工具
SQL Server 2017新增了图形数据库功能,你可以使用图结构来表示不同数据元素之间的关系。