2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

使用 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:001243
用户头像

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

关注

评论

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

深入解析Apache Flink核心概念:事件流、状态、事件时间和快照

木南曌

实时计算

海外云手机——电商最有效的引流工具

Ogcloud

云手机 海外云手机 云手机海外版 电商云手机 跨境云手机

人类将会永生?谷歌 DeepMind重磅发布Alphafold 3 ——天花板级别的AI系统

GPU算力

深度学习 DeepMind 生物信息学 AlphaFold 蛋白质预测

个人名片升级攻略:ChatGPT助您塑造独特简历风格

测试人

软件测试 简历 ChatGPT

大厂技术同学的落地困境

老张

团队管理 职业规划 职场发展 大厂求职

IDC 权威认可!Aloudata 入选金融领域中数据管理分析服务最佳实践案例

Aloudata

数据分析 自动化 IDC 全链路数据血缘 金融数据

在数字化时代保持企业财务管理的持续技术创新

智达方通

特权账号管理的那些坑

芯盾时代

iam 统一身份认证 特权账号管理

建木Hub流水线正式版上线啦!!限时送200分钟体验时长

都广科技

DevOps

外贸网站优化为什么要布置内部链接?如何优化内链?

九凌网络

怪兽AI数字人直播软件

Mr_song

AI 短视频 直播 数字人

一键自动化博客发布工具,用过的人都说好(csdn篇)

程序那些事

工具 程序那些事 自动发布

进一步解读英伟达 Blackwell 架构、NVlink及GB200 超级芯片

GPU算力

深度学习 英伟达 Blackwell GB200

Django性能之道:缓存应用与优化实战

不在线第一只蜗牛

sqlite django 缓存

电商后台的秘密:通过API接口提取商品信息

Noah

产品经理必备的API技术知识

幂简集成

产品经理 API

NFTScan | 05.06~05.12 NFT 市场热点汇总

NFT Research

NFT NFT\ NFTScan

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