Azure DocumentDB与每个用户多个PDF文件的Blob存储

人气:400 发布:2022-10-16 标签: azure asp.net asp.net-identity azure-blob-storage azure-cosmosdb

问题描述

我正在开发我的第一个应用程序,作为一个学习项目,我做了所有的事情:

客户端前端(角度) 后端(OWIN自托管,ASP.NET Web Api 2) 数据库和托管(Azure部署)

到目前为止,这是一个学习过程,我已经在我的应用程序中使用令牌完成了登录/注册授权,但我使用身份框架和Azure SQL DB(存储在为我创建的dbo.AspNetUser表下)存储我的用户凭据。

为了配合我的USERS表,我希望有一个表来实际存储与我的用户相关联的元数据,在我的应用程序中:

信用卡信息

PDF文件(BLOB格式,但与每个帐户关联的多个文件)这些BLOB文件是在上载PDF和 稍后在他们下载时转换回PDF格式。

我看到在Azure门户上有一个文档NoSQL数据库以及BLOB存储。我想知道是否可以将信用卡信息添加到我现有的AspNetUser表中,这样我只需将PDF数据单独存储在单独的表中就可以简化我的工作。

我也不确定表的结构,因为一个用户可以有许多PDF文件。我的业余知识认为,也许有一个键值数据库可能会更好,格式为:

  Key-UserName            Value- JSON object of BLOB's with Id's.

我觉得,对于检索表示PDF的BLOB的PDF表,如果我可以将ID与每个条目相关联,并计算出一个JSON对象,我可以添加我希望查询的任意多个字段,但不确定,则检索所有这些字段并不是最好的。

显然,这还为时过早,我只是在寻找资源和经验,而不是直接的答案。

推荐答案

对于信用卡信息,Azure SQL中用户ID和CC号之间的简单映射表就足够了,并允许您处理用户和信用卡之间的一对多关系(您没有指定,所以这现在可能不是问题...晚点再说?)。

关于PDF...从成本或性能的角度来看,DocumentDB不是您理想的解决方案。它不太适合存储和检索像PDF这样的二进制数据。在您的场景中,我会强烈考虑使用Blob存储来保存PDF内容本身,并通过SQL Azure中将用户ID与Blob URI相关联的映射表将PDF映射到用户。如果您需要存储和查询PDF的额外元数据,您可以在SQL映射表中使用额外列。在创建或删除BLOB时同步映射到BLOB会有一些负担,但这是云中相当常见的数据场景。

祝你好运!

847