写点什么

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

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

关注

评论

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

浅谈 OLAP 系统核心技术点

Kyligence

存储 Kyligence OLAP系统

大数据+云:Kylin/Spark/Clickhouse/Hudi 的大佬们怎么看?

Kyligence

Gartner 报告最新解读:数仓 or 数据湖?

Kyligence

数据湖 Kyligence 数仓 Gartner

如何快速搭建统一数据服务,让数据资源成为数据资产

Kyligence

复杂分析场景,SQL or MDX ?

Kyligence

MLSQL:融合 Spark+Ray,让企业低成本落地 Data+AI

Kyligence

配置灰度管理

鲸品堂

配置 灰度发布

从 Hadoop 到云原生:Kyligence 在云原生巨浪中的思考

Kyligence

数据仓库 云原生 Kyligence 存储计算分离

现代分布式架构设计原则-分布式

余先生

分布式 复制 一致性 共识算法 分区

极客实战营-模块一作业

众森焱

为什么预计算技术代表大数据行业的未来,一文读懂

Kyligence

大数据 Kyligence 预计算

极客-架构训练营模块1作业

谭谭

架构 架构实战营

共襄信创产业生态建设之力|DataPipeline加入北京信创工委会!

DataPipeline数见科技

数据库 中间件 信创 数据融合

通往数据分析平民化的成功之路

Kyligence

kylin 数据分析师 Kyligence

云原生时代,企业如何智能管理数据?

Kyligence

BI + AI:洞见数据和分析的未来

Kyligence

做一朵「透明可信」的云,火山引擎是如何保障企业数据和隐私的?

ToB行业头条

微信业务架构图

holdzhu

「架构实战营」

生产队灯火通明 | 尚硅谷Maxwell视频教程发布

编程江湖

大数据 Maxwell

node.js安装及环境配置超详细教程【Windows系统安装包方式】

明金同学

node.js npm Node 软件安装

我好像发现了一个Go的Bug

捉虫大师

Go benchmark

宝德牵手英特尔,共同成就教育美好

江湖老铁

大数据开发之zookeeper的数据与存储

@零度

大数据 zookeeper

辅导孩子写作业,如何才能做到心平气和?

Tiger

28天写作

给弟弟的信第6封|大学生活攻略

大菠萝

28天写作

HashMap有几种遍历方法?推荐使用哪种?

王磊

应对 Job 场景,Serverless 如何帮助企业便捷上云

Serverless Devs

Serverless Job

后 Hadoop 时代的大数据分析路在何方?

Kyligence

大数据 Kyligence Apache Hadoop

【Maven实战技巧】「插件使用专题」Maven-Archetype插件创建自定义maven项目骨架

码界西柚

maven 代码生成 12月日更 骨架生成 架构搭建

前端开发JS框架之Zepto与jQuery的异同

@零度

jquery 大前端 zepto

恒源云(GPUSHARE)_语音识别与语义处理领域之NAG优化器

恒源云

深度学习 语音识别

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