写点什么

使用 F# Azure Storage Type Provider 探索 Azure

  • 2016-05-17
  • 本文字数:1397 字

    阅读完需:约 5 分钟

Azure Storage Type Provider 提供对 Azure 存储数据资源的静态类型访问: BLOB 以及队列。项目的维护者Isaac Abraham 最近和大家交流了如何使用type provider和这些数据资源交互

对于所有数据资源来说,对type provider 的设置都是相同的:

复制代码
open FSharp.Azure.StorageTypeProvider
// Connect to a live account using a two-part name and key.
type Storage = AzureTypeProvider<"name", "key">

Blob

Azure Blob storage 是将文件数据存储在云端的一项服务。storage type provider 通过下面的示例提供对容器和文件的静态类型访问:

复制代码
let container = Storage.Containers.samples
let theBlob = container.``folder/``.``childFile.txt``
printfn "Blob '%s' is %d bytes big." theBlob.Name theBlob.Size
let totalSize =
[ container.``file1.txt``
container.``file2.txt``
container.``file3.txt``
container.``sample.txt`` ]
|> List.sumBy(fun blob -> blob.Size)
printfn "These files take up %d bytes." totalSize


Azure Table storage 将 NoSQL 键值存储托管于 Azure 上。NoSQL 数据库是无模式的,表的行不需要包含相同属性。Azure Table storage 支持在有限范围内的查询,可以通过查询键或者属性来得到相对应的行。它实现了OData 协议,这对查询非常重要。

storage type provider 可以提供基础的 CRUD 操作,对管理数据很有必要。有几种办法进行查询,以下的例子是一个简单的键查询:

复制代码
let employeeTable = Storage.Tables.employee
let firstEmployee = employeeTable.Get(Row "1", Partition "women")
let allWomen = employeeTable.GetPartition("women")

type provider 提供了 IQueryable 实现来满足属性查询。然而,由于 Azure Table 支持的查询操作受限,这个解决方案也是有限制的。一种可能的选择是使用 type provider 自动生成的条件:

复制代码
let longerQuery = employeeTable.Query()
.``Where Years Working Is``.``Greater Than``(14)
.``Where Name Is``.``Equal To``(“Fred”)
.``Where Is Manager Is``.True()

队列
Azure Queue storage 是消息服务,基于 REST 方式访问。Queue storage 还支持管理异步任务和搭建过程工作流。

相比较于一个传统的队列 API,type provider 并没有太多优势,它不能提供模式或是拓展查询。然而,它为开发和调试提供了几个功能。使用 F# Interactive 就可以直接从 IDE 实现查询。

复制代码
let queue = Azure.Queues.``sample-queue``
async {
printfn "Enqueuing a message!"
do! queue.Enqueue("Hello from Azure Type Provider")
printfn "Queue length is %d." (queue.GetCurrentLength())
// Get the message back off the queue
let dequeuedMessage = (queue.Dequeue() |> Async.RunSynchronously).Value
printfn "%A" dequeuedMessage
printfn "Deleting the message."
do! queue.DeleteMessage dequeuedMessage.Id
printfn "Queue length is %d." (queue.GetCurrentLength())
} |> Async.RunSynchronously

Azure Storage Type Provider 是一个开源的项目,可以在GitHub 上获得。

查看英文原文 Exploring Azure with F# Azure Storage Type Provider


感谢张龙对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2016-05-17 19:001466
用户头像

发布了 218 篇内容, 共 79.1 次阅读, 收获喜欢 76 次。

关注

评论

发布
暂无评论
发现更多内容

供应链协同——企业全球供应链可持续发展的基础

用友BIP

全球化 中企出海

接口测试|Fiddler界面主菜单功能介绍(二)

霍格沃兹测试开发学社

fiddler

融云WICC2023:成为「卷王」的路上,如何更好借力 AIGC

融云 RongCloud

互联网 融云 泛娱乐 出海 通讯

为何选择美国主机来托管你的网站?

一只扑棱蛾子

美国主机

生态共建丨YashanDB与天玑数据完成兼容互认证 - 知乎

YashanDB

谈谈数智人力建设过程中发现的问题及感悟

用友BIP

数智人力

研发效能平台的“双流”模型

CODING DevOps

上新!智能分析云助力【消费品行业】实现数智驱动

用友BIP

数据分析

接口测试|Fiddler界面工具栏介绍(一)

霍格沃兹测试开发学社

fiddler

LangChain Java-the Java implementation of LangChain

HamaWhite

openai LLM #LangChain langchain LLM模型

全球唯一云厂商 华为云入选2023Gartner云数据库管理系统客户之选

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 6 月 PK 榜

全方位赋能开发者成长!华为开发者联创日·深圳站圆满落幕

彭飞

敏捷工具盘点

顿顿顿

敏捷工具 scrum工具 scrum敏捷工具

高效协同办公+降本增效,华为云OA上云解决方案做了什么?

YG科技

卡口服务 —— 基于前端巡检系统的拓展实践|得物技术

得物技术

接口测试|Fiddler介绍以及安装

霍格沃兹测试开发学社

fiddler

如何实时统计最近 15 秒的商品销售额|Flink-Learning 实战营

Apache Flink

大数据 flink 实时计算

软件测试/测试开发丨学习笔记之Docker常用命令

测试人

Docker 程序员 容器 软件测试 测试开发

接口测试|Fiddler界面主菜单功能介绍(一)

霍格沃兹测试开发学社

fiddler

接口测试|Fiddler界面工具栏介绍(二)

霍格沃兹测试开发学社

fiddler

Cloud Studio 浏览器插件来啦

CODING DevOps

中国的“贝尔实验室”:我们的数据库从内核的第一行代码写起

YashanDB

这样的全面预算体系才能构建一流财务体系!

用友BIP

全面预算

时序数据库 TDengine 与 OpenCloudOS8、TencentOS Server2&3 完成产品兼容性互认证明

爱倒腾的程序员

涛思数据 时序数据库 ​TDengine taosdata

华院计算宣晓华:未来十年,基于数据与知识融合的模型将大放异彩

TE智库

人工智能 AI 华院计算

云原生应用交付平台Orbit设计理念与价值主张

CODING DevOps

云原生 Orbit

如何用数字人技术让课堂活起来?番职院和3DCAT实时云渲染给出答案

3DCAT实时渲染

元宇宙 实时云渲染 虚拟数字人 AI虚拟形象

数字时代云成本越来越高,企业IT负责人们该如何选择弹性云服务器呢?

YG科技

使用F# Azure Storage Type Provider探索Azure_.NET_Pierre-Luc Maheu_InfoQ精选文章