Azure Cosmos DB使用路径对SQL API中的数据进行分区和索引

Azure Cosmos DB使用路径对SQL API中的数据进行分区和索引,azure,azure-cosmosdb,azure-cosmosdb-sqlapi,Azure,Azure Cosmosdb,Azure Cosmosdb Sqlapi,我正在向Azure cosmos DB收集物联网数据。我知道cosomosdbsqlapi是通过路径自动索引的。我在每个文档中有大约150个传感器,大多数sql查询都是 设备ID已经是分区键 从c中选择c.sensorVariable,其中c.DeviceId='dev1'和c.time=date1' {“设备ID”:“dev1',“时间”:123333,“传感器1”:20,“传感器2”:40} 我将获取各种传感器数据,但所有查询都取决于deviceId和时间(在Unix时间戳中) 是否可以索引

我正在向Azure cosmos DB收集物联网数据。我知道cosomosdbsqlapi是通过路径自动索引的。我在每个文档中有大约150个传感器,大多数sql查询都是

设备ID已经是分区键

从c中选择c.sensorVariable,其中c.DeviceId='dev1'和c.time=date1'

{“设备ID”:“dev1',“时间”:123333,“传感器1”:20,“传感器2”:40}

我将获取各种传感器数据,但所有查询都取决于deviceId和时间(在Unix时间戳中)

是否可以索引deviceID和time上的数据,并排除同样位于同一路径/中的其他键

默认情况下用于收集

"includedPaths": [
    {
        "path": "/*",
        "indexes": [
            {
                "kind": "Range",
                "dataType": "Number",
                "precision": -1
            },
            {
                "kind": "Range",
                "dataType": "String",
                "precision": -1
            },
            {
                "kind": "Spatial",
                "dataType": "Point"
            }
        ]
    }
],
我觉得数据类型字符串应该有散列类索引而不是范围索引吗?这是什么精度:-1

在Azure cosmos DB doc示例中,我看到字符串的精度为3,我不明白为什么

如果我有100台设备,并且每隔一级放置数据,那么哪种类型的索引更好

是否可以索引deviceID和time上的数据并排除其他数据 也在同一路径中的关键点

对。您可以通过
包含路径
排除路径
自定义索引策略

例如:

var excluded = new DocumentCollection { Id = "excludedPathCollection" };
excluded.IndexingPolicy.IncludedPaths.Add(new IncludedPath { Path = "/*" });
excluded.IndexingPolicy.ExcludedPaths.Add(new ExcludedPath { Path = "/nonIndexedContent/*" });

await client.CreateDocumentCollectionAsync(UriFactory.CreateDatabaseUri("db"), excluded);
请参阅更多详情

这个精度是多少

在Azure cosmos DB doc示例中,我看到字符串的精度为3,我不明白为什么

基于:

对于散列索引,字符串和数字的值都在1到8之间变化。默认值为3。对于范围索引,此值可以是-1(最大精度)。字符串或数字值的精度可以在1到100(最大精度)之间变化

你可以专注于此来做出选择

如果我有100台设备,并且每秒放置一次数据,那么 索引更好吗


很难说哪种索引模式是最佳选择。它应该考虑到一致性级别和您对读写性能的要求。你可以参考这个。

嗨,我的回答对你有帮助吗?部分是Jay,但它有助于获得知识谢谢你的回答。我观察到的另一件事是{“datapoint1”:23,“datapoint2”:20,“datapoint3”:45}就像我有150个传感器一样{“keyDataPoint”:22,“Data”:{“datapoin1”,“datapoint2”…}如果我保持上述格式的数据并将数据索引到一个级别,这将提高性能。@AmjathKhan感谢您的分享。那么,还有什么问题吗?我会像我分享的那样测试它。谢谢你,你帮了我这么多。@AmjathKhan嗨,现在有什么进展吗?我的回答对你有帮助吗?