【AICon】AI 基础设施、LLM运维、大模型训练与推理,一场会议,全方位涵盖! >>> 了解详情
写点什么

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

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

关注

评论

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

Cocos Creator学习のTiledMap

空城机

Cocos 5月月更

ArrayList源码分析-初始化

zarmnosaj

5月月更

一文掌握MySQL中的二进制日志,MySQL 优化学习第10天

梦想橡皮擦

5月月更

Redis「3」持久化

Samson

学习笔记 Redis 核心技术与实战 5月月更

druid 源码阅读(五)初始化连接池总结

爱晒太阳的大白

5月月更

架构实战营 - 毕业总结

smile

架构实战营

Druid连接池源码阅读05

石小天

【LeetCode】不含重复字符的最长子字符串Java题解

Albert

LeetCode 5月月更

模块九作业 - 设计电商秒杀系统

smile

架构实战营

数据库连接池 -Druid 源码学习(五)

wjchenge

Druid 数据库连接池

Go Web 编程入门:快速了解Fiber框架

宇宙之一粟

Go 语言 Fiber 5月月更

架构实战营模块5作业

天琪实刚亮

架构训练营毕业设计:电商秒杀系统

AragornYang

架构训练营 架构实战营

在线文本去重统计工具

入门小站

工具

druid 源码阅读 5——讨论下druid为什么不用AtomicLong

张大彪

有了测试组,为什么还要QA?

高山

测试 QA CMMI

C++最佳实践 | 3. 安全性

俞凡

c++ 最佳实践

一篇文章带你了解云计算

工程师日月

5月月更

Nacos源码系列—订阅机制的前因后果(上)

牧小农

源码 nacos

SpringWebFlux中WebClient怎么打印日志?

编号94530

spring 日志 WebFlux WebClient

MPEG-TS封装格式

Loken

音视频 5月月更

架构训练营 毕业总结

AragornYang

架构训练营 架构实战营

C++最佳实践 | 4. 可维护性

俞凡

c++ 最佳实践

setState 和 ModelBinding用法对比来看局部刷新效果

岛上码农

flutter ios 安卓开发 跨平台开发 5月月更

【愚公系列】2022年05月 二十三种设计模式(十四)-命令模式(Command Pattern)

愚公搬代码

5月月更

Maven 依赖管理与生命周期

Emperor_LawD

maven 5月月更

设计模式之代理模式

乌龟哥哥

5月月更

C++最佳实践 | 5. 可移植性及多线程

俞凡

c++ 最佳实践

在线TSV转XML工具

入门小站

工具

学生管理系统(3)

5月月更

K8S 准入控制器有哪些是默认的?

baiyutang

Docker Kubernetes 云原生 k8s 5月月更

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