开始使用Azure存储:Blobs vs Tables与SQL Azure



这是一个主题, blobs vs表与sql ,尽管我读到了所有内容。

我们有一个多租户的SaaS Web应用程序,我们将要移至Azure。我们使用SQL Server 2008数据库。我们存储属于文档的文档和日志信息。Kinda像Dropbox一样。

论坛指出,当您考虑"大"对象时,您最好使用Azure表。通常,我们每个用户存储数百个文档,其中文档的大小从5KB到30MB,绝大多数将大约1MB?

何时有一些基本规则,何时进行斑点,表格,SQL?我已经了解到,我不应该将文档存储在SQL中,因为它太贵了。但是,什么时候将文档存储在斑点上,什么时候可以更好地使用桌子?是否有某种公式,例如:

if (objects * MB/object * objectrequested > y) then blobs, else tables

我认为Igorek已经解决了您的SQL Azure问题。不过,您似乎仍然对表与斑点有疑问。

在您的情况下,使用表存储会很烦人。ATS中的每个属性/列最多可以是64KB,因此您必须将文档跨多个属性拆分,然后重新组装它们。每个实体也有4MB的限制,这是一个问题。BLOB存储都没有这些限制。

当您拥有许多属性的小实体时,我会倾向于使用Azure表存储,这些属性需要单独存储和查询。因此,它可以为存储的对象或带有大量元数据的小文档工作。

BLOB存储空间对没有大量元数据的事物更好。这对于可能在文件系统上可以很好地工作的事物很好。

我会将文档存储在Azure Blob存储中(不是表存储)。除了将文档存储在SQL Azure数据库中的事实外,该数据库每MEG(或取决于数量),SQL数据库通常不是文档的好地方。SQL是一个关系数据库,可提供进行查询,加入等能力的好处。通常在SQL数据库中存储大型文档或图像没有好处,尤其是当有一个高度可扩展的中央存储系统时,该系统非常便宜,可以存储很便宜/访问。

现在,如果您需要通过文档本身搜索,我会使用lucene.net之类的东西为基于文档的存储库提供搜索功能。

hth

最新更新