Мы разрабатываем стратегию сохранения данных об использовании приложений, а затем скомпилируем отчеты на основе этих данных.
Краткий обзор системы: веб-приложение C# с двумя типами пользователей: читателями и издателями. Издатели загружают документы в разных категориях, и Читатели могут открывать / загружать эти документы. Они также могут искать Документы по категориям и подписываться на документы в разных категориях.
Цель текущего проекта - начать сбор данных об использовании системой Readers, что они ищут, что они читают / загрузить и предоставить сводные данные для издателей.
Мы хотим сохранить данные о каждом поиске, выполняемом Читателями, чтобы ответить на вопросы типа «Сколько Читателей отфильтровало поиск с категорией X или Y»?
Мы также хотим иметь возможность сообщать агрегированные данные издателям и сообщать им: «Ваш документ появился за X запросов в течение последнего месяца», «X человек открыли документ Z за последний месяц».
Я пытаюсь выяснить, как подойти к этой проблеме, вот несколько идей
- Мы могли бы сохранить каждый поиск и его фильтры как запись в базе данных.
- При отображении результата поиска мы можем сохранить запись в базе данных, чтобы знать, что документ X был включен в результат поиска.
- Мы также можем сохранять записи таким же образом, когда Reader просматривает / загружает документ.
Если бы мы реализовали вышеуказанную стратегию, это означало бы, что нам придется много писать. Для страницы результатов поиска я думаю что-то вроде 21 новой записи - одна запись для подробностей о поисковом запросе и 20 записей для каждого «попадания» в документ).
Чтобы не записывать это в db мы могли бы использовать какую-то шину сообщений или в очереди памяти для хранения данных из веб-запроса (чтобы не замедлять процесс поиска).
Исходя из вышеизложенного, у меня есть несколько вопросов:
- Я думаю, я в правильном направлении? Что-то пропустили? Или как я мог подойти к этому? Любое рекомендуемое чтение? Шаблоны или практики?
- Если вышеприведенный подход является подходящим, будет ли целесообразным хранить его на ie SQL Сервер? Я немного обеспокоен этим, поскольку не хочу, чтобы база данных была постоянно занята написанием этих записей статистики. Есть ли другое хранилище данных, которое было бы лучше?