我最近通过以下链接在 Visual Studio 2015 中创建了一个应用程序:https : //azure.microsoft.com/en-in/documentation/articles/documentdb-dotnet-application/
但是当我构建解决方案时,它显示了以下错误:
值不能是
null。
参数名称:uriString
第71行:public static void Initialize()
第72行:{
第73行:client = new DocumentClient(new Uri(ConfigurationManager.AppSettings["https://<db-name>.documents.azure.com:443/"]), ConfigurationManager.AppSettings["<db-key>"]);
第74行:CreateDatabaseIfNotExistsAsync().Wait();
第75行:CreateCollectionIfNotExistsAsync().Wait();源文件:
C:\Users\BHAVIN PATEL\Documents\Visual Studio 2015\Projects\documentdb-dotnet-todo-app-master\src\DocumentDBRepository.cs行:73
我已Web.config在 Azure 中创建的 DocumentDB 应用程序的应用程序文件中插入了 URI 和主键/辅助键。
我有一个 API (.NET Core 2.2),它使用 SDK v3.5.0 从 Cosmos DB 检索文档。目前,由于对 Cosmos DB 的请求超时,一些请求会引发异常 - 响应是408 状态代码。值得一提的是,90% 的请求都被成功处理。
使用遥测记录 API 的活动,我注意到在依赖项表(记录对 Cosmos DB 的每个请求)中,持续时间超过 60 秒的请求是由名为“创建/查询文档”的命令发起的。这些是属于超时的请求。
另一方面,所有其他请求都使用“查询文档”命令,该命令在 < 5 秒内响应并且请求成功完成。为了分享更多上下文,我在下面详细说明了错误堆栈跟踪、一般规范以及我如何查询文档。
堆栈跟踪
Microsoft.Azure.Cosmos.CosmosException : Response status code does not indicate success: 408 Substatus: 0 Reason: (Microsoft.Azure.Cosmos.CosmosException : Response status code does not indicate success: 408 Substatus: 0 Reason: (Microsoft.Azure.Documents.RequestTimeoutException: GatewayStoreClient Request Timeout. Start Time:1/30/2020 4:18:00 AM; Total Duration:00:01:05.0332130; Http Client Timeout:00:01:05; Activity id: 7498789a-8e09-4c3e-96a6-31c32e4dc2d7; Inner Message: The …Run Code Online (Sandbox Code Playgroud) 我们使用 Cosmos DB 作为存储,但对如何准确计算消耗的请求单位感到困惑。我们当前的设置是 375k RU/s。
首先,我使用诊断中的请求更改来计算。结果是最大 RU 为 10k/s。

其次,我检查指标总请求单位。曲线显示每分钟的总 RU 约为 300k,这意味着平均 RU 为 5k/s 。

第三,我检查了 Metric Normalized RU Consumption。

我很困惑,为什么我们只使用 10k RU/s,但标准化 RU 消耗是 20% 到 100%?请求费用/总请求单位/标准化 RU 消耗是什么意思?我们如何知道真实的消费?
我想在azure documentdb中创建一个带有自动增量列的文档.
这可能吗?如果是,请指导我.
任何帮助将不胜感激.
Database db = CreateOrReadDocumentDb("EmployeeDb").Result;
DocumentCollection dc = CreateOrReadDocumentCollection(db.SelfLink, "EmployeeDetails").Result;
Employee emp = new Employee();
emp.Name="ABC";
emp.id="";//automatically generate a unique string
emp.sal=10000;
emp.exp =5;
emp.index=0; // I want an auto increment column for emp with name index and want to store in azure document db
client.CreateDocumentAsync(collectionLink, data);
Run Code Online (Sandbox Code Playgroud) 我试图模拟一个返回的调用ResourceResponse<Document>,但我无法实例化该类型.是否有工厂类可以实例化它或其他方式这样做?
编辑
var response = new ResourceResponse<Document>();
类型'Microsoft.Azure.Documents.Client.ResourceResponse'没有定义构造函数
我们有一个目前正在开发的项目,我们使用Azure DocumentDb作为数据存储库.它一直很好,我真的很喜欢它如何工作以及它如何实现快速开发,但最近我们的集成测试已经开始失败.
每次测试运行时,我们的集成测试都会在数据库中创建和拆除集合.我想知道它的这个过程是否以某种方式"破坏"了数据库.
我已经将我们的项目剥离到了它的骨架并在这里检查了它:https://github.com/DamianStanger/DocumentDbDemo
当我运行测试时,我收到以下错误:
System.AggregateException : One or more errors occurred.
----> Microsoft.Azure.Documents.DocumentClientException : Message: {"Errors":["Resource with specified id or name already exists"]}
ActivityId: e273b9d6-b571-43d3-9802-c7d7c819a3f0, Request URI: /apps/c9c8f510-0ca7-4702-aa6c-9c596d797367/services/507e2a70-c787-437c-9587-0ff4341bc265/partitions/ae4ca317-e883-4419-84f9-c8d053ffc73d/replicas/131159218637566393p
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at DocumentDbDemo.Data.AggregateRepository.CreateCollectionIfNotExists() in K:\_code\VisualStudio\DocumentDbPerfTests\DocumentDbDemo.Data\AggregateRepository.cs:line 32
at DocumentDbDemo.Data.AggregateRepository..ctor(ConfigFactory configFactory) in K:\_code\VisualStudio\DocumentDbPerfTests\DocumentDbDemo.Data\AggregateRepository.cs:line 19
at DocumentDbDemo.Data.Tests.AggregateRepositoryTests.ShouldReturnNullIfNotFound() in K:\_code\VisualStudio\DocumentDbPerfTests\DocumentDbDemo.Data.Tests\AggregateRepositoryTests.cs:line 24
--DocumentClientException
Run Code Online (Sandbox Code Playgroud)
由AggregateRepository.cs_client.ReadDocumentCollectionAsync内的调用失败引起的.我不明白.代码中的异常是首先检查集合是否存在(它确实存在),然后如果不存在则会创建它.显然,创建将失败,因为集合存在!
第二种类型的失败是:
System.AggregateException : One or more errors occurred.
----> Microsoft.Azure.Documents.DocumentClientException : Message: {"Errors":["Owner resource does not exist"]} …Run Code Online (Sandbox Code Playgroud) 我使用DocumentDB作为产品,现在我听说没有DocumentDB!微软正在构建这个新的Cosmos DB,它是DocumentDB的超集.我现在真的很困惑.
它只是改变名称还是有更多变化?有人可以对此有所了解吗?
{
"_id" : ObjectId("59660d4099c1e682e0992ced"),
"alpha" : [
{
"_id" : ObjectId("59660d4199c1e682e0992cee"),
"number" : 1,
"start_at" : ISODate("2017-07-12T11:51:28.895Z"),
"end_at" : ISODate("2017-08-12T11:51:28.895Z"),
"created_at" : ISODate("2017-07-12T11:51:29.346Z"),
"updated_at" : null
}
]
}
Run Code Online (Sandbox Code Playgroud)
我有一个上面的文档,我想在'alpha'数组的JSON元素中更新或更改字段'number'和'updated_at'.
我试过这个:
db.mycol.update({_id: ObjectId("59660d4099c1e682e0992ced"), alpha: {$elemMatch: {_id: ObjectId("59660d4199c1e682e0992cee")}}}, {$set: {"alpha.$.number": 2, "alpha.$.updated_at": new Date()}})
Run Code Online (Sandbox Code Playgroud)
它适用于普通的mongodb服务器.但是使用azure cosmosdb/mongodb它说好,但没有真正更新文档.我究竟做错了什么?
我有一个需要大型RU的应用程序,但由于某种原因,我无法让客户端应用程序处理超过1000-1500个RU,尽管该集合设置为10000 RU.显然我可以添加更多客户端,但我需要一个客户端给我至少10000个RU然后扩展它.我的要求很简单
var query = connection.CreateDocumentQuery<DocumentDBProfile>(
CollectionUri, //cached
"SELECT * FROM Col1 WHERE Col1.key = '" + partitionKey + "' AND Col1.id ='" + id + "'",
new FeedOptions
{
MaxItemCount = -1,
MaxDegreeOfParallelism = 10000000,
MaxBufferedItemCount = 1000,
}).AsDocumentQuery();
var dataset = await query.ExecuteNextAsync().ConfigureAwait(false);
Run Code Online (Sandbox Code Playgroud)
上面的查询命中了150,000个分区,每个分区都在自己的任务中(等到最后),并使用TCP和直接模式初始化客户端:
var policy = new ConnectionPolicy
{
EnableEndpointDiscovery = false,
ConnectionMode = ConnectionMode.Direct,
ConnectionProtocol = Protocol.Tcp,
};
Run Code Online (Sandbox Code Playgroud)
客户端上的CPU似乎最大化,主要用于服务调用查询.ExecuteNextAsync()
我做错了吗?任何优化提示?我可以使用更低级别的API吗?有没有办法预解析查询或使Json解析更优化?
更新 我通过降低并发请求的数量,在一个客户端上获得了高达3000-4000 RU,并将我的反序列化类拆分为具有单个属性(id)的一个,但我仍然是50,000的限制的10%性能指南中提到的RU.不确定我还能做什么.我可以在.Net SDK中禁用任何安全检查或开销吗?
UPDATE2 我们所有的测试都在Azure上的同一区域D11_V2上运行.运行多个客户端可以很好地扩展,因此我们是客户端绑定而不是服 仍然无法达到CosmosDB性能指南中列出的10%的性能
如何获取或计算存储在 Cosmos DB 中的文档的大小?
这是否已经存储在文档中?
azure-cosmosdb ×10
azure ×5
c# ×4
javascript ×2
.net-core ×1
asp.net ×1
json ×1
mongodb ×1
moq ×1