写点什么

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

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

关注

评论

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

DistilQwen2:通义千问大模型的知识蒸馏实践

阿里云大数据AI技术

人工智能 知识蒸馏 通义千问

数字身份发展趋势前瞻:身份韧性与安全

芯盾时代

身份安全 iam 统一身份管理平台

基于图遍历的Flink任务画布模式下零代码开发实现方案

京东科技开发者

一文说清什么是数据要素

郑州埃文科技

数据要素

低代码平台服务编排提升

鲸品堂

低代码 交付工具 企业号 2024年11月PK榜

昆仑万维重磅发布天工AI高级搜索功能,做最懂金融投资、科研学术的AI搜索

新消费日报

如何配置 GreptimeDB 作为 Prometheus 的长期存储

Greptime 格睿科技

存储 时序数据库 Promethues

如何利用模版进行设置仿真默认参数z

思茂信息

教程 模板 cst

【堡垒机小知识】堡垒机用户认证是什么意思?一般有哪些方式?

行云管家

网络安全 堡垒机

非凸科技助力第49届ICPC亚洲区域赛(成都)成功举办

非凸科技

ICPC

常规LED广告显示屏运营成本怎么估算

Dylan

广告 运营 LED display LED显示屏 全彩LED显示屏

DolphinScheduler集成Arthas实现接口调用监控,提升调度任务可靠性

白鲸开源

工作流调度 Apache DolphinScheduler #开源

经济下行,当下企业如何破局?

禅道项目管理

需求管理 IPD 市场分析 IPD落地 IPD培训

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测试人

人工智能 软件测试 测试开发 高校

语忆科技携手火山引擎数据飞轮 探索智能客服场景新可能

字节跳动数据平台

大数据 数仓 数智化转型 数据飞轮

细谈 Linux 中的多路复用epoll

威哥爱编程

Linux epoll Java.

Kubernetes时代的APM部署革新:基于Webhook的Agent动态注入

云智慧AIOps社区

APM 应用监控

服装品牌必备:智能商品管理系统,打造高效运营新引擎!

第七在线

泄漏检测与修复综合管理系统(源码+文档+部署+讲解)

深圳亥时科技

计算不停歇,百度沧海数据湖存储加速方案 2.0 设计和实践

百度Geek说

人工智能 数据库 百度 数据湖

【征程 6 工具链性能分析与优化-2】模型性能优化建议

地平线开发者

自动驾驶; #算法

一起单测引起的项目加载失败惨案

京东科技开发者

GreptimeDB vs. ClickHouse vs. ElasticSearch 日志引擎性能对比报告

Greptime 格睿科技

数据库 Elastic Search Click house 性能报告

深度解析1688阿里巴巴平台商品详情API接口

代码忍者

API 接口 pinduoduo API

【征程 6 工具链性能分析与优化-1】编译器预估 perf 解读与性能分析

地平线开发者

指标+AI+BI:构建数据分析新范式

袋鼠云数栈

HyperWorks作业递交面板设置

智造软件

CAE Hypermesh hyperworks

基于IM场景下的Wasm初探:提升Web应用性能|得物技术

得物技术

rust web前端 Wasm

AI工具百宝箱|一键解锁o1/ChatGPT/Gemini/Claude等应用的网站,等你来体验!

可信AI进展

2025郑州等保测评机构名称看这里!

行云管家

等保 等级保护 郑州

第二届全国高校软件测试开发教育峰会在韩山师范学院隆重举办!

测吧(北京)科技有限公司

测试

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