- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
问题
我有discovered Cosmos DB 的定价非常激进,如果与多种数据类型一起使用,价格可能会很昂贵。
我认为一个好的结构是将我拥有的每种数据类型放入它们自己的集合中,几乎就像数据库中的表(不完全是)。
但是,每次收集费用每月至少 24 美元。如果我选择“固定”,则会将我限制为 10GB 并且不可扩展。几乎不是 Cosmos DB 的重点,所以我宁愿选择“Unlimited”。不过,这里的价格至少是每月 60 美元。
每种数据类型每月 60 美元。
这包括 1000 RU,但除此之外,我还必须支付更多的消费费用。
如果我有几种数据类型,这可能没问题,但如果我有一个包含 30 种数据类型的成熟业务应用程序(一点也不罕见),那么每月至少需要 1800 美元。作为起始价。当我还没有数据时。
问题
集合中数据的结构并不严格。我可以在同一个集合中存储不同类型的文档。
使用“无限”集合时,我可以使用分区键,应该使用分区键对我的数据进行分区以确保可扩展性。
但是,为什么我不只在分区键中包含数据类型?
然后分区键就变成这样:
[customer-id]-[data-type]-[actual-partition-value, like 'state']
只要一动,我的最低成本就变成了 60 美元,其余的则根据消费情况而定。据推测,无论数据量有多大,分区键都能确保令人满意的性能。那么我错过了什么?这种方法有问题吗?
更新
Microsoft 现在支持在所有容器之间共享 RU(不低于 10000 RU),因此这个问题基本上不再相关,因为您现在可以自由选择将数据分离到不同的容器中,而无需任何额外费用。
最佳答案
不,本身不会有任何问题。这一切都归结为您是否愿意为整个系统提供 1000 RU/s,或更具体地说是单个瓶颈。
事实上,您可以通过将文档 ID 作为分区键来进一步简化这一过程。这将保证文档 ID 的唯一性,并在 CosmosDB 中实现最大可能的分布和规模。
就是这样collection sharing works in Cosmonaut (免责声明,我是这个项目的创建者)并且我没有注意到任何问题,即使在具有许多不同数据类型的系统上也是如此。
但是,您必须记住,即使您可以上下扩展此集合,您仍然会因为这个瓶颈而限制整个系统。我建议您不要只创建一个集合,而可能创建 2 或 3 个其中包含共享实体的集合。如果这做得足够聪明,并且您以逻辑方式批处理实体,那么您可以扩展系统特定部分的吞吐量。
关于azure - 为什么我不应该将所有数据放入一个 CosmosDB 集合中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51149009/
关闭。这个问题是opinion-based .它目前不接受答案。 想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题. 4年前关闭。 Improve t
我在我的 CosmosDB 集合中创建了一个简单的 Pre Trigger。 function testTrigger() { var context = getContext();
我正在尝试扁平化和过滤 CosmosDB 中的 json 数据。 数据如下所示,我想展平数组变量中的所有内容,然后按数组内的特定 _id 和时间戳进行过滤: { "_id": 21032, "Firs
我正在测试 CosmosDb。我发现初始连接通常需要很多秒。我编写了一个小型 .net core 2.2 控制台应用程序来演示该问题。 static async System.Threading
我正在测试 CosmosDb。我发现初始连接通常需要很多秒。我编写了一个小型 .net core 2.2 控制台应用程序来演示该问题。 static async System.Threading
我有很多(大约 100 条)数据要与 CosmosDB 中的文档相关联。每条数据都很小(大约 100 个字节)。 我的第一个解决方案是将数据作为数组存储在文档中。这可以正常工作,但是为了将新项目附加到
据我所知,团队的官方建议是将所有数据类型放入单个集合中,例如 type=someType文档上的字段以区分类型。 现在,如果我们假设具有分区的大型数据库,其中不同的对象类型可以是: 完全不同的字段(因
这是我们要存储的示例文档: { "name": "Joe Bloggs", "locations": [ { "type": "Point", "coordinates": [1,1] }, { "t
是否可以获得的大小?每 Cosmos DB 集合中的分区?我知道门户会在 Metrics Blade 中显示集合中的前几个分区,但我对查看每个分区的大小很感兴趣。 最佳答案 我相信您应该能够通过 Co
我试图在 Cosmos 中拥有多个文档,一旦提交,其中一个将保存提交表单中的一些数据。我正在尝试使用其他一些文档来保存下拉选择列表的数据。我如何能够连接到多个 config.containerId 以
我想做一个这样的查询 g.V().match( as('foo').hasLabel('bar'), as('foo').out('baz').hasId('123'), as('foo'
我正在尝试使用以下查询来查看数据库中是否有重复项 SELECT c.VariantNo, count(1) AS jongel FROM c where c.brand = 'XXXX' AND c.
我有一个包含许多字段的大型文档,我只想从对象返回 1-2 个字段以保持吞吐量。这在 cosmosDB 中可能吗?还是我每次都需要返回整个对象? 最佳答案 使用 ReadItemAsync() 进行点读
我有一个 CosmosDB 查询: SELECT food.tags FROM food 返回这个: { "tags": [ { "name": "babyfood"
想象一下我们有一个这样的集合(示例取自 https://www.documentdb.com/sql/demo ) { "_id" : "19015", "description" :
我正在使用 MongoDB api 访问 Azure 上的 CosmosDb。我收集了数千份文件。 它们的形状是这样的: { "_id" : ObjectId("5b4f574ac2100c8
我正在尝试在 CosmosDB 中实现以下查询: SELECT * FROM c WHERE c.timestamp = (SELECT VALUE MAX(c.timestamp) FROM c )
我们可以在 cosmos Db 中添加 XML Schema 吗?如果是,我们如何查询它们?我可以将 XML 数据保存为字符串,但如何查询它们? 下面是我收藏的文档: { "id":
我研究了几个地方,但找不到有关将旧数据从 cosmosdb 存档到冷存储的选项的任何方向。我看到 AWS 中的 DynamoDb 提到您可以将 dynamodb 数据移动到 S3 中。但不确定 cos
取自:https://learn.microsoft.com/en-us/azure/cosmos-db/create-graph-dotnet 我在 .wait() 部分遇到异常: NullR
我是一名优秀的程序员,十分优秀!