3

我是负责研究蔚蓝项目的实习生。
目前我正在为该项目的一部分设计架构。Microsoft Azure的体系结构。 CSV到SQL

目标是将多个csv文件转换为云中的SQL数据库。这些csv将从该国的随机位置发送,需要进行处理,以便最终可以使用Web服务访问数据库。

我完全新的蔚蓝现场,并已上学自己,但它在我的脑袋都有点模糊。

一些信息:

的CSV的是一些小文件,但约20.000将每天接受 是它需要SQL存储,因为我们需要轻松汇总数据。

将在CSV什么,需要存储?
唯一的密钥值(字符串)
消费值(双)
一个日期时间戳(日期时间/串)
质量值(INT)

我脑子里想的体系结构将是:
Http请求到云(不云需要一个监听服务?)
它们被处理
的SQL驱动器存储(直接进口过吗?或者我需要某种形式的辅助角色的持有的CSV的队列服务一世n之间?)
一个Web服务,它将通过查询sqlDB中的数据来从外部AOS或客户端应用程序获取请求。

我是正确的假设这个问题可以用标准组件来解决或我需要实现一个VM角色?你会如何设置?

任何投入,将不胜感激,因为我真的觉得失去了在云:)
我希望我给的要求一目了然......
这并不容易解释一些你不完全掌握自己

回答

3

根本不需要虚拟机角色。这里有一个稻草人的想法:

  • 设置一个web服务,可以让你推动你的csv文件(容易在一个svc Web角色中完成)。使用该服务方法将每个csv存储在某个特定容器(如“上传”)中的Azure Blob中,并使用名称“guid.csv” - 只需调用Guid.NewGuid()。ToString()即时生成guid 。完成后,创建一个引用该文件名的队列消息。
  • 在这两种承载您的SVC相同的角色实例的Run()方法(只重写的run()),或在一个单独的工作角色,成立了一段时间(true)循环,只是从队列中读取抢CSV需要导入,将blob读入内存流并转储到磁盘上的临时文件,然后调用本地帮助程序方法来解析csv并调用SQL插入。
  • 设置另一个Web服务来检索数据。再次,这可以被托管在相同的网络角色或另一个。

绝对不需要VM角色。

+0

我意识到我没有提到你的SQL会去SQL Azure,而不是虚拟机托管的SQL Server设置。 SQL Azure是SQL Server的一个重要子集,您应该没有问题将它用于您正在执行的存储类型。 – 2011-04-07 18:04:32

+0

嗨,感谢您的回复!我昨天下午都在想着一个设置,它接近你在回复中列出的内容。看起来足够坚固,所以我会去看看它,看看我是否遇到麻烦。 我想知道是否可以跳过blob存储并只需要一个worker角色检索csv并将它们直接存储到队列中? (因为csv永远不会超过8kb的最大值) 再一次,爱在这里输入! tx – peanut 2011-04-08 08:02:09

+0

您“可以”将它们保留在队列中并跳过blob存储。但是,这可能会在以后限制,特别是如果您想重新检查您的csv(或重新处理它们的方式,例如)。如果你坚持使用blob技术,你还可以一次读取几个队列消息;如果您将csv与消息一起存储,则会限制该能力。 – 2011-04-08 17:23:36

0

是否有一个原因,您不能仅仅使用BCP(批量复制)将数据直接导入到SQL Azure中? BCP支持CSV文件,我怀疑你可以创建一个非常简单的过程来使用这个工具每天导入数据。如果你这样做,请确保你阅读了一些你可以使用的方法optimize the load of the data。如果你有大量的数据集,这可以真正发挥作用。

+0

谢谢你的出色链接,它会派上用场。我无法使用批量复制的原因是因为我不控制发送csv的实例。这些是定期发送数据的固定点(对不起,我不能详细介绍这:)) – peanut 2011-04-08 07:57:36