问题
我discovered认为Cosmos DB的价格非常高昂,如果与许多数据类型一起使用,价格可能会很高。
我认为,一个很好的结构是将我拥有的每种数据类型放入自己的集合中,就像在数据库中的表一样(不太完全)。
但是,每个集合每月至少要花费24美元。这是如果我选择“固定”的情况,将我限制为10GB,并且无法扩展。几乎没有Cosmos DB的意义,所以我宁愿选择“无限制”。但是,这里的价格至少是每月60美元。
每种数据类型每月60美元。
这包括1000 RU,但是最重要的是,我必须支付更多的消费费用。
如果我有几种数据类型,这也许可以,但是如果我拥有30种数据类型的成熟商业应用程序(一点也不罕见),则每月至少要变成1800美元。作为起价。当我还没有数据时。
问题
集合中数据的结构不严格。我可以将不同类型的文档存储在同一集合中。
使用“无限制”集合时,我可以使用分区键,应该将其用于对数据进行分区以确保可伸缩性。
但是,为什么我不仅仅将数据类型包括在分区键中?
然后分区键变为:
[customer-id]-[data-type]-[actual-partition-value, like 'state']
迅速采取行动,我的最低费用为60美元,其余的则取决于消费。无论数据量如何,分区键都可以确保令人满意的性能。那我想念什么呢?这种方法有问题吗?
答案 0 :(得分:2)
没有,本质上没有问题。 归结为您是否对整个系统都具有1000 RU / s或更合适的单个瓶颈感到满意。
实际上,您可以通过将文档ID用作分区键来进一步简化此操作。这样可以保证文档ID的唯一性,并可以在CosmosDB中实现最大的分发和扩展。
collection sharing works in Cosmonaut (免责声明,我是这个项目的创建者)就是这样。我发现没有问题,即使在具有许多不同数据类型的系统上也是如此。
但是,您必须记住,即使您可以上下扩展此集合,但仍然会用这个瓶颈来限制整个系统。我建议您不仅创建一个集合,而且可能创建2或3个其中包含共享实体的集合。如果这样做足够聪明,并且您以逻辑方式对实体进行批处理,则可以扩展系统特定部分的吞吐量。