CosmosDB 是否有一种固有的方式来记录 CRUD 请求?
Does CosmosDB have an inherent way to log CRUD requests?
我试图查明 CosmosDB 是否有任何可用作审计日志的内置功能,即现有的 Azure diagnostic/monitoring 功能之一记录了对数据库的特定更改,包括JSON 数据写入。
这是否存在,还是我必须自己编写?
目前为止我发现的最接近的是诊断日志记录,其中包含很多信息,但没有实际写入、更改或删除的内容。
根据官方doc,你提到的azure cosmos db中的Diagnostic logging
可以记录DataPlaneRequests
,MongoRequests
,Metric Requests
,但是,有没有这样的信息表示对数据库、集合、文档等的具体更改
所以,我建议你深入研究 azure cosmos 中的 change feed db.It 内置于 Azure Cosmos DB 中,使我们能够捕获对我们的集合所做的所有更改,而无需考虑到系统所做的工作,change.You 可以通过三种不同的方式读取更改提要:
1.Using Azure Functions
请在 Azure Functions 应用程序中创建 Azure Cosmos DB 触发器,您 select 要连接到的 Azure Cosmos DB 集合,每当对集合进行更改时都会触发该函数。
2.Using Azure Cosmos DB SDK
foreach (PartitionKeyRange pkRange in partitionKeyRanges){
string continuation = null;
checkpoints.TryGetValue(pkRange.Id, out continuation);
IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
collectionUri,
new ChangeFeedOptions
{
PartitionKeyRangeId = pkRange.Id,
StartFromBeginning = true,
RequestContinuation = continuation,
MaxItemCount = -1,
// Set reading time: only show change feed results modified since StartTime
StartTime = DateTime.Now - TimeSpan.FromSeconds(30)
});
while (query.HasMoreResults)
{
FeedResponse<dynamic> readChangesResponse = query.ExecuteNextAsync<dynamic>().Result;
foreach (dynamic changedDocument in readChangesResponse)
{
Console.WriteLine("document: {0}", changedDocument);
}
checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation;
}
}
3.Using the Azure Cosmos DB change feed processor library
希望对您有所帮助。
我试图查明 CosmosDB 是否有任何可用作审计日志的内置功能,即现有的 Azure diagnostic/monitoring 功能之一记录了对数据库的特定更改,包括JSON 数据写入。
这是否存在,还是我必须自己编写?
目前为止我发现的最接近的是诊断日志记录,其中包含很多信息,但没有实际写入、更改或删除的内容。
根据官方doc,你提到的azure cosmos db中的Diagnostic logging
可以记录DataPlaneRequests
,MongoRequests
,Metric Requests
,但是,有没有这样的信息表示对数据库、集合、文档等的具体更改
所以,我建议你深入研究 azure cosmos 中的 change feed db.It 内置于 Azure Cosmos DB 中,使我们能够捕获对我们的集合所做的所有更改,而无需考虑到系统所做的工作,change.You 可以通过三种不同的方式读取更改提要:
1.Using Azure Functions
请在 Azure Functions 应用程序中创建 Azure Cosmos DB 触发器,您 select 要连接到的 Azure Cosmos DB 集合,每当对集合进行更改时都会触发该函数。
2.Using Azure Cosmos DB SDK
foreach (PartitionKeyRange pkRange in partitionKeyRanges){
string continuation = null;
checkpoints.TryGetValue(pkRange.Id, out continuation);
IDocumentQuery<Document> query = client.CreateDocumentChangeFeedQuery(
collectionUri,
new ChangeFeedOptions
{
PartitionKeyRangeId = pkRange.Id,
StartFromBeginning = true,
RequestContinuation = continuation,
MaxItemCount = -1,
// Set reading time: only show change feed results modified since StartTime
StartTime = DateTime.Now - TimeSpan.FromSeconds(30)
});
while (query.HasMoreResults)
{
FeedResponse<dynamic> readChangesResponse = query.ExecuteNextAsync<dynamic>().Result;
foreach (dynamic changedDocument in readChangesResponse)
{
Console.WriteLine("document: {0}", changedDocument);
}
checkpoints[pkRange.Id] = readChangesResponse.ResponseContinuation;
}
}
3.Using the Azure Cosmos DB change feed processor library
希望对您有所帮助。