微软Azure DocumentDB文件数据库概览
2014年8月,微软发布了Azure DocumentDB,显而易见,这是微软在Azure云平台上推出的NoSQL文件数据库服务。
本文只是对Azure DocumentDB的一个概览,但是我希望能起到抛砖引玉的作用激发大家对于Azure DocumentDB的兴趣。在这里bit.ly/1GMnBd9大家可以读到SGS国际公司使用Azure DocumentDB的体验。SGS国际的一个开发人员后来在微博 上@我说他们的客户相当满意。
关于文件数据库
顾名思义文件数据库以文件的形式储存数据,通常使用的是JSON格式的文件(MongoDB使用的是BSON格式,其实就是JSON格式的二进制形式)。文件数据库的优点是数据量大的时候性能相当好,因为它省去了关系型数据库中的连接查询操作。文件数据库的另一个特性是没有schema的概念,数据库中的每一个文件都可以定义自己的schema。下面的JSON文件就是一个文件的例子
{
"菜名": "疯狂巧克力",
"摘自": "复活节餐厅菜谱",
"点评":"最起码够20个人吃",
"原材料":[
{
"名字":"黑巧克力",
"数量":"1斤3两6钱",
"注意事项":"要用巧克力棒,最好用金帝巧克力"
},
{
"名字":"鲜奶油",
"数量":"2杯"
},
{
"名字":"黄油",
"数量":"2汤匙"
}
],
"做法": "将奶油和黄油倒在巧克力上"
}
请注意文件的内容无需解释,而且其中包含了与菜单有联系的相关信息(原材料)。文件数据库还有一个特性就是一般都能通过HTTP来调用,稍后我们会进一步介绍。
Azure DocumentDB的结构
之前我们举了一个DocumentDB中文件的例子,但Azure DocumentDB不是仅仅由一堆文件组成的。文件是一种资源,而且可以归类成集合。集合也是资源,用户可以通过HTTP来实现对集合的创建,更新,删除和选取。事实上DocumentDB就是由不同种类的资源和集合所组成的。你可以创建多个账户而每一个DocumentDB账户可以创建多个数据库。
除了这些资源,DocumentDB也有与关系型数据库中类似的存储过程(SP),自定义函数(UDF),索引(index)以及触发器(trigger)。
另外,DocumentDB中还有一种资源-附件。与JSON文件关联的任何二进制文件都是附件。附件存储在Azure块存储Blob Storage中,其附加信息则存储在DocumentDB中,使用户可以方便地取得附件的属性信息。
除此之外,DocumentDB有自带的安全特性,当然你也可以像文件一样操作数据库用户和权限。
操作DocumentDB
有下面这些方法来操作DocumentDB中的资源:SQL,REST API以及各种API。这其中也包括.NET API,使用.NET API的一点好处就是你可以使用LINQ来查询数据库。想了解更多关于DocumentDB数据库的查询,请点这里。
朱莉•勒曼 发表于MSDN杂志2015年6月刊
原文链接https://msdn.microsoft.com/en-us/magazine/mt147238.aspx