写点什么

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

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

关注

评论

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

数据结构与算法 之线性表

喜羊羊

9月月更

Java知识点锦集2

喜羊羊

9月月更

前端二面必会面试题(附答案)

beifeng1996

JavaScript 前端

数据库的视图该怎么用?

阿柠xn

MySQL 数据库 视图 9月月更

【C语言深度剖析】深入理解const的用法(趣味小故事解析)

Albert Edison

指针 C语言 const 9月月更

Java进阶(二十二)使用FileOutputStream写入文件

No Silver Bullet

9月月更 FileOutputStream 写文件

OKR之剑·理念篇01: OKR带给我们的改变

vivo互联网技术

OKR 目标管理 研发管理

Java知识点锦集1

喜羊羊

9月月更

Elasticsearch聚合学习之三:范围限定

程序员欣宸

elasticsearch 9月月更

[Go WebSocket] 多房间的聊天室(六)为什么要加锁?不加锁行不行啊?

HullQin

Go golang 后端 websocket 9月月更

不惧繁杂背景,视频编辑服务一键实现人像抠图

HarmonyOS SDK

想成为数据科学家,哪些技能你必须具备?

雨果

推荐:实现 SVG 动画的 5 个 JavaScript 库~

掘金安东尼

前端 9月月更

Java后端每日学点系列?线程知否,List懂否,垃圾回收器晓得否

知识浅谈

线程 垃圾回收器 9月月更

从0到1开发微信小程序(3)—小程序框架配置

微信小程序专栏

图系列算法在转转推荐算法召回及粗排的实践

转转技术团队

深度学习 推荐系统 图算法 graph embedding

前端高频面试题汇总(一)

loveX001

JavaScript 前端

腾讯前端一面常考面试题合集

loveX001

JavaScript 前端

C++学习---cstdbool和cstddef源码学习分析

桑榆

c++ 源码阅读 9月月更

2022-09-14:以下go语言代码输出什么?A:0 0;B:0 1;C:1 1;D:1 0。 package main func main() { println(f(1)) } func

福大大架构师每日一题

golang 福大大 选择题

为什么Vue中的v-if和v-for不建议一起用

达摩

Vue

基于开源IM即时通讯框架MobileIMSDK:RainbowChat-iOS端v5.0版已发布

JackJiang

Netty 即时通讯 im开发 开源im

关于数据仓库的特点及组成的概述

阿泽🧸

数据仓库 9月月更

C/C++生态工具链——gcc/g++编译器使用指南

独立开发者_CoderZZ

c++ C语言 GCC g++ gcc 编译器

MFC框架下,加密图片加载并显示功能

中国好公民st

c++ 加密 9月月更

关于运维监控系统实践中的一些tips

穿过生命散发芬芳

监控系统 9月月更

渡过“寒冬”,看云原生数据库如何助力企业降本增效与持续创新

亚马逊云科技 (Amazon Web Services)

数据库 云原生

数据库的schema与数据类型优化

阿柠xn

数据库 sql 高性能 优化技巧 9月月更

智能湖仓架构实践:利用 Amazon Redshift 的流式摄取构建实时数仓

亚马逊云科技 (Amazon Web Services)

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