#sql #database #uitableview #events #graphql
#sql #База данных #uitableview #Мероприятия #graphql
Вопрос:
У меня есть большое количество журналов событий, каждый из которых содержит около 4000 событий, и я хочу проанализировать временные связи в данных. Существует несколько различных типов событий с несколькими соответствующими параметрами, и журнал представлен в виде обычного текста, поэтому он плохо структурирован.
Пример В качестве примера игрушек предположим, что они из интернет-магазина. Журнал содержит такие строки, как
lt;отметка времениgt; lt;отметка времениgt;lt;пользовательgt; вошел в систему и пришел с веб-сайта lt;пользовательgt;lt;URLgt;
lt;отметка времениgt; lt;отметка времениgt;lt;пользовательgt; купил lt;пользовательgt;lt;товар, категорияgt; для lt;товар, категорияgt;lt;ценаgt;
lt;метка времениgt; lt;метка времениgt;lt;пользовательgt; поиск lt;пользовательgt;lt;терминgt;
Мои Попытки
Прежде всего, я написал несколько регулярных выражений для извлечения информации о событиях из предложений.
Для простых задач (как часто покупался x) я мог бы просто перебирать журналы каждый раз, когда у меня возникает запрос. Поскольку журналов событий много, это занимает много времени и поэтому подходит только в том случае, если я хочу сделать это один раз для некоторых фиксированных запросов.
В настоящее время я управляю информацией о событиях с помощью базы данных SQL. Это работает для многих запросов, но схема становится более сложной, так как я хочу фиксировать больше событий. Кроме того, временная составляющая плохо смоделирована — что, если я хочу знать, какой термин ищется перед покупкой x? Такие запросы становятся довольно сложными. Я могу моделировать простые временные процессы, добавляя информацию к событиям, например, первичный ключ последнего события входа в систему.
Моей идеей и, вероятно, следующей попыткой быть более выразительной была бы база данных RDF, такая как GraphQL. Но у меня нет опыта в этом, и я беспокоюсь об эффективности, а также о выразительности SPARQL.
У кого-нибудь есть рекомендации по другим возможным решениям?