问题标签 [azure-cosmosdb-sqlapi]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
51 浏览

.net - CosmosDb 存储过程调用

我正在尝试在 CosmosDB 中创建一些通用存储过程和一些特定于用例的存储过程。是否可以从用例特定的存储过程中调用通用存储过程?

0 投票
1 回答
1664 浏览

c# - 无效的继续令牌 CosmosDB

我正在运行一个查询 CosmosDB 实例的 Azure 函数。

我正在尝试使用延续令牌实现分页,但在使用延续令牌调用我的函数时,我不断收到以下响应:

Message": "发生错误。", "ExceptionMessage": "Invalid Continuation Token\r\nActivityId: 0f79a65f-a9d2-49a8-8a9c-d33a8526bec8, Microsoft.Azure.Documents.Common/2.0.0.0, documentdb-dotnet- sdk/1.22.0 主机/32-bit MicrosoftWindowsNT/6.2.9200.0

这是我的 Azure 函数:该函数最初将在没有令牌的情况下调用,并且根据第二页的请求,将传入令牌。

在我最初调用我的 Azure 函数时,使用 URL http://localhost:7071/api/Event/GetAllPaged/3,我得到以下响应:

当我使用下一个 Azure 函数请求中提供的令牌时,使用带有令牌http://localhost:7071/api/Event/GetAllPaged/3/CDhbANnikwAGAAAAAAAAAA==的 url ,我收到上面列出的错误。

我究竟做错了什么?

0 投票
2 回答
1137 浏览

java - Microsoft Azure Cosmos DocumentDB 最佳读取查询性能

我们在云中实现了一个 Azure CosmosDB(带有 SQL API 的 MongoDB)数据库。通过java,我们想根据隐藏在MongoDB中的数据生成报告。我对我的读取查询的性能还不太满意,我想知道我当前的设置有什么可以改进的。

就像说的那样,我使用 Java 来查询数据库。我使用 Microsoft Azure DocumentDB 库来查询数据库:

目前,我能够获得的最佳性能是在大约 20 秒内查询内存中大约 38.000 个文档,配置为 50,000 RU/s(本地 cosmos 模拟器)。我真的很希望这种改进,因为我们可能很快就会查询数百万个文档。

我觉得我们存储数据的方式可能不是最佳的。现在每个文档如下所示:

我们经常使用的查询如下所示:

我根据 deviceId 削减了这些查询。因此,对于每个设备,我使用此查询运行一个线程。这似乎比具有单个查询的单个线程快得多。

上述这样的查询将花费我们大约 20 秒。

但是我注意到,如果我只查询 deviceid 和 devicedata.datetime,查询会在 2 秒内完成。似乎从传感器列表中获取传感器数据是一个非常困难的 cookie。如果我选择 *(因此不对传感器数据进行过滤),它也比让 SQL API 过滤掉传感器时更快:大约 15 秒。

我的问题是,我能做些什么来改进这一点?我的文档列表是否太长?有什么办法可以不同地设置吗?传感器键值对不是固定的,并且可能因设备而异。

更多技术细节:我有一个无限的集合,在 /deviceid 上分区。我使用了 Azure 的标准索引策略(即索引所有内容),以及从中排除传感器。

我已经尝试了这里描述的所有提示: https ://docs.microsoft.com/en-us/azure/cosmos-db/performance-tips-java

这是我当前的 Java 设置,尽管我尝试了很多不同的东西:

我很确定 MongoDB 可以在几秒钟内查询数十万个文档,所以我很确定我当前的设置有问题。

有什么建议么?

0 投票
1 回答
333 浏览

azure - Cosmos DB Sql API Insert 中分区键的作用?使用批量执行器?

我正在尝试将 100 - 300Kb 之间的大约 850 个文档重复插入到 cosmos 集合中。我将它们全部放在同一个分区键中。

估算器建议在 50K RU 时应在短时间内处理此问题,但在远超过 100k 时,每组平均需要 20 分钟左右,而不是更合理的。

我应该为每个文档设置唯一的分区键吗?问题是让所有文档都转到同一个分区键,它们是按顺序处理的,而且容量不是负载均衡吗?使用批量执行器会解决这个问题吗?

0 投票
1 回答
78 浏览

azure - Azure 数据库 - 架构设计规则

我有一个简单的“用例”,想象一下我希望用 Xamarin 和 Azure 克隆 Facebook 应用程序。

阅读后:https ://docs.microsoft.com/en-us/azure/cosmos-db/social-media-apps

我注意到我可以将我的数据存储到一组集合/文档(SQL API)中。

但是当我必须处理数百万个关系时,它不起作用,我必须使用 Graph API 数据库!

所以,为此我需要在 Azure 上创建一个数据库,这就是我现在要做的:

1 - 一个 Cosmos DB 数据库 - 带有 SQL API(集合):a)用户集合 b)发布集合

2 - 一个 Comos DB 数据库 - 使用 Gremlin API (Graph),其中:a) 用于管理用户与出版物之间关系的图表(即,用户 A 喜欢出版物 B)

因此,SQL API 数据库将管理所有记录,而 Gremlin 数据库将管理所有复合关系。

所以,我有几个问题:1)我真的需要 2 个未连接的数据库吗?或者这是一个糟糕的设计?因为每次添加用户,都需要在集合中添加一个文档,还要添加一个顶点!这是双重管理!

2)当我将文档插入集合时,它会自动生成一个带有 GUID 键的“id”。我可以使用这个 ID 作为我的顶点的键吗?

也许用户和出版物可以具有相同的 GUID?所以,在我的图中,我不知道我的顶点是用户还是出版物?

还有另一种方法来管理这个吗?

谢谢

0 投票
1 回答
3024 浏览

azure-cosmosdb-sqlapi - 在 CosmosDB 中使用单个字符串值进行 ARRAY_CONTAINS 查询

例如,假设我在 Cosmos 文档 DB 中有一个文档,看起来像这样:

}

我想编写一个 Cosmos SQL 查询,我可以在其中搜索“myStringArray”中的部分匹配项。我一直在尝试使用 ARRAY_CONTAINS 但无法使其正常工作,因为它似乎只查看数组中的给定值。

例如

适用于全场比赛。

我看到的搜索部分匹配的例子是

这显然行不通,因为我在“myStringArray”中只有单个字符串。

我猜我可能能够将 STARTSWITH 与 ARRAY_CONTAINS 结合起来,或者可能应用一些 JOINS,但我卡住了,无法解决。

在 CosmosDb 中是否有任何方法可以搜索“myStringArray”中任何值的部分匹配?

感谢我能得到的所有帮助。谢谢

0 投票
2 回答
1638 浏览

azure - Cosmos DB SQL API 的架构迁移。说得通?

我开始研究一个 Java 项目,其中选择的数据库是 Azure Cosmos DB SQL API,因此阅读SQL API Cosmos DB 介绍我了解到,在这种情况下,该 SQL 仅用于查询而不是用于数据操作(插入、删除)。问题是:对这种数据库使用像 Flyway/Liquibase 这样的模式迁移工具有意义吗?

0 投票
0 回答
807 浏览

spring-data - 在 Linux 上使用内存数据库的 Spring Data Azure Cosmos DB。可能吗?

我通过连接 Azure 上的 Cosmos DB SQL API 实例来使用 Sring Data Cosmos DB 实现,它工作正常。但我想要一个数据库在 Linux 上本地运行我的集成测试,无论它是不是 Cosmos DB 数据库 (SQL API)。

最初我考虑使用Azure Cosmos DB Emulator Docker Container,但是,我发现它与 Linux 不兼容。所以我想只为本地环境启动一个 H2 内存数据库,但它仍然不起作用,因为 Spring Data Cosmos DB 尝试创建 documentDBTemplate bean,并且由于与 Cosmos DB 没有连接它不会创建 bean,我收到以下错误:

Microsoft 是否考虑过任何替代方案(Linux / Mac 兼容)来本地运行使用 Cosmos DB 的应用程序?

除了创建运行 Azure Cosmos DB Emulator Docker 容器的 Windows VM 之外,还有其他方法吗?

有什么方法可以让 H2 数据库在本地环境中工作?我正在考虑在本地使用 H2 数据库并在 Azure 环境中使用 Cosmos DB SQL API。

0 投票
1 回答
682 浏览

azure-cosmosdb - 文档/CosmosDB .Net 客户端“DISTINCT”查询错误

我有一个包含具有以下结构的文档的集合:

我创建了一个 UDF 来从Values字典中提取键:

我有一个使用 UDF 查找Values字典中所有不同键的查询。以下代码使用Microsoft.Azure.DocumentDB.Corenuget 包库调用 CosmosDB:

这是针对 Azure CosmosDB 模拟器运行的。当我通过http://localhost:8081.

通过 .NET 客户端运行查询时,出现以下错误:

Microsoft.Azure.Documents.BadRequestException:消息:{"errors":[{"severity":"Error","location":{"start":25,"end":33},"code":"SC1001" "message":"语法错误,'DISTINCT' 附近的语法不正确。"}]},Windows/10.0.16299 documentdb-netcore-sdk/1.9.1 ---> System.Runtime.InteropServices.COMException: 来自 HRESULT 的异常: 0x800A0B00

我还没有针对真正的CosmosDB 尝试过这个,但是它在数据浏览器中工作的事实让我认为这不是模拟器的能力问题。

0 投票
2 回答
102 浏览

azure-cosmosdb - Cosmos 相当于 map/select

clients是我的文档中的一个数组,以下查询

退货

但我希望客户看起来像:

这可能吗?