Чтение лог файлов в БД Космос - PullRequest
1 голос
/ 19 января 2020

Я хочу записать измененные данные в Cosmos DB (JSON документ), используя задание по расписанию с помощью функции azure или другим способом, не влияя на онлайн-производительность БД, поскольку веб-приложение / мобильное приложение считывают и записывают данные в БД Космос с помощью вызова API. Я хочу получить данные для автономного ETL и для аналитических целей, так как oracle предоставляет файлы журнала повторов в автономном режиме.

Заранее спасибо за помощь.

1 Ответ

0 голосов
/ 19 января 2020

Если вы хотите захватить события изменения CosmosDB, вы должны использовать Cosmos Change Feed . Некоторые примеры использования:

  • Инициирование действия при вставке или обновлении элемента
  • Обработка потока в реальном времени
  • Дополнительное перемещение данных для синхронизации

В настоящее время моя команда использует функцию Azure с привязками Cosmos DB для захвата событий фида изменений в режиме реального времени.

Чтобы ответить на ваше беспокойство по поводу влияния на основные операции из вашего приложения, вам может потребоваться увеличить пропускную способность для обработки дополнительных запросов на обработку фида изменений (иначе, плата за запрос (также называемая RU). ) / пропускная способность). CosmosDB разработан с elasti c масштабируемой пропускной способностью , поэтому при условии, что вы выделите достаточно для основных операций + изменение фида, у вас все будет хорошо. Вы можете использовать Azure Portal Cosmos DB Metrics , чтобы увидеть, какую пропускную способность вам нужно выделить. Кроме того, вы можете регистрировать телеметрию по каждой операции для отслеживания запроса на оплату через Cosmos SDK или заголовок ответа из запроса Cosmos DB. Cosmos ответит с помощью RU в следующем заголовке ответа Http: x-ms-total-request-charge

Пример кода зарядки запроса монитора с использованием Cosmos SDK:

// Measure the performance (request units) of writes 
ResourceResponse<Document> response = await client.CreateDocumentAsync(collectionSelfLink, myDocument); 

Console.WriteLine("Insert of an item consumed {0} request units", response.RequestCharge); 

// Measure the performance (request units) of queries 
IDocumentQuery<dynamic> queryable = client.CreateDocumentQuery(collectionSelfLink, queryString).AsDocumentQuery(); 

while (queryable.HasMoreResults) 
{ 
          FeedResponse<dynamic> queryResponse = await queryable.ExecuteNextAsync<dynamic>(); 
          Console.WriteLine("Query batch consumed {0} request units", queryResponse.RequestCharge); 
}

Пример кода запроса монитора с использованием драйвера Gremlin:

var client = await gremlinClient.Value.ConfigureAwait(false);
var result = await client.SubmitAsync<dynamic>(query, parameters)
                                              .ConfigureAwait(false);

bool hasRequestUnitsHeader = result.StatusAttributes.TryGetValue("x-ms-total-request-charge", out var requestUnits);
if (hasRequestUnitsHeader && double.TryParse(requestUnits.ToString(), out double requestUnitsAsDouble))
{
    appInsightsProvider.LogMetric("total-request-charge", requestUnitsAsDouble);
}

Файлы журнала

Я не являюсь знать о другом способе чтения данных из Космоса без распределения и потребления через RU. Есть файлов журнала для устранения неполадок и диагностики.

Cosmos DB разработан для масштабирования:

Cosmos DB позволяет вам упруго и независимо масштабировать пропускную способность и хранилище в любом количестве Azure регионов по всему миру. Вы можете эластично масштабировать пропускную способность и объем хранилища и воспользоваться преимуществами быстрого доступа к данным с точностью до одной git миллисекунды с помощью вашего любимого API, включая SQL, MongoDB, Cassandra, Tables или Gremlin. Cosmos DB предоставляет всеобъемлющие соглашения об уровне обслуживания (SLA) для обеспечения пропускной способности, задержек, доступности и гарантий согласованности, чего нет у других сервисов баз данных.

Elasti c масштабируемость пропускной способности и хранилища по всему миру. Разработан с прозрачным горизонтальным разделением. Cosmos DB обеспечивает беспрецедентную масштабируемость elasti c для ваших операций записи и чтения по всему миру. Вы можете упростить масштабирование от тысяч до сотен миллионов запросов / с c по всему миру с помощью одного вызова API и платить только за необходимую вам пропускную способность (и хранилище). Эта возможность помогает вам справляться с неожиданными скачками рабочей нагрузки без необходимости чрезмерного обеспечения пика. Для получения дополнительной информации см. Разделы в Cosmos DB, выделенную пропускную способность для контейнеров и баз данных и глобальное масштабирование выделенной пропускной способности.

...