Azure SQL DB(EAV)与Azure Cosmos DB

时间:2018-01-14 20:55:38

标签: c# sql azure azure-sql-database azure-cosmosdb

我目前处于规划新项目的十字路口。

大多数数据都是关系数据,但外部公司会将JSON主要数据发送到没有严格架构的端点。

上下文

系统接受来自多个合作伙伴的潜在客户,然后尝试将潜在客户出售给外部公司。因此,引线可能不总是相同的结构。根据垂直或报价,潜在客户数据可能会有所不同。管理员将通过UI创建新的垂直行业,因此水平扩展数据库对此没有意义,而且会变得非常混乱。

还会发送事件数据,其中可能并不总是在同一个结构中。

要求

潜在客户数据需要具有快速读/写且可查询。

我目前的想法是:

  • 具有EAV概念的Azure SQL DB
  • Azure SQL DB,其中包含对Azure Cosmos DB中的文档的Id列引用

如果有人对此有任何见解,我们将不胜感激。

1 个答案:

答案 0 :(得分:1)

在Azure中使用3个系统处理混合数据库场景我投票支持第二种方法:将Azure SQL中的所有财务/事务数据与Cosmos DB中的相应非结构化数据或甚至表存储保存在一起。 主要原因是:

  • Azure SQL非常昂贵且数据库大小有限。存储 帐户有超过100倍的限制。因此,EAV方法可能会对存储和DTU提出太多要求。
  • 任何类型的聚合查询在传统SQL中都会容易得多,ORM框架可以很好地处理这种查询。 Azure SQL中的任何财务查询都更自然,更有效。外部报告服务也会喜欢SQL数据库。
  • 在两个数据库中拥有数据,您在它们之间分配负载。所以你可以使用更便宜的版本。